diff --git a/.gitmodules b/.gitmodules
index fdabc07..e69de29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +0,0 @@
-[submodule "v2/webui"]
- path = v2/webui
- url = https://github.com/webui-dev/webui.git
diff --git a/v2/webui b/v2/webui
deleted file mode 160000
index 94a8cfb..0000000
--- a/v2/webui
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 94a8cfbad041f44c576c62d9723cc0efa846330a
diff --git a/v2/webui/.github/workflows/ci.yml b/v2/webui/.github/workflows/ci.yml
new file mode 100644
index 0000000..1bf92ea
--- /dev/null
+++ b/v2/webui/.github/workflows/ci.yml
@@ -0,0 +1,54 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+name: CI
+on:
+ push:
+ paths-ignore: ['**/*.md']
+ pull_request:
+ branches: [main]
+ paths-ignore: ['**/*.md']
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref_name == 'main' && github.sha || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ windows:
+ uses: ./.github/workflows/windows.yml
+ permissions:
+ contents: write
+
+ macos:
+ uses: ./.github/workflows/macos.yml
+ permissions:
+ contents: write
+
+ linux:
+ uses: ./.github/workflows/linux.yml
+ permissions:
+ contents: write
+
+ linux_arm:
+ uses: ./.github/workflows/linux_arm.yml
+ permissions:
+ contents: write
+
+ linux_redhat:
+ uses: ./.github/workflows/linux_redhat.yml
+ permissions:
+ contents: write
+
+ linux_arch:
+ uses: ./.github/workflows/linux_arch.yml
+ permissions:
+ contents: write
+
+ zig:
+ uses: ./.github/workflows/zig.yml
diff --git a/v2/webui/.github/workflows/linux.yml b/v2/webui/.github/workflows/linux.yml
new file mode 100644
index 0000000..2726861
--- /dev/null
+++ b/v2/webui/.github/workflows/linux.yml
@@ -0,0 +1,193 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+name: Linux
+on:
+ workflow_call:
+
+jobs:
+ setup:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v4
+ - name: Bundle WebUI Bridge
+ run: |
+ npm i -g esbuild
+ chmod +x bridge/build.sh
+ bridge/build.sh
+ - uses: actions/cache@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+
+ build:
+ needs: setup
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ include:
+ - cc: gcc
+ arch: x64
+ - cc: clang
+ arch: x64
+ fail-fast: false
+ env:
+ ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
+ CC: ${{ matrix.cc }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/cache/restore@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+ fail-on-cache-miss: true
+ - name: Setup
+ run: |
+ if [ "$CC" == "clang" ]; then
+ sudo ln -s llvm-ar-14 /usr/bin/llvm-ar
+ sudo ln -s llvm-ranlib-14 /usr/bin/llvm-ranlib
+ sudo ln -s llvm-strip-14 /usr/bin/llvm-strip
+ fi
+ - name: Build Debug Target
+ run: make debug
+ - name: Build Release Target
+ if: ${{ !cancelled() }}
+ run: make
+ - name: Build TLS Debug Target
+ run: make WEBUI_USE_TLS=1 debug
+ - name: Build TLS Release Target
+ run: make WEBUI_USE_TLS=1
+ - name: Build Examples
+ run: |
+ examples_base_dir=$(pwd)/examples/C
+ for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
+ echo "> $example"
+ cd $example || (exit_code=1 && continue)
+ if ! make; then
+ echo "Failed to build '$example'"
+ exit_code=1
+ continue
+ fi
+ if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
+ echo "Failed to find executable for '$example'" && find .
+ exit_code=1
+ continue
+ fi
+ done
+ exit $exit_code
+ - name: Setup Browser
+ uses: browser-actions/setup-chrome@v1
+ - name: Prepare Artifact
+ run: |
+ cp -r include dist
+ mv dist/ "$ARTIFACT"
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.ARTIFACT }}
+ path: ${{ env.ARTIFACT }}
+ - name: Prepare Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ run: |
+ zip -r "$ARTIFACT.zip" "$ARTIFACT"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
+
+ build-ubuntu-22:
+ needs: setup
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ include:
+ - cc: gcc
+ arch: x64
+ - cc: clang
+ arch: x64
+ fail-fast: false
+ env:
+ ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/cache/restore@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+ fail-on-cache-miss: true
+ - name: Setup
+ run: |
+ CC="${{ matrix.cc }}"
+ if [ "$CC" == "clang" ]; then
+ sudo ln -s llvm-ar-14 /usr/bin/llvm-ar
+ sudo ln -s llvm-ranlib-14 /usr/bin/llvm-ranlib
+ sudo ln -s llvm-strip-14 /usr/bin/llvm-strip
+ else
+ sudo apt -qq install gcc-11
+ CC+="-11"
+ fi
+ echo "CC=$CC" >> $GITHUB_ENV
+ - name: Build Debug Target
+ run: make debug
+ - name: Build Release Target
+ if: ${{ !cancelled() }}
+ run: make
+ - name: Build TLS Debug Target
+ run: make WEBUI_USE_TLS=1 debug
+ - name: Build TLS Release Target
+ run: make WEBUI_USE_TLS=1
+ - name: Build Examples
+ run: |
+ examples_base_dir=$(pwd)/examples/C
+ for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
+ echo "> $example"
+ cd $example || (exit_code=1 && continue)
+ if ! make; then
+ echo "Failed to build '$example'"
+ exit_code=1
+ continue
+ fi
+ if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
+ echo "Failed to find executable for '$example'" && find .
+ exit_code=1
+ continue
+ fi
+ done
+ exit $exit_code
diff --git a/v2/webui/.github/workflows/linux_arch.yml b/v2/webui/.github/workflows/linux_arch.yml
new file mode 100644
index 0000000..98fec8a
--- /dev/null
+++ b/v2/webui/.github/workflows/linux_arch.yml
@@ -0,0 +1,111 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+
+name: Linux-Arch
+on:
+ workflow_call:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ include:
+ - cc: gcc
+ arch: x64
+ - cc: clang
+ arch: x64
+ fail-fast: false
+ env:
+ ARTIFACT: webui-linux-arch-${{ matrix.cc }}-${{ matrix.arch }}
+ CC: ${{ matrix.cc }}
+ steps:
+ - name: Check out the repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build Arch Linux Docker Image
+ run: |
+ docker build -t archlinux:latest - <
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ run: |
+ zip -r "$ARTIFACT.zip" "$ARTIFACT"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
diff --git a/v2/webui/.github/workflows/linux_arm.yml b/v2/webui/.github/workflows/linux_arm.yml
new file mode 100644
index 0000000..e8a2ad6
--- /dev/null
+++ b/v2/webui/.github/workflows/linux_arm.yml
@@ -0,0 +1,180 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+name: Linux ARM
+on:
+ workflow_call:
+
+jobs:
+ setup:
+ runs-on: buildjet-32vcpu-ubuntu-2204-arm
+ steps:
+ - uses: actions/checkout@v4
+ - name: Check CPU Architecture
+ run: |
+ ARCH=$(uname -m)
+ if [[ "$ARCH" != "arm"* && "$ARCH" != "aarch64" ]]; then
+ echo "Expected ARM-based CPU architecture. Detected: $ARCH"
+ exit 1
+ else
+ echo "ARM CPU Detected: $ARCH"
+ fi
+ - name: Bundle WebUI Bridge
+ run: |
+ npm i -g esbuild
+ chmod +x bridge/build.sh
+ bridge/build.sh
+ - uses: actions/cache@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+
+ build:
+ needs: setup
+ # Same as `buildjet-32vcpu-ubuntu-2204-arm`
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ include:
+ - cc: gcc
+ arch: arm
+ - cc: gcc
+ arch: arm64
+ - cc: clang
+ arch: arm
+ - cc: clang
+ arch: arm64
+ fail-fast: false
+ env:
+ ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/cache/restore@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+ fail-on-cache-miss: true
+ - name: Setup
+ run: |
+ sudo apt update
+ if [ "${{ matrix.cc }}" == "clang" ]; then
+ sudo apt install -y clang lld
+ fi
+
+ CC=${{ matrix.cc }}
+ if [ "${{ matrix.arch }}" == "arm64" ]; then
+ sudo apt install -y gcc-aarch64-linux-gnu
+ if [ "$CC" = "clang" ]; then
+ CC="clang --target=aarch64-linux-gnu"
+ else
+ CC=aarch64-linux-gnu-gcc
+ fi
+ wget https://github.com/openssl/openssl/releases/download/openssl-3.3.1/openssl-3.3.1.tar.gz
+ tar -xzf openssl-3.3.1.tar.gz
+ cd openssl-3.3.1
+ ./Configure linux-generic64 --prefix=/usr/aarch64-linux-gnu --cross-compile-prefix=aarch64-linux-gnu- --release -latomic
+ make
+ sudo make install
+ elif [ "${{ matrix.arch }}" == "arm" ]; then
+ sudo apt install -y gcc-arm-linux-gnueabi
+ if [ "$CC" = "clang" ]; then
+ CC="clang --target=arm-linux-gnueabi"
+ else
+ CC=arm-linux-gnueabi-gcc
+ fi
+ wget https://github.com/openssl/openssl/releases/download/openssl-3.3.1/openssl-3.3.1.tar.gz
+ tar -xzf openssl-3.3.1.tar.gz
+ cd openssl-3.3.1
+ ./Configure linux-generic32 --prefix=/usr/arm-linux-gnueabi --cross-compile-prefix=arm-linux-gnueabi- --release -latomic
+ make
+ sudo make install
+ fi
+ echo "CC=$CC" >> $GITHUB_ENV
+ - name: Build Debug Target
+ run: make debug
+ - name: Build Release Target
+ if: ${{ !cancelled() }}
+ run: make
+ - name: Build TLS Debug ARM64 Target
+ if: matrix.arch == 'arm64'
+ run: make WEBUI_USE_TLS=1 debug WEBUI_TLS_INCLUDE="/usr/aarch64-linux-gnu/include" WEBUI_TLS_LIB="/usr/aarch64-linux-gnu/lib"
+ - name: Build TLS Debug ARM Target
+ if: matrix.arch == 'arm'
+ run: make WEBUI_USE_TLS=1 debug WEBUI_TLS_INCLUDE="/usr/arm-linux-gnueabi/include" WEBUI_TLS_LIB="/usr/arm-linux-gnueabi/lib"
+ - name: Build TLS Release ARM64 Target
+ if: matrix.arch == 'arm64'
+ run: make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="/usr/aarch64-linux-gnu/include" WEBUI_TLS_LIB="/usr/aarch64-linux-gnu/lib"
+ - name: Build TLS Release ARM Target
+ if: matrix.arch == 'arm'
+ run: make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="/usr/arm-linux-gnueabi/include" WEBUI_TLS_LIB="/usr/arm-linux-gnueabi/lib"
+ # - name: Build Examples
+ # if: matrix.arch == 'arm64'
+ # run: |
+ # examples_base_dir=$(pwd)/examples/C
+ # for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
+ # echo "> $example"
+ # cd $example || (exit_code=1 && continue)
+ # if ! make CC=aarch64-linux-gnu-gcc; then
+ # echo "Failed to build '$example'"
+ # exit_code=1
+ # continue
+ # fi
+ # if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
+ # echo "Failed to find executable for '$example'" && find .
+ # exit_code=1
+ # continue
+ # fi
+ # done
+ # exit $exit_code
+ - name: Prepare Artifact
+ run: |
+ cp -r include dist
+ mv dist/ "$ARTIFACT"
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.ARTIFACT }}
+ path: ${{ env.ARTIFACT }}
+ - name: Prepare Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ run: |
+ zip -r "$ARTIFACT.zip" "$ARTIFACT"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
diff --git a/v2/webui/.github/workflows/linux_redhat.yml b/v2/webui/.github/workflows/linux_redhat.yml
new file mode 100644
index 0000000..7cc0424
--- /dev/null
+++ b/v2/webui/.github/workflows/linux_redhat.yml
@@ -0,0 +1,113 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+
+name: Linux-RedHat
+on:
+ workflow_call:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ include:
+ - cc: gcc
+ arch: x64
+ - cc: clang
+ arch: x64
+ fail-fast: false
+ env:
+ ARTIFACT: webui-linux-redhat-${{ matrix.cc }}-${{ matrix.arch }}
+ CC: ${{ matrix.cc }}
+ steps:
+ - name: Check out the repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build RedHat Docker Image
+ run: |
+ docker build -t redhat:latest - <
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ run: |
+ zip -r "$ARTIFACT.zip" "$ARTIFACT"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
diff --git a/v2/webui/.github/workflows/macos.yml b/v2/webui/.github/workflows/macos.yml
new file mode 100644
index 0000000..dc32640
--- /dev/null
+++ b/v2/webui/.github/workflows/macos.yml
@@ -0,0 +1,125 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+name: macOS
+on:
+ workflow_call:
+
+jobs:
+ setup:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Bundle WebUI Bridge
+ run: |
+ npm i -g esbuild
+ chmod +x bridge/build.sh
+ bridge/build.sh
+ - uses: actions/cache@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+
+ build:
+ needs: setup
+ runs-on: macos-latest
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ cc: [clang]
+ arch: [x64, arm64]
+ fail-fast: false
+ env:
+ ARTIFACT: webui-macos-${{ matrix.cc }}-${{ matrix.arch }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/cache/restore@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+ fail-on-cache-miss: true
+ - name: Setup OpenSSL
+ run: |
+ echo "WEBUI_TLS_INCLUDE=$(brew --cellar)/openssl@1.1/1.1.1w/include/" >> $GITHUB_ENV
+ echo "WEBUI_TLS_LIB=$(brew --cellar)/openssl@1.1/1.1.1w/lib/" >> $GITHUB_ENV
+ - name: Build Debug Target
+ run: make ARCH_TARGET=${{ matrix.arch }} debug
+ - name: Build Release Target
+ if: ${{ !cancelled() }}
+ run: make ARCH_TARGET=${{ matrix.arch }}
+ - name: Build TLS Debug Target
+ if: ${{ matrix.arch != 'x64' }}
+ run: make ARCH_TARGET=${{ matrix.arch }} WEBUI_USE_TLS=1 debug
+ - name: Build TLS Release Target
+ if: ${{ matrix.arch != 'x64' }}
+ run: make ARCH_TARGET=${{ matrix.arch }} WEBUI_USE_TLS=1
+ - name: Build examples
+ if: ${{ matrix.arch != 'x64' }}
+ run: |
+ examples_base_dir=$(pwd)/examples/C
+ for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
+ echo "> $example"
+ cd $example || (exit_code=1 && continue)
+ if ! make ARCH_TARGET=${{ matrix.arch }}; then
+ echo "Failed to build '$example'"
+ exit_code=1
+ continue
+ fi
+ if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
+ echo "Failed to find executable for '$example'" && find .
+ exit_code=1
+ continue
+ fi
+ done
+ exit $exit_code
+ - name: Prepare Artifacts
+ run: |
+ cp -r include dist
+ mv dist/ "$ARTIFACT"
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.ARTIFACT }}
+ path: ${{ env.ARTIFACT }}
+ - name: Prepare Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ run: |
+ zip -r "$ARTIFACT.zip" "$ARTIFACT"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
diff --git a/v2/webui/.github/workflows/windows.yml b/v2/webui/.github/workflows/windows.yml
new file mode 100644
index 0000000..30df206
--- /dev/null
+++ b/v2/webui/.github/workflows/windows.yml
@@ -0,0 +1,133 @@
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+name: Windows
+on:
+ workflow_call:
+
+jobs:
+ setup:
+ runs-on: windows-2022
+ steps:
+ - uses: actions/checkout@v4
+ - name: Bundle WebUI Bridge
+ run: bridge/build.bat
+ - uses: actions/cache@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+
+ build:
+ needs: setup
+ runs-on: windows-2022
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ cc: ['gcc', 'msvc']
+ include:
+ - cc: gcc
+ make: mingw32-make
+ - cc: msvc
+ make: nmake
+ fail-fast: false
+ env:
+ ARTIFACT: webui-windows-${{ matrix.cc }}-x64
+ WEBUI_TLS_INCLUDE: "C:\\Program Files\\OpenSSL\\include"
+ WEBUI_TLS_LIB: "C:\\Program Files\\OpenSSL\\lib\\VC\\x64\\MD"
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/cache/restore@v4
+ with:
+ path: bridge/webui_bridge.h
+ key: ${{ runner.os }}-${{ github.sha }}-bridge
+ fail-on-cache-miss: true
+ - uses: microsoft/setup-msbuild@v2
+ - uses: ilammy/msvc-dev-cmd@v1
+ if: matrix.cc == 'msvc'
+ - name: Build Debug Target
+ run: ${{ matrix.make }} debug
+ - name: Build Release Target
+ if: ${{ !cancelled() }}
+ run: ${{ matrix.make }}
+ - name: Build TLS Debug Target
+ run: ${{ matrix.make }} WEBUI_USE_TLS=1 debug
+ - name: Build TLS Release Target
+ run: ${{ matrix.make }} WEBUI_USE_TLS=1
+ - name: Build examples
+ run: |
+ $examples_base_dir = "$(Get-Location)/examples/C/"
+ foreach ($example in Get-ChildItem -Path $examples_base_dir -Directory) {
+ Write-Host "> $example"
+ Set-Location -Path $example.FullName
+ if (!$?) {
+ $exit_code = 1
+ continue
+ }
+ $make_output = Invoke-Expression ${{ matrix.make }}
+ if (!$?) {
+ Write-Host "Failed to build '$example': $make_output"
+ $exit_code = 1
+ continue
+ }
+ Write-Output $make_output
+ if (!(Test-Path "main.exe") -or !(Test-Path "main-dyn.exe")) {
+ Write-Host "Failed to find executable for '$example'"
+ Get-ChildItem
+ $exit_code = 1
+ continue
+ }
+ }
+ exit $exit_code
+ - name: Prepare Artifact
+ shell: bash
+ run: |
+ cp -r include dist
+ mv dist/ "$ARTIFACT"
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.ARTIFACT }}
+ path: ${{ env.ARTIFACT }}
+ - name: Prepare Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ shell: bash
+ run: |
+ 7z a -tzip "$ARTIFACT.zip" "$ARTIFACT/*"
+ if [ $GITHUB_REF_TYPE == tag ]; then
+ echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
+ else
+ {
+ echo "IS_PRERELEASE=true";
+ echo "TAG=nightly";
+ echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+ echo "BODY=Generated from commit $GITHUB_SHA."
+ } >> $GITHUB_ENV
+ fi
+ - name: Update Nightly Tag
+ if: env.IS_PRERELEASE
+ uses: richardsimko/update-tag@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly
+ - name: Release
+ if: >
+ github.repository_owner == 'webui-dev'
+ && (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: ${{ env.ARTIFACT }}.zip
+ tag: ${{ env.TAG }}
+ body: ${{ env.BODY }}
+ name: ${{ env.TITLE }}
+ prerelease: ${{ env.IS_PRERELEASE }}
+ allowUpdates: true
diff --git a/v2/webui/.github/workflows/zig.yml b/v2/webui/.github/workflows/zig.yml
new file mode 100644
index 0000000..e563a39
--- /dev/null
+++ b/v2/webui/.github/workflows/zig.yml
@@ -0,0 +1,36 @@
+name: Zig Build
+
+on:
+ workflow_call:
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ version: [0.14.0, 0.15.1]
+ fail-fast: false
+ runs-on: ${{ matrix.os }}
+ steps:
+ - uses: maxim-lobanov/setup-xcode@v1
+ if: runner.os == 'macOS'
+ with:
+ xcode-version: latest-stable
+ - uses: actions/checkout@v4
+ - name: Setup Zig
+ uses: goto-bus-stop/setup-zig@v2
+ with:
+ version: ${{ matrix.version }}
+ - name: Build static library
+ run: zig build -Dverbose=debug
+ - name: Build dynamic library
+ if: ${{ !cancelled() }}
+ run: zig build -Ddynamic -Dverbose=debug
+ - name: Build static library with TLS support
+ if: runner.os == 'Linux'
+ run: zig build -Denable-tls -Dverbose=debug
+ - name: Build dynamic library with TLS support
+ if: runner.os == 'Linux'
+ run: zig build -Ddynamic -Denable-tls -Dverbose=debug
+ - name: Build examples
+ run: zig build examples
diff --git a/v2/webui/.gitignore b/v2/webui/.gitignore
new file mode 100644
index 0000000..b2b7c6c
--- /dev/null
+++ b/v2/webui/.gitignore
@@ -0,0 +1,141 @@
+# Build
+build/
+*.exe
+*.ilk
+*.pdb
+*.exp
+*.res
+*.out
+*.def
+
+# All sub-level build binaries
+*/**/*
+!*/**/*/
+!*/**/*.*
+!*makefile
+!Makefile
+*/**/*.exe
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Shared objects (inc. Windows DLLs)
+*.dll
+*.so
+*.so.*
+*.dylib
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Logs
+*.log
+*.logs
+*.tlog
+
+# IDE
+.vscode/
+.vs/
+
+# Visual Studio
+.idea/
+*.recipe
+*.idb
+*.iobj
+*.pdb
+
+# Visual Studio for Mac
+.idea/
+
+# Visual Studio cache files
+ipch/
+*.dbmdl
+*.dbproj.schemaview
+
+# Others
+.builds
+*~*
+*.cache
+*.swp
+*.bak
+*.tmp
+*.swp
+*.userosscache
+*.err
+*.vspscc
+*.vssscc
+*.pidb
+*.svclog
+*.scc
+
+# NuGet
+packages/
+!packages/repositories.config
+*.nupkg
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# User-specific files
+*.suo
+*.user
+*.userprefs
+*.sln.docstates
+
+# Python
+__pycache__/
+dist/
+webui2.egg-info/
+
+# Rust
+target/
+*.lock
+
+# Broken NTFS
+nul
+
+# Zig
+zig-cache/
+zig-out/
+
+# macOS
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+
+# User-specific private settings
+*.DotSettings.user
+
+# Compressed
+*.zip
+*.gz
+
+# CMake
+**/cmake_install.cmake
+**/CMakeCache.txt
+**/CMakeFiles/
+CMakeUserPresets.json
+.zig-cache
+
+# Conan
+**/compressor
+**/conan-*
+**/cmake-build-*
+**/deactivate_conanbuildenv*
+
+# vcpkg
+vcpkg-manifest-install.log
+vcpkg_installed/
+/.claude
+CLAUDE.md
diff --git a/v2/webui/CMakeLists.txt b/v2/webui/CMakeLists.txt
new file mode 100644
index 0000000..f4378ee
--- /dev/null
+++ b/v2/webui/CMakeLists.txt
@@ -0,0 +1,192 @@
+cmake_minimum_required(VERSION 3.18)
+
+# Project name
+project(WebUILibrary
+ VERSION 2.5.0
+ DESCRIPTION "Use any web browser or WebView as GUI, with your preferred language in the backend and modern web technologies in the frontend, all in a lightweight portable library."
+ HOMEPAGE_URL "https://webui.me/")
+
+# Set C & C++ standard
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_C_STANDARD 99)
+set(CMAKE_C_STANDARD_REQUIRED ON)
+
+
+# In order to be able to link with other shared libraries on Linux we may need `-fPIC`.
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ # using Clang
+ add_compile_options(-fPIC)
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ # using GCC
+ add_compile_options(-fPIC)
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+ # using Intel C++
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ # using Visual Studio C++
+endif()
+
+# Variables for library names, source files, etc.
+set(WEBUI_DEFAULT_OUT_LIB_NAME "webui-2")
+
+# Conditional compilation for TLS
+option(WEBUI_USE_TLS "Enable TLS support" OFF)
+if (WEBUI_USE_TLS)
+ find_package(OpenSSL REQUIRED)
+ set(WEBUI_DEFAULT_OUT_LIB_NAME "webui-2-secure")
+endif()
+
+# Option to build example projects
+option(WEBUI_BUILD_EXAMPLES "Build WebUI examples" ON)
+
+if (NOT BUILD_SHARED_LIBS)
+ set(WEBUI_DEFAULT_OUT_LIB_NAME "${WEBUI_DEFAULT_OUT_LIB_NAME}-static")
+endif()
+
+# Output library name
+set(WEBUI_OUT_LIB_NAME "${WEBUI_DEFAULT_OUT_LIB_NAME}" CACHE STRING "Name of the output library")
+
+# Source files (already filled)
+set(SOURCE_FILES
+ src/civetweb/civetweb.c
+ src/webui.c
+)
+
+if (WIN32)
+ list(APPEND SOURCE_FILES src/webview/win32_wv2.cpp)
+endif()
+
+if (APPLE)
+ # enable macos webview
+ enable_language(OBJC)
+ set(CMAKE_OBJC_STANDARD 11)
+ list(APPEND SOURCE_FILES src/webview/wkwebview.m)
+endif()
+
+# Library targets
+add_library(webui ${SOURCE_FILES})
+target_include_directories(webui PUBLIC $ $)
+target_compile_definitions(webui PUBLIC NO_CACHING NO_CGI USE_WEBSOCKET
+ "$<$:WEBUI_LOG>" "$<$>:NDEBUG>")
+
+if (BUILD_SHARED_LIBS AND WIN32)
+ target_compile_definitions(webui PRIVATE CIVETWEB_DLL_EXPORTS PUBLIC CIVETWEB_DLL_IMPORTS)
+endif()
+
+if (WEBUI_USE_TLS)
+ target_compile_definitions(webui PUBLIC WEBUI_TLS NO_SSL_DL OPENSSL_API_1_1)
+ target_link_libraries(webui PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+else()
+ target_compile_definitions(webui PUBLIC NO_SSL)
+endif()
+
+if (WIN32)
+ target_link_libraries(webui PRIVATE ws2_32 user32 shell32 ole32)
+elseif (APPLE)
+ # link required frameworks
+ find_library(COCOA_FRAMEWORK Cocoa REQUIRED)
+ find_library(WEBKIT_FRAMEWORK WebKit REQUIRED)
+
+ target_link_libraries(webui PRIVATE ${COCOA_FRAMEWORK} ${WEBKIT_FRAMEWORK})
+endif()
+
+set_target_properties(webui PROPERTIES
+ OUTPUT_NAME ${WEBUI_OUT_LIB_NAME})
+
+# Install headers
+install(FILES include/webui.h include/webui.hpp DESTINATION include)
+
+# Install targets
+install(TARGETS webui
+ EXPORT webui
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
+
+install(EXPORT webui
+ FILE webui-config.cmake
+ NAMESPACE webui::
+ DESTINATION share/webui
+)
+
+
+#//////////////////////////
+# Build examples
+#//////////////////////////
+
+if (WEBUI_BUILD_EXAMPLES)
+ message(STATUS "WebUI Source directory is " ${CMAKE_CURRENT_SOURCE_DIR})
+ message(STATUS "WebUI Build directory is " ${CMAKE_BINARY_DIR})
+
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+ # C++ examples
+ add_executable(minimal_cpp ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/minimal/main.cpp)
+ add_executable(call_js_from_cpp ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/call_js_from_cpp/main.cpp)
+ add_executable(call_cpp_from_js ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/call_cpp_from_js/main.cpp)
+ add_executable(serve_a_folder_cpp ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/serve_a_folder/main.cpp)
+ add_executable(virtual_file_system_cpp ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/virtual_file_system/main.cpp)
+ add_executable(test_index_redirect_cpp ${CMAKE_CURRENT_SOURCE_DIR}/examples/C++/test_index_redirect/main.cpp)
+
+ # C examples
+ add_executable(minimal_c ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/minimal/main.c)
+ add_executable(call_js_from_c ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/call_js_from_c/main.c)
+ add_executable(call_c_from_js ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/call_c_from_js/main.c)
+ add_executable(serve_a_folder_c ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/serve_a_folder/main.c)
+ add_executable(virtual_file_system_c ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/virtual_file_system/main.c)
+ add_executable(test_index_redirect_c ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/test_index_redirect/main.c)
+ add_executable(public_network_access ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/public_network_access/main.c)
+ add_executable(web_app_multi_client ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/web_app_multi_client/main.c)
+ add_executable(chatgpt_api ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/chatgpt_api/main.c)
+ add_executable(custom_web_server ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/custom_web_server/main.c)
+ add_executable(react ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/react/main.c)
+ add_executable(frameless ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/frameless/main.c)
+ add_executable(text_editor ${CMAKE_CURRENT_SOURCE_DIR}/examples/C/text-editor/main.c)
+
+ target_link_libraries(minimal_cpp webui)
+ target_link_libraries(call_js_from_cpp webui)
+ target_link_libraries(call_cpp_from_js webui)
+ target_link_libraries(serve_a_folder_cpp webui)
+ target_link_libraries(virtual_file_system_cpp webui)
+ target_link_libraries(test_index_redirect_cpp webui)
+
+ target_link_libraries(minimal_c webui)
+ target_link_libraries(call_js_from_c webui)
+ target_link_libraries(call_c_from_js webui)
+ target_link_libraries(serve_a_folder_c webui)
+ target_link_libraries(virtual_file_system_c webui)
+ target_link_libraries(test_index_redirect_c webui)
+ target_link_libraries(public_network_access webui)
+ target_link_libraries(web_app_multi_client webui)
+ target_link_libraries(chatgpt_api webui)
+ target_link_libraries(custom_web_server webui)
+ target_link_libraries(react webui)
+ target_link_libraries(frameless webui)
+ target_link_libraries(text_editor webui)
+
+ if (MSVC)
+ set_target_properties(minimal_cpp PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(call_js_from_cpp PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(call_cpp_from_js PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(serve_a_folder_cpp PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(virtual_file_system_cpp PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(test_index_redirect_cpp PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(minimal_c PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(call_js_from_c PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(call_c_from_js PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(serve_a_folder_c PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(virtual_file_system_c PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(test_index_redirect_c PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(public_network_access PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(web_app_multi_client PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(chatgpt_api PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(custom_web_server PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(react PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(frameless PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ set_target_properties(text_editor PROPERTIES LINK_FLAGS "/SubSystem:\"Windows\"" VS_DPI_AWARE "ON")
+ endif()
+
+ if (MSVC)
+ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT call_js_from_cpp)
+ endif()
+endif()
diff --git a/v2/webui/GNUmakefile b/v2/webui/GNUmakefile
new file mode 100644
index 0000000..daedcf7
--- /dev/null
+++ b/v2/webui/GNUmakefile
@@ -0,0 +1,218 @@
+# WebUI Library
+
+# == 1. VARIABLES =============================================================
+
+WEBUI_OUT_LIB_NAME = webui-2
+
+# Detect the OS once
+ifeq ($(OS),Windows_NT)
+DETECTED_OS := Windows
+else
+DETECTED_OS := $(shell uname -s)
+endif
+
+# TLS
+WEBUI_USE_TLS =
+WEBUI_TLS_INCLUDE ?= .
+WEBUI_TLS_LIB ?= .
+TLS_CFLAG = -DNO_SSL
+TLS_LDFLAG_DYNAMIC =
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_OUT_LIB_NAME = webui-2-secure
+TLS_CFLAG = -DWEBUI_TLS -DNO_SSL_DL -DOPENSSL_API_1_1
+ifeq ($(DETECTED_OS),Windows)
+TLS_LDFLAG_DYNAMIC = -lssl -lcrypto -lbcrypt
+else
+TLS_LDFLAG_DYNAMIC = -lssl -lcrypto
+endif
+endif
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+MAKEFILE_DIR := $(dir $(MAKEFILE_PATH))
+BUILD_DIR := $(MAKEFILE_DIR)/dist
+
+# ARGS
+CC ?= gcc
+ifeq ($(CC), cc)
+ ifeq ($(DETECTED_OS),Darwin)
+ CC = clang
+ else
+ CC = gcc
+ endif
+endif
+
+# Allow to add arch-target for macOS CI cross compilation
+ARCH_TARGET ?=
+
+# BUILD FLAGS
+CIVETWEB_BUILD_FLAGS := -o civetweb.o -I"$(MAKEFILE_DIR)/include/" -c "$(MAKEFILE_DIR)/src/civetweb/civetweb.c" -I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG) -w
+CIVETWEB_DEFINE_FLAGS = -DNDEBUG -DNO_CACHING -DNO_CGI -DUSE_WEBSOCKET $(TLS_CFLAG)
+WEBUI_BUILD_FLAGS := -o webui.o -I"$(MAKEFILE_DIR)/include/" -c "$(MAKEFILE_DIR)/src/webui.c" -I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG)
+WIN32_WV2_BUILD_FLAGS := -o win32_wv2.o -I"$(MAKEFILE_DIR)/include/" -c "$(MAKEFILE_DIR)/src/webview/win32_wv2.cpp" -I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG)
+WARNING_RELEASE := -w
+WARNING_LOG := -Wall -Wno-unused
+
+# OUTPUT FILES
+# The static output is the same for all platforms
+# The dynamic output is platform dependent
+LIB_STATIC_OUT := lib$(WEBUI_OUT_LIB_NAME)-static.a
+
+# Platform defaults and dynamic library outputs
+ifeq ($(DETECTED_OS),Windows)
+ # Windows
+ SHELL := CMD
+ PLATFORM := windows
+ LIB_DYN_OUT := $(WEBUI_OUT_LIB_NAME).dll
+ LWS2_OPT := -lws2_32 -lole32
+ WIN32_WV2_OBJ := win32_wv2.o
+ CPP_FLAGS := -lstdc++ -luuid
+ CIVETWEB_DEFINE_FLAGS += -DMUST_IMPLEMENT_CLOCK_GETTIME
+ CXX ?= g++
+else ifeq ($(DETECTED_OS),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ LIB_DYN_OUT := lib$(WEBUI_OUT_LIB_NAME).dylib
+ WEBKIT_OBJ := wkwebview.o
+ CPP_FLAGS :=
+ WKWEBKIT_BUILD_FLAGS := -o wkwebview.o -c "$(MAKEFILE_DIR)/src/webview/wkwebview.m"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+else
+ # Linux
+ PLATFORM := linux
+ LIB_DYN_OUT := lib$(WEBUI_OUT_LIB_NAME).so
+ CPP_FLAGS :=
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+endif
+
+# macOS can set `ARCH_TARGET=arm64` for cross-compilation.
+ifneq ($(ARCH_TARGET),)
+ ifneq ($(PLATFORM),macos)
+ $(error ARCH_TARGET is only available on macOS)
+ endif
+ ifeq ($(ARCH_TARGET),arm64)
+ TARGET := -target arm64-apple-darwin -arch arm64
+ else ifeq ($(ARCH_TARGET),x64)
+ TARGET := -target x86_64-apple-darwin -arch x86_64
+ else
+ $(error Unsupported ARCH_TARGET: $(ARCH_TARGET). Use 'arm64' or 'x64'.)
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --debug
+
+release: --release
+
+clean: --clean-$(PLATFORM)
+
+# == 2.1 INTERNAL TARGETS =====================================================
+
+--debug:
+# Create build directory
+ifeq ($(PLATFORM),windows)
+ @mkdir "$(BUILD_DIR)/debug" >nul 2>&1 ||:
+else
+ @mkdir -p "$(BUILD_DIR)/debug"
+endif
+# Build macOS WKWebView
+ifeq ($(DETECTED_OS),Darwin)
+ @cd "$(BUILD_DIR)/debug" \
+ && echo "Build WebUI Objective-C WKWebKit ($(CC) $(TARGET) debug)..." \
+ && $(CC) $(TARGET) $(WKWEBKIT_BUILD_FLAGS) -g -DWEBUI_LOG
+endif
+# Build Win32 WebView2 C++
+ifeq ($(DETECTED_OS),Windows)
+ @cd "$(BUILD_DIR)/debug" \
+ && echo "Build WebUI Win32 WebView2 ($(CXX) $(TARGET) debug)..." \
+ && $(CXX) $(TARGET) $(WIN32_WV2_BUILD_FLAGS) $(WARNING_LOG) -g -DWEBUI_LOG
+endif
+# Static with Debug info
+ @cd "$(BUILD_DIR)/debug" \
+ && echo "Build WebUI library ($(CC) $(TARGET) debug static)..." \
+ && $(CC) $(TARGET) $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS) -g \
+ && $(CC) $(TARGET) $(WEBUI_BUILD_FLAGS) $(WARNING_LOG) -g -DWEBUI_LOG \
+ && $(LLVM_OPT)ar rc $(LIB_STATIC_OUT) webui.o civetweb.o $(WEBKIT_OBJ) $(WIN32_WV2_OBJ) \
+ && $(LLVM_OPT)ranlib $(LIB_STATIC_OUT)
+# Dynamic with Debug info
+ @cd "$(BUILD_DIR)/debug" \
+ && echo "Build WebUI library ($(CC) $(TARGET) debug dynamic)..." \
+ && $(CC) $(TARGET) $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS) -g -fPIC \
+ && $(CC) $(TARGET) $(WEBUI_BUILD_FLAGS) $(WARNING_LOG) -g -fPIC -DWEBUI_LOG -DWEBUI_DYNAMIC \
+ && $(CC) $(TARGET) -shared -o $(LIB_DYN_OUT) webui.o civetweb.o $(WEBKIT_OBJ) $(WIN32_WV2_OBJ) -g -L"$(WEBUI_TLS_LIB)" $(TLS_LDFLAG_DYNAMIC) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) $(CPP_FLAGS)
+ifeq ($(PLATFORM),windows)
+ @cd "$(BUILD_DIR)/debug" && del *.o >nul 2>&1
+else
+ @rm -f $(BUILD_DIR)/debug/*.o
+endif
+ @echo "Done."
+
+--release:
+# Create build directory
+ifeq ($(PLATFORM),windows)
+ @mkdir "$(BUILD_DIR)" >nul 2>&1 ||:
+else
+ @mkdir -p "$(BUILD_DIR)"
+endif
+# Build macOS WKWebView
+ifeq ($(DETECTED_OS),Darwin)
+ @cd "$(BUILD_DIR)" \
+ && echo "Build WebUI Objective-C WKWebKit ($(CC) $(TARGET) release)..." \
+ && $(CC) $(TARGET) $(WKWEBKIT_BUILD_FLAGS) -Os
+endif
+# Build Win32 WebView2 C++
+ifeq ($(DETECTED_OS),Windows)
+ @cd "$(BUILD_DIR)" \
+ && echo "Build WebUI Win32 WebView2 ($(CXX) $(TARGET) release)..." \
+ && $(CXX) $(TARGET) $(WIN32_WV2_BUILD_FLAGS) $(WARNING_RELEASE) -Os
+endif
+# Static Release
+ @cd "$(BUILD_DIR)" \
+ && echo "Build WebUI library ($(CC) $(TARGET) release static)..." \
+ && $(CC) $(TARGET) $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS) -Os \
+ && $(CC) $(TARGET) $(WEBUI_BUILD_FLAGS) $(WARNING_RELEASE) -Os \
+ && $(LLVM_OPT)ar rc $(LIB_STATIC_OUT) webui.o civetweb.o $(WEBKIT_OBJ) $(WIN32_WV2_OBJ) \
+ && $(LLVM_OPT)ranlib $(LIB_STATIC_OUT)
+# Dynamic Release
+ @cd "$(BUILD_DIR)" \
+ && echo "Build WebUI library ($(CC) $(TARGET) release dynamic)..." \
+ && $(CC) $(TARGET) $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS) -Os -fPIC \
+ && $(CC) $(TARGET) $(WEBUI_BUILD_FLAGS) $(WARNING_RELEASE) -O3 -fPIC -DWEBUI_DYNAMIC \
+ && $(CC) $(TARGET) -shared -o $(LIB_DYN_OUT) webui.o civetweb.o $(WEBKIT_OBJ) $(WIN32_WV2_OBJ) -L"$(WEBUI_TLS_LIB)" $(TLS_LDFLAG_DYNAMIC) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) $(CPP_FLAGS)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @strip --strip-unneeded $(BUILD_DIR)/$(LIB_DYN_OUT)
+ @cd "$(BUILD_DIR)" && del *.o >nul 2>&1
+else
+ @rm -f $(BUILD_DIR)/*.o
+endif
+ @echo "Done."
+
+# PLATFROM CLEAN TARGETS
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ @- cd "$(BUILD_DIR)" \
+ && rm -f *.o \
+ && rm -f *.so \
+ && rm -f *.dylib \
+ && rm -f *.a
+
+--clean-windows:
+ @- cd "$(BUILD_DIR)" \
+ && del *.a >nul 2>&1 \
+ && del *.o >nul 2>&1 \
+ && del *.dll >nul 2>&1 \
+ && del *.obj >nul 2>&1 \
+ && del *.ilk >nul 2>&1 \
+ && del *.pdb >nul 2>&1 \
+ && del *.lib >nul 2>&1 \
+ && del *.exp >nul 2>&1
diff --git a/v2/webui/LICENSE b/v2/webui/LICENSE
new file mode 100644
index 0000000..7b9eb01
--- /dev/null
+++ b/v2/webui/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Hassan Draga
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/v2/webui/Makefile b/v2/webui/Makefile
new file mode 100644
index 0000000..5925b53
--- /dev/null
+++ b/v2/webui/Makefile
@@ -0,0 +1,97 @@
+# WebUI Library
+# Windows - Microsoft Visual C
+
+# == 1. VARIABLES =============================================================
+
+WEBUI_OUT_LIB_NAME = webui-2
+TLS_CFLAG = /DNO_SSL
+
+# TLS Enabled
+!IF "$(WEBUI_USE_TLS)" == "1"
+
+WEBUI_OUT_LIB_NAME = webui-2-secure
+TLS_CFLAG = /DWEBUI_TLS /DNO_SSL_DL /DOPENSSL_API_1_1
+TLS_LDFLAG_DYNAMIC = libssl.lib libcrypto.lib
+
+!IF "$(WEBUI_TLS_INCLUDE)" != ""
+TLS_CFLAG = $(TLS_CFLAG) /I"$(WEBUI_TLS_INCLUDE)"
+!ELSE
+TLS_CFLAG = $(TLS_CFLAG) /I"."
+!ENDIF
+
+!IF "$(WEBUI_TLS_LIB)" != ""
+TLS_LDFLAG_DYNAMIC = $(TLS_LDFLAG_DYNAMIC) /LIBPATH:"$(WEBUI_TLS_LIB)"
+!ELSE
+TLS_LDFLAG_DYNAMIC += $(TLS_LDFLAG_DYNAMIC) /LIBPATH:"."
+!ENDIF
+
+!ENDIF
+
+# Build Flags
+CIVETWEB_BUILD_FLAGS = /Fo"civetweb.obj" /c /EHsc "$(MAKEDIR)/src/civetweb/civetweb.c" /I"$(MAKEDIR)/src/civetweb/" $(TLS_CFLAG)
+CIVETWEB_DEFINE_FLAGS = /D NDEBUG /D NO_CACHING /D NO_CGI /D USE_WEBSOCKET
+WEBUI_BUILD_FLAGS = /Fo"webui.obj" /c /EHsc "$(MAKEDIR)/src/webui.c" /I"$(MAKEDIR)/include" /I"$(MAKEDIR)/src/webview" /I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG)
+WIN32_WV2_BUILD_FLAGS = /Fo"win32_wv2.obj" /c /EHsc "$(MAKEDIR)/src/webview/win32_wv2.cpp" /I"$(MAKEDIR)/include" /I"$(MAKEDIR)/src/webview" /I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG)
+WARNING_RELEASE = /w
+WARNING_LOG = /W4
+
+# Output Commands
+LIB_STATIC_OUT = /OUT:"$(WEBUI_OUT_LIB_NAME)-static.lib" "webui.obj" "civetweb.obj" "win32_wv2.obj"
+LIB_DYN_OUT = /DLL /OUT:"$(WEBUI_OUT_LIB_NAME).dll" "webui.obj" "civetweb.obj" "win32_wv2.obj" user32.lib Advapi32.lib Shell32.lib Ole32.lib $(TLS_LDFLAG_DYNAMIC)
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug:
+ @- mkdir dist\debug >nul 2>&1
+# Static with Debug info
+ @- cd $(MAKEDIR)/dist/debug
+ @echo Build WebUI Library (MSVC Debug Static)...
+ @cl /Zl /Zi $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS)
+ @cl /Zl /Zi $(WEBUI_BUILD_FLAGS) $(WARNING_LOG) /D WEBUI_LOG
+ @cl /Zl /Zi $(WIN32_WV2_BUILD_FLAGS) $(WARNING_LOG) /D WEBUI_LOG
+ @lib $(LIB_STATIC_OUT)
+# Dynamic with Debug info
+ @echo Build WebUI Library (MSVC Debug Dynamic)...
+ @cl /Zi $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS)
+ @cl /Zi $(WEBUI_BUILD_FLAGS) $(WARNING_LOG) /D WEBUI_LOG /D WEBUI_DYNAMIC
+ @cl /Zi $(WIN32_WV2_BUILD_FLAGS) $(WARNING_LOG) /D WEBUI_LOG /D WEBUI_DYNAMIC
+ @link $(LIB_DYN_OUT)
+# Clean
+ @- del *.obj >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.exp >nul 2>&1
+ @echo Done.
+
+release:
+ @- mkdir dist >nul 2>&1
+ @- cd $(MAKEDIR)/dist
+# Static Release
+ @echo Build WebUI Library (MSVC Release Static)...
+ @cl /Zl $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS)
+ @cl /Zl $(WEBUI_BUILD_FLAGS) $(WARNING_RELEASE)
+ @cl /Zl $(WIN32_WV2_BUILD_FLAGS) $(WARNING_RELEASE)
+ @lib $(LIB_STATIC_OUT)
+# Dynamic Release
+ @echo Build WebUI Library (MSVC Release Dynamic)...
+ @cl $(CIVETWEB_BUILD_FLAGS) $(CIVETWEB_DEFINE_FLAGS)
+ @cl $(WEBUI_BUILD_FLAGS) $(WARNING_RELEASE) /D WEBUI_DYNAMIC
+ @cl $(WIN32_WV2_BUILD_FLAGS) $(WARNING_RELEASE) /D WEBUI_DYNAMIC
+ @link $(LIB_DYN_OUT)
+# Clean
+ @- del *.pdb >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.exp >nul 2>&1
+ @- echo Done.
+
+clean:
+ @- cd $(BUILD_DIR)
+ @- del *.pdb >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.exp >nul 2>&1
+ @- del *.dll >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- echo Done.
diff --git a/v2/webui/README.md b/v2/webui/README.md
new file mode 100644
index 0000000..d449444
--- /dev/null
+++ b/v2/webui/README.md
@@ -0,0 +1,317 @@
+
+
+
+
+# WebUI v2.5.0-beta.4
+
+[build-status]: https://img.shields.io/github/actions/workflow/status/webui-dev/webui/ci.yml?branch=main&style=for-the-badge&logo=githubactions&labelColor=414868&logoColor=C0CAF5
+[last-commit]: https://img.shields.io/github/last-commit/webui-dev/webui?style=for-the-badge&logo=github&logoColor=C0CAF5&labelColor=414868
+[release-version]: https://img.shields.io/github/v/tag/webui-dev/webui?style=for-the-badge&logo=webtrees&logoColor=C0CAF5&labelColor=414868&color=7664C6
+[license]: https://img.shields.io/github/license/webui-dev/webui?style=for-the-badge&logo=opensourcehardware&label=License&logoColor=C0CAF5&labelColor=414868&color=8c73cc
+
+[![][build-status]](https://github.com/webui-dev/webui/actions?query=branch%3Amain)
+[![][last-commit]](https://github.com/webui-dev/webui/pulse)
+[![][release-version]](https://github.com/webui-dev/webui/releases/latest)
+[![][license]](https://github.com/webui-dev/webui/blob/main/LICENSE)
+
+> Use any web browser or WebView as GUI, with your preferred language in the backend and modern web technologies in the frontend, all in a lightweight portable library.
+
+
+
+
+
+
+
+
+
+
+
+
+
+### _Ask AI Any Question About the WebUI_
+
+### [WebUI GPT - C/C++](https://chatgpt.com/g/g-685b01d42208819185a5a7c8ed74fa23-webui-c-c)
+
+
+
+## Download
+
+- [Latest Stable Release](https://github.com/webui-dev/webui/releases)
+- [Nightly Build](https://github.com/webui-dev/webui/releases/tag/nightly)
+
+## Contents
+
+- [Features](#features)
+- [Showcase](#showcase)
+- [UI & The Web Technologies](#ui--the-web-technologies)
+- [Documentation](#documentation)
+- [Build](#build)
+- [Examples](#examples)
+- [Wrappers](#wrappers)
+- [Supported Web Browsers](#supported-web-browsers)
+- [License](#license)
+
+## Features
+
+- Portable (*Needs only a web browser or a WebView at runtime*)
+- One header file
+- Lightweight (*Few Kb library*) & Small memory footprint
+- Fast binary communication protocol
+- Multi-platform & Multi-Browser
+- Using private profile for safety
+- Cross-platform WebView
+
+## UI & The Web Technologies
+
+[Borislav Stanimirov](https://ibob.bg/) discusses using HTML5 in the web browser as GUI at the [C++ Conference 2019 (_YouTube_)](https://www.youtube.com/watch?v=bbbcZd4cuxg).
+
+
+
+
+
+
+
+Web application UI design is not just about how a product looks but how it works. Using web technologies in your UI makes your product modern and professional, And a well-designed web application will help you make a solid first impression on potential customers. Great web application design also assists you in nurturing leads and increasing conversions. In addition, it makes navigating and using your web app easier for your users.
+
+### Why Use Web Browsers?
+
+Today's web browsers have everything a modern UI needs. Web browsers are very sophisticated and optimized. Therefore, using it as a GUI will be an excellent choice. While old legacy GUI lib is complex and outdated, a WebView-based app is still an option. However, a WebView needs a huge SDK to build and many dependencies to run, and it can only provide some features like a real web browser. That is why WebUI uses real web browsers to give you full features of comprehensive web technologies while keeping your software lightweight and portable.
+
+### How Does it Work?
+
+
+
+
+
+
+
+Think of WebUI like a WebView controller, but instead of embedding the WebView controller in your program, which makes the final program big in size, and non-portable as it needs the WebView runtimes. Instead, by using WebUI, you use a tiny static/dynamic library to run any installed web browser and use it as GUI, which makes your program small, fast, and portable. **All it needs is a web browser**.
+
+### Runtime Dependencies Comparison
+
+| | Tauri / WebView | Qt | WebUI |
+| ------------------------------- | ----------------- | -------------------------- | ------------------- |
+| Runtime Dependencies on Windows | _WebView2_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
+| Runtime Dependencies on Linux | _GTK3, WebKitGTK_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
+| Runtime Dependencies on macOS | _Cocoa, WebKit_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
+
+## Documentation
+
+> **Note**
+> We are currently writing documentation.
+
+- [Online Documentation](https://webui.me/docs/)
+
+## Build WebUI Library
+
+### Windows
+
+| Compiler | Command |
+|----------|---------|
+| GCC | `mingw32-make` |
+| MSVC | `nmake` |
+
+
+ Windows SSL/TLS (Optional)
+
+ Download and install the OpenSSL pre-compiled binaries for Windows:
+
+ - **MSVC**: [x64 OpenSSL v3.3.1](https://slproweb.com/download/Win64OpenSSL-3_3_1.msi) or [_32Bit_](https://slproweb.com/download/Win32OpenSSL-3_3_1.msi). See the [Wiki list](https://wiki.openssl.org/index.php/Binaries) for more info.
+ - **MinGW**: [Curl for Windows with OpenSSL](https://curl.se/windows/)
+
+ ```powershell
+ # GCC
+ mingw32-make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\include" WEBUI_TLS_LIB="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\lib"
+
+ # MSVC
+ nmake WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\Program Files\OpenSSL-xxx\include" WEBUI_TLS_LIB="C:\Program Files\OpenSSL-xxx\lib"
+ ```
+
+
+### Linux
+
+| Compiler | Command |
+|----------|---------|
+| GCC | `make` |
+| Clang | `make CC=clang` |
+
+
+ Linux SSL/TLS (Optional)
+
+ ```sh
+ sudo apt update
+ sudo apt install libssl-dev
+
+ # GCC
+ make WEBUI_USE_TLS=1
+
+ # Clang
+ make WEBUI_USE_TLS=1 CC=clang
+ ```
+
+
+### macOS
+
+| Compiler | Command |
+|----------|---------|
+| Default | `make` |
+
+
+ macOS SSL/TLS (Optional)
+
+ ```sh
+ brew install openssl
+ make WEBUI_USE_TLS=1
+ ```
+
+
+## Minimal WebUI Application
+
+- **C**
+
+ ```c
+ #include "webui.h"
+
+ int main() {
+ size_t my_window = webui_new_window();
+ webui_show(my_window, " Hello World ! ");
+ webui_wait();
+ return 0;
+ }
+ ```
+
+- **C++**
+
+ ```cpp
+ #include "webui.hpp"
+ #include
+
+ int main() {
+ webui::window my_window;
+ my_window.show(" C++ Hello World ! ");
+ webui::wait();
+ return 0;
+ }
+ ```
+
+- **More C/C++ Examples**
+
+ - [C](https://github.com/webui-dev/webui/tree/main/examples/C)
+ - [C++](https://github.com/webui-dev/webui/tree/main/examples/C++)
+
+- **Other Languages**
+
+ - [Wrappers List](#Wrappers)
+
+## Build WebUI Application
+
+### Windows
+
+| Compiler | Type | Command |
+|----------|--------|---------|
+| GCC | Static | `gcc -Os -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-static -lws2_32 -Wall -luser32 -static -lole32 -lstdc++ -luuid -o my_application.exe` |
+| GCC | Dynamic | `gcc -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" "webui-2.dll" -lws2_32 -Wall -luser32 -lole32 -o -lstdc++ -luuid my_application.exe` |
+| MSVC | Static | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` |
+| MSVC | Dynamic | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` |
+
+
+ Windows With SSL/TLS (Optional)
+
+ | Compiler | Type | Command |
+ |----------|--------|---------|
+ | GCC | Static | `gcc -Os -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lws2_32 -Wall -luser32 -static -lole32 -lstdc++ -luuid -o my_application.exe` |
+ | GCC | Dynamic | `gcc -Wl,-subsystem=windows my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" "webui-2-secure.dll" -lws2_32 -Wall -luser32 -lole32 -lstdc++ -luuid -o my_application.exe` |
+ | MSVC | Static | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2-secure-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` |
+ | MSVC | Dynamic | `cl my_application.c /I"_PATH_TO_WEBUI_INCLUDE_" /link /LIBPATH:"_PATH_TO_WEBUI_LIB_" /SUBSYSTEM:WINDOWS webui-2-secure.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:my_application.exe` |
+
+
+### Linux
+
+| Compiler | Type | Command |
+|----------|--------|---------|
+| GCC | Static | `gcc -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-static -lpthread -lm -ldl -o my_application` |
+| GCC | Dynamic | `gcc my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2 -lpthread -lm -ldl -o my_application` |
+| Clang | Static | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-static -lpthread -lm -ldl -o my_application` |
+| Clang | Dynamic | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2 -lpthread -lm -ldl -o my_application` |
+
+
+ Linux With SSL/TLS (Optional)
+
+ | Compiler | Type | Command |
+ |----------|--------|---------|
+ | GCC | Static | `gcc -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -ldl -o my_application` |
+ | GCC | Dynamic | `gcc my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -ldl -o my_application` |
+ | Clang | Static | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -ldl -o my_application` |
+ | Clang | Dynamic | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -ldl -o my_application` |
+
+
+### macOS
+
+| Compiler | Type | Command |
+|----------|--------|---------|
+| Clang | Static | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-static -lpthread -lm -framework Cocoa -framework WebKit -o my_application` |
+| Clang | Dynamic | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2 -lpthread -lm -framework Cocoa -framework WebKit -o my_application` |
+
+
+ macOS With SSL/TLS (Optional)
+
+ | Compiler | Type | Command |
+ |----------|--------|---------|
+ | Clang | Static | `clang -Os my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure-static -lpthread -lm -framework Cocoa -framework WebKit -o my_application` |
+ | Clang | Dynamic | `clang my_application.c -I"_PATH_TO_WEBUI_INCLUDE_" -L"_PATH_TO_WEBUI_LIB_" -lwebui-2-secure -lpthread -lm -framework Cocoa -framework WebKit -o my_application` |
+
+
+## Wrappers
+
+| Language | v2.4.0 API | v2.5.0 API | Link |
+| --------------- | --- | -------------- | --------------------------------------------------------- |
+| Python | ✔️ | _not complete_ | [Python-WebUI](https://github.com/webui-dev/python-webui) |
+| Go | ✔️ | _not complete_ | [Go-WebUI](https://github.com/webui-dev/go-webui) |
+| Zig | ✔️ | _not complete_ | [Zig-WebUI](https://github.com/webui-dev/zig-webui) |
+| Nim | ✔️ | _not complete_ | [Nim-WebUI](https://github.com/webui-dev/nim-webui) |
+| V | ✔️ | _not complete_ | [V-WebUI](https://github.com/webui-dev/v-webui) |
+| Rust | _not complete_ | _not complete_ | [Rust-WebUI](https://github.com/webui-dev/rust-webui) |
+| TS / JS (Deno) | ✔️ | _not complete_ | [Deno-WebUI](https://github.com/webui-dev/deno-webui) |
+| TS / JS (Bun) | _not complete_ | _not complete_ | [Bun-WebUI](https://github.com/webui-dev/bun-webui) |
+| Swift | _not complete_ | _not complete_ | [Swift-WebUI](https://github.com/webui-dev/swift-webui) |
+| Odin | _not complete_ | _not complete_ | [Odin-WebUI](https://github.com/webui-dev/odin-webui) |
+| Pascal | _not complete_ | _not complete_ | [Pascal-WebUI](https://github.com/webui-dev/pascal-webui) |
+| Purebasic | _not complete_ | _not complete_ | [Purebasic-WebUI](https://github.com/webui-dev/purebasic-webui)|
+| - | | |
+| Common Lisp | _not complete_ | _not complete_ | [cl-webui](https://github.com/garlic0x1/cl-webui) |
+| Delphi | _not complete_ | _not complete_ | [WebUI4Delphi](https://github.com/salvadordf/WebUI4Delphi) |
+| C# | _not complete_ | _not complete_ | [WebUI4CSharp](https://github.com/salvadordf/WebUI4CSharp) |
+| WebUI.NET | _not complete_ | _not complete_ | [WebUI.NET](https://github.com/Juff-Ma/WebUI.NET) |
+| QuickJS | _not complete_ | _not complete_ | [QuickUI](https://github.com/xland/QuickUI) |
+| PHP | _not complete_ | _not complete_ | [PHPWebUiComposer](https://github.com/KingBes/php-webui-composer) |
+
+## Supported Web Browsers
+
+| Browser | Windows | macOS | Linux |
+| --------------- | --------------- | ------------- | --------------- |
+| Mozilla Firefox | ✔️ | ✔️ | ✔️ |
+| Google Chrome | ✔️ | ✔️ | ✔️ |
+| Microsoft Edge | ✔️ | ✔️ | ✔️ |
+| Chromium | ✔️ | ✔️ | ✔️ |
+| Yandex | ✔️ | ✔️ | ✔️ |
+| Brave | ✔️ | ✔️ | ✔️ |
+| Vivaldi | ✔️ | ✔️ | ✔️ |
+| Epic | ✔️ | ✔️ | _not available_ |
+| Apple Safari | _not available_ | _coming soon_ | _not available_ |
+| Opera | _coming soon_ | _coming soon_ | _coming soon_ |
+
+## Supported WebView
+
+| WebView | Status |
+| --------------- | --------------- |
+| Windows WebView2 | ✔️ |
+| Linux GTK WebView | ✔️ |
+| macOS WKWebView | ✔️ |
+
+### License
+
+> Licensed under MIT License.
+
+### Stargazers
+
+[](https://github.com/webui-dev/webui/stargazers)
diff --git a/v2/webui/bridge/.gitignore b/v2/webui/bridge/.gitignore
new file mode 100644
index 0000000..7f8774d
--- /dev/null
+++ b/v2/webui/bridge/.gitignore
@@ -0,0 +1,6 @@
+# Do not track Nodejs output files
+node_modules/
+*.json
+
+# Do not track js2c.py output files
+webui.js
diff --git a/v2/webui/bridge/README.md b/v2/webui/bridge/README.md
new file mode 100644
index 0000000..03f2512
--- /dev/null
+++ b/v2/webui/bridge/README.md
@@ -0,0 +1,47 @@
+# WebUI Bridge
+
+The WebUI Bridge connects the UI (_Web Browser_) with the backend application through WebSocket. This bridge is written in TypeScript, and it needs to be transpiled to JavaScript using [ESBuild](https://esbuild.github.io/) to produce `webui.js`, then converted to C header using the Node script `js2c.js` to generate `webui_bridge.h`.
+
+### Windows
+
+- Install [Python](https://www.python.org/downloads/)
+- Install [Node.js](https://nodejs.org/en/download)
+- cd `webui\bridge`
+- `npm install esbuild`
+- `.\node_modules\.bin\esbuild --bundle --target="chrome90,firefox90,safari15" --format=esm --tree-shaking=false --outdir=.\ .\webui.ts`
+- `node js2c.js`
+
+### Windows PowerShell
+
+- cd `webui\bridge`
+- `build.bat`
+- If you get _running scripts is disabled on this
+ system_ error. Then run `Set-ExecutionPolicy RemoteSigned` to enable script execution. After done, you can roll back by running `Set-ExecutionPolicy Restricted`
+
+### Linux
+
+- Install [Python](https://www.python.org/downloads/)
+- Install [Node.js](https://nodejs.org/en/download)
+- cd `webui/bridge`
+- `npm install esbuild`
+- `./node_modules/.bin/esbuild --bundle --target="chrome90,firefox90,safari15" --format=esm --tree-shaking=false --outdir=./ ./webui.ts`
+- `node js2c.js`
+
+### Linux Bash
+
+- cd `webui\bridge`
+- sh `./build.sh`
+
+### macOS
+
+- Install [Python](https://www.python.org/downloads/)
+- Install [Node.js](https://nodejs.org/en/download)
+- cd `webui/bridge`
+- `npm install esbuild`
+- `./node_modules/.bin/esbuild --bundle --target="chrome90,firefox90,safari15" --format=esm --tree-shaking=false --outdir=./ ./webui.ts`
+- `node js2c.js`
+
+### macOS Bash
+
+- cd `webui\bridge`
+- sh `./build.sh`
diff --git a/v2/webui/bridge/build.bat b/v2/webui/bridge/build.bat
new file mode 100644
index 0000000..dfd08e2
--- /dev/null
+++ b/v2/webui/bridge/build.bat
@@ -0,0 +1,29 @@
+@echo off
+SETLOCAL EnableDelayedExpansion
+
+REM Get current location and project root
+cd %~dp0
+FOR /F "tokens=*" %%i IN ('git rev-parse --show-toplevel') DO SET project_root=%%i
+cd %project_root%/bridge
+
+REM Check if node_modules\esbuild exists, if not, install using npm
+IF NOT EXIST "%project_root%\bridge\node_modules\esbuild\" (
+ where npm > NUL 2>&1
+ IF %errorlevel%==0 (
+ echo Installing esbuild...
+ npm install --prefix ./ esbuild
+ ) ELSE (
+ echo Error: Please install NPM.
+ cd %cd%
+ exit /b
+ )
+)
+
+REM Transpile WebUI-Bridge (TS to JS) & Convert WebUI-Bridge (JS to C)
+echo Transpile and bundle WebUI-Bridge from TypeScript to JavaScript...
+.\node_modules\.bin\esbuild --bundle --target="chrome90,firefox90,safari15" --format=esm --tree-shaking=false --minify-syntax --minify-whitespace --outdir=. ./webui.ts & node js2c.js
+
+echo Done.
+cd %cd%
+
+ENDLOCAL
diff --git a/v2/webui/bridge/build.sh b/v2/webui/bridge/build.sh
new file mode 100755
index 0000000..1e266d0
--- /dev/null
+++ b/v2/webui/bridge/build.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# Special Thanks to Turiiya (https://github.com/ttytm)
+
+project_root=$(git rev-parse --show-toplevel)
+cd $project_root/bridge
+
+echo "Transpile and bundle TS sources to webui.js"
+esbuild --bundle --target="chrome90,firefox90,safari15" --format=esm --tree-shaking=false --minify-syntax --minify-whitespace --outdir=. ./webui.ts
+
+echo "Convert JS source to C header"
+node js2c.js
+
+echo "Done."
diff --git a/v2/webui/bridge/js2c.js b/v2/webui/bridge/js2c.js
new file mode 100644
index 0000000..c21ad21
--- /dev/null
+++ b/v2/webui/bridge/js2c.js
@@ -0,0 +1,43 @@
+// WebUI v2.5.0-beta.4
+// https://webui.me
+// https://github.com/webui-dev/webui
+// Copyright (c) 2020-2026 Hassan Draga.
+// Licensed under MIT License.
+// All rights reserved.
+// Canada.
+
+async function jsToCHeader(inputFilename, outputFilename) {
+ try {
+ console.log(`Converting '${inputFilename}' to '${outputFilename}'...`);
+ // Comment block
+ const comment = `// WebUI v2.5.0-beta.4\n// https://webui.me\n// https://github.com/webui-dev/webui\n// Copyright (c) 2020-2026 Hassan Draga.\n// Licensed under MIT License.\n// All rights reserved.\n// Canada.\n\n`;
+ // Read JS file content
+ const fs = require('fs').promises;
+ let content = await fs.readFile(inputFilename, 'utf-8');
+ // Add comment to js
+ let newContent = comment + content;
+ await fs.writeFile(inputFilename, newContent);
+ // Convert each character in JS content to its hexadecimal value
+ const hexValues = [...newContent].map(char => `0x${char.charCodeAt(0).toString(16).padStart(2, '0')}`);
+ // Prepare the content for the C header file
+ let headerContent = `${comment}// --- PLEASE DO NOT EDIT THIS FILE -------\n// --- THIS FILE IS GENERATED BY JS2C.JS --\n\n`;
+ headerContent += `#ifndef WEBUI_BRIDGE_H\n#define WEBUI_BRIDGE_H\n`;
+ headerContent += `unsigned char webui_javascript_bridge[] = { `;
+ // Split the hexadecimal values to make the output more readable, adding a new line every 10 values
+ for (let i = 0; i < hexValues.length; i += 10) {
+ headerContent += "\n " + hexValues.slice(i, i + 10).join(', ') + ',';
+ }
+ headerContent += `\n 0x00\n};\n\n#endif // WEBUI_BRIDGE_H`;
+ // Write the header content to the output file
+ await fs.writeFile(outputFilename, headerContent);
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ console.error(`Error: File '${inputFilename}' not found.`);
+ } else {
+ console.error('An error occurred:', error);
+ }
+ }
+}
+
+// Main
+jsToCHeader('webui.js', 'webui_bridge.h');
diff --git a/v2/webui/bridge/utils.ts b/v2/webui/bridge/utils.ts
new file mode 100644
index 0000000..f60b013
--- /dev/null
+++ b/v2/webui/bridge/utils.ts
@@ -0,0 +1,56 @@
+/*
+ https://webui.me
+ https://github.com/webui-dev/webui
+ Copyright (c) 2020-2026 Hassan Draga.
+ Licensed under MIT License.
+ All rights reserved.
+ Canada.
+
+ File: WebUI Bridge Utils
+ Copyright (c) 2024 Oculi Julien.
+*/
+
+/**
+ * Allows you to automatically bind an event listener to newly added
+ * elements that match a specific selector within a given root element.
+ * Track dom update to rebind event listeners automatically.
+ *
+ * @param {HTMLElement} root - The root element to observe for changes.
+ * @param {string} targetSelector - Query selector matching elements that you want to bind the event listener to.
+ * @param {K} type - Type of event listener to bind (same as for addEventListener).
+ * @param listener - Event listener to bind (same as for addEventListener).
+ * @param {boolean | AddEventListenerOptions} [options] - Event listener options (same as for addEventListener).
+ * @returns the used observer to allow disconnect.
+ */
+export function addRefreshableEventListener(
+ root: HTMLElement,
+ targetSelector: string,
+ type: K,
+ listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown,
+ options?: boolean | AddEventListenerOptions,
+) {
+ function rebindListener(mutations: MutationRecord[]) {
+ for (const mutation of mutations) {
+ for (const node of mutation.addedNodes) {
+ if (!(node instanceof HTMLElement)) return; // Target only html elements
+ if (node.matches(targetSelector)) {
+ // Bind event on added nodes
+ node.addEventListener(type, listener, options);
+ }
+ for (const child of node.querySelectorAll(targetSelector)) {
+ if (!(child instanceof HTMLElement)) continue; //Target only html elements
+ child.addEventListener(type, listener, options);
+ }
+ }
+ }
+ }
+
+ const observer = new MutationObserver(rebindListener); //Set mutation observer callback
+ observer.observe(root, { subtree: true, childList: true }); // Observe root element and all his children
+ return observer; // Allow user to stop observer for performance issues
+}
+
+/**
+ * Async function constructor
+ */
+export const AsyncFunction = async function () {}.constructor;
diff --git a/v2/webui/bridge/webui.ts b/v2/webui/bridge/webui.ts
new file mode 100644
index 0000000..804c849
--- /dev/null
+++ b/v2/webui/bridge/webui.ts
@@ -0,0 +1,1025 @@
+'use-strict'; // Force strict mode for transpiled
+
+/*
+ WebUI Bridge
+
+ https://webui.me
+ https://github.com/webui-dev/webui
+ Copyright (c) 2020-2026 Hassan Draga.
+ Licensed under MIT License.
+ All rights reserved.
+ Canada.
+
+ Converted from JavaScript to TypeScript
+ By Oculi Julien. Copyright (c) 2023.
+*/
+
+//@ts-ignore use *.ts import real extension
+import { AsyncFunction, addRefreshableEventListener } from './utils.ts';
+
+type DataTypes = string | number | boolean | Uint8Array;
+
+class WebuiBridge {
+ // WebUI Settings
+ #secure: boolean;
+ #token: number;
+ #port: number;
+ #log: boolean;
+ #winX: number;
+ #winY: number;
+ #winW: number;
+ #winH: number;
+ #customWindowDrag: boolean;
+ // Frameless Dragging
+ #enableCustomDragging: boolean = false;
+ #isDragging: boolean = false;
+ #initialMouseX: number = 0;
+ #initialMouseY: number = 0;
+ #initialWindowX: number = window.screenX || window.screenLeft;
+ #initialWindowY: number = window.screenY || window.screenTop;
+ #currentWindowX: number = window.screenX || window.screenLeft;
+ #currentWindowY: number = window.screenY || window.screenTop;
+ // Internals
+ #ws: WebSocket;
+ #wsStayAlive: boolean = true;
+ #wsStayAliveTimeout: number = 500;
+ #wsWasConnected: boolean = false;
+ #TokenAccepted: boolean = false;
+ #closeReason: number = 0;
+ #closeValue: string;
+ #AllEvents: boolean = false;
+ #callPromiseID: Uint16Array = new Uint16Array(1);
+ #callPromiseResolve: (((data: string) => unknown) | undefined)[] = [];
+ #allowNavigation: boolean = true;
+ #sendQueue: Uint8Array[] = [];
+ #isSending: boolean = false;
+ #bindsList: string[];
+ // WebUI Const
+ #WEBUI_SIGNATURE: number = 221;
+ #CMD_JS: number = 254;
+ #CMD_JS_QUICK: number = 253;
+ #CMD_CLICK: number = 252;
+ #CMD_NAVIGATION: number = 251;
+ #CMD_CLOSE: number = 250;
+ #CMD_CALL_FUNC: number = 249;
+ #CMD_SEND_RAW: number = 248;
+ #CMD_NEW_ID: number = 247;
+ #CMD_MULTI: number = 246;
+ #CMD_CHECK_TK: number = 245;
+ #CMD_WINDOW_DRAG: number = 244;
+ #CMD_WINDOW_RESIZED: number = 243;
+ #MULTI_CHUNK_SIZE: number = 65500;
+ #PROTOCOL_SIZE: number = 8; // Protocol header size in bytes
+ #PROTOCOL_SIGN: number = 0; // Protocol byte position: Signature (1 Byte)
+ #PROTOCOL_TOKEN: number = 1; // Protocol byte position: Token (4 Bytes)
+ #PROTOCOL_ID: number = 5; // Protocol byte position: ID (2 Bytes)
+ #PROTOCOL_CMD: number = 7; // Protocol byte position: Command (1 Byte)
+ #PROTOCOL_DATA: number = 8; // Protocol byte position: Data (n Byte)
+ #Token: Uint32Array = new Uint32Array(1);
+ #Ping: Boolean = true;
+ // Events
+ #eventsCallback: ((event: number) => void) | null = null;
+ #lastEvent: number = -1;
+ event = {
+ // TODO: Make `event` static and solve the ESBUILD `_WebuiBridge` issue.
+ CONNECTED: 0,
+ DISCONNECTED: 1,
+ };
+ // Constructor
+ constructor({
+ secure = false,
+ token = 0,
+ port = 0,
+ log = false,
+ winX = 0,
+ winY = 0,
+ winW = 0,
+ winH = 0,
+ customWindowDrag = false
+ }: {
+ secure: boolean;
+ token: number;
+ port: number;
+ log?: boolean;
+ winX: number;
+ winY: number;
+ winW: number;
+ winH: number;
+ customWindowDrag: boolean;
+ }) {
+ // Constructor arguments are injected by webui.c
+ this.#secure = secure;
+ this.#token = token;
+ this.#port = port;
+ this.#log = log;
+ this.#winX = winX;
+ this.#winY = winY;
+ this.#winW = winW;
+ this.#winH = winH;
+ this.#enableCustomDragging = customWindowDrag;
+ // Token
+ this.#Token[0] = this.#token;
+ // Instance
+ if ('webui' in globalThis) {
+ throw new Error('Sorry. WebUI is already defined, only one instance is allowed.');
+ }
+ // Positioning the current window
+ if (this.#winX !== undefined && this.#winY !== undefined) {
+ // window.moveTo(this.#winX, this.#winY);
+ }
+ // Resize the current window
+ if (this.#winW !== undefined && this.#winH !== undefined) {
+ // window.resizeTo(this.#winW, this.#winH);
+ }
+ // WebSocket
+ if (!('WebSocket' in window)) {
+ this.#showWarning('WebSocket is not supported by your web browser');
+ if (!this.#log) globalThis.close();
+ }
+ // Connect to the backend application
+ this.#start();
+ // Navigation event listener
+ if ('navigation' in globalThis) {
+ globalThis.navigation.addEventListener('navigate', (event) => {
+ if (!this.#allowNavigation) {
+ if (this.#AllEvents && (this.#wsIsConnected())) {
+ event.preventDefault();
+ const url = new URL(event.destination.url);
+ if (this.#log) console.log(`WebUI -> DOM -> Navigation Event [${url.href}]`);
+ this.#sendEventNavigation(url.href);
+ }
+ }
+ });
+ } else {
+ // Click navigation event listener
+ addRefreshableEventListener(document.body, 'a', 'click', (event) => {
+ if (!this.#allowNavigation) {
+ if (this.#AllEvents && (this.#wsIsConnected())) {
+ event.preventDefault();
+ const { href } = event.target as HTMLAnchorElement;
+ if (this.#log) console.log(`WebUI -> DOM -> Navigation Click Event [${href}]`);
+ this.#sendEventNavigation(href);
+ }
+ }
+ });
+ }
+ // Prevent F5 refresh
+ document.addEventListener('keydown', (event) => {
+ if (this.#log) return; // Allowed in debug mode
+ if (event.key === 'F5') event.preventDefault();
+ });
+ // Frameless Dragging
+ if (this.#enableCustomDragging) {
+ document.addEventListener("mousemove", (e) => {
+ // WebUI Webkit App-Region Custom Implementation
+ if (e.buttons !== 1) {
+ this.#isDragging = false;
+ return;
+ }
+ if (!this.#isDragging) {
+ let target = e.target;
+ while (target) {
+ let computedStyle = window.getComputedStyle(target);
+ let webuiComputed = computedStyle.getPropertyValue("--webui-app-region").trim();
+ if (webuiComputed === "drag") {
+ this.#initialMouseX = e.screenX;
+ this.#initialMouseY = e.screenY;
+ this.#initialWindowX = this.#currentWindowX;
+ this.#initialWindowY = this.#currentWindowY;
+ this.#isDragging = true;
+ break;
+ }
+ target = target.parentElement;
+ }
+ return;
+ }
+ // Calculate window position relative to cursor movement
+ const deltaX = e.screenX - this.#initialMouseX;
+ const deltaY = e.screenY - this.#initialMouseY;
+ let newX = this.#initialWindowX + deltaX;
+ let newY = this.#initialWindowY + deltaY;
+ // Fix out of screen
+ if (newX < 0) newX = 0;
+ if (newY < 0) newY = 0;
+ // Move the window
+ this.#sendDrag(newX, newY);
+ // Update the last window position
+ this.#currentWindowX = newX;
+ this.#currentWindowY = newY;
+ });
+ // Stop frameless dragging on mouse release
+ document.addEventListener("mouseup", () => {
+ this.#isDragging = false;
+ });
+ }
+ onbeforeunload = () => {
+ this.#close();
+ };
+ setTimeout(() => {
+ if (!this.#wsWasConnected) {
+ this.#showWarning('Failed to connect to the backend application');
+ }
+ }, 5000);
+ }
+ // Methods
+ #close(reason = 0, value = '') {
+ this.#closeReason = reason;
+ this.#closeValue = value;
+ if (this.#wsIsConnected()) {
+ this.#ws.close();
+ }
+ }
+ #showWarning(msg: string) {
+ setTimeout(() => {
+ if (!this.#wsIsConnected()) {
+ if (document.getElementById('webui-error-connection-lost')) return;
+ const div = document.createElement('div');
+ div.id = 'webui-error-connection-lost';
+ Object.assign(div.style, {
+ position: 'fixed',
+ top: '0',
+ left: '0',
+ width: '100%',
+ backgroundColor: 'rgb(191 125 30 / 84%)',
+ color: '#fff',
+ textAlign: 'center',
+ padding: '4px 0',
+ fontFamily: 'Arial, sans-serif',
+ fontSize: '16px',
+ zIndex: '9000',
+ lineHeight: '1'
+ });
+ div.innerHTML = 'Error: ' + msg + ' - WebUI 2.5.0-beta.4 ';
+ document.body.insertBefore(div, document.body.firstChild);
+ }
+ }, 1000);
+ }
+ #freezeUi() {
+ if (this.#eventsCallback == null) {
+ // Show default WebUI warning as we
+ // don't have a user event callback.
+ this.#showWarning('Connection with the backend is lost');
+ }
+ }
+ #unfreezeUI() {
+ const div = document.getElementById('webui-error-connection-lost');
+ if (div) {
+ div.remove();
+ }
+ }
+ #isTextBasedCommand(cmd: number): Boolean {
+ if (cmd !== this.#CMD_SEND_RAW) return true;
+ return false;
+ }
+ #parseDimensions(input: string): {x: number; y: number; width: number; height: number} {
+ try {
+ const parts = input.split(',');
+ if (parts.length !== 4) return {x: 0, y: 0, width: 0, height: 0};
+ const x = parseFloat(parts[0]),
+ y = parseFloat(parts[1]),
+ width = parseFloat(parts[2]),
+ height = parseFloat(parts[3]);
+ return [x, y, width, height].some(isNaN) ? {x: 0, y: 0, width: 0, height: 0} : {x, y, width, height};
+ } catch {
+ return {x: 0, y: 0, width: 0, height: 0};
+ }
+ }
+ #getDataStrFromPacket(buffer: Uint8Array, startIndex: number): string {
+ let stringBytes: number[] = [];
+ for (let i = startIndex; i < buffer.length; i++) {
+ if (buffer[i] === 0) {
+ // Check for null byte
+ break;
+ }
+ stringBytes.push(buffer[i]);
+ }
+ // Convert the array of bytes to a string
+ const stringText = new TextDecoder().decode(new Uint8Array(stringBytes));
+ return stringText;
+ }
+ #getID(buffer: Uint8Array, index: number): number {
+ if (index < 0 || index >= buffer.length - 1) {
+ throw new Error('Index out of bounds or insufficient data.');
+ }
+ const firstByte = buffer[index];
+ const secondByte = buffer[index + 1];
+ const combined = (secondByte << 8) | firstByte; // Works only for little-endian
+ return combined;
+ }
+ #addToken(buffer: Uint8Array, value: number, index: number): void {
+ if (value < 0 || value > 0xffffffff) {
+ throw new Error('Number is out of the range for 4 bytes representation.');
+ }
+ if (index < 0 || index > buffer.length - 4) {
+ throw new Error('Index out of bounds or insufficient space in buffer.');
+ }
+ // WebUI expect Little-endian (Work for Little/Big endian platforms)
+ buffer[index] = value & 0xff; // Least significant byte
+ buffer[index + 1] = (value >>> 8) & 0xff;
+ buffer[index + 2] = (value >>> 16) & 0xff;
+ buffer[index + 3] = (value >>> 24) & 0xff; // Most significant byte
+ }
+ #addID(buffer: Uint8Array, value: number, index: number): void {
+ if (value < 0 || value > 0xffff) {
+ throw new Error('Number is out of the range for 2 bytes representation.');
+ }
+ if (index < 0 || index > buffer.length - 2) {
+ throw new Error('Index out of bounds or insufficient space in buffer.');
+ }
+ // WebUI expect Little-endian (Work for Little/Big endian platforms)
+ buffer[index] = value & 0xff; // Least significant byte
+ buffer[index + 1] = (value >>> 8) & 0xff; // Most significant byte
+ }
+ #start() {
+ this.#keepAlive();
+ this.#callPromiseID[0] = 0;
+ // Connect to the backend application
+ this.#wsConnect();
+ }
+ #keepAlive = async () => {
+ while (true) {
+ if (this.#Ping) {
+ // Some web browsers may close the connection
+ // let's send a void message to keep WS open
+ this.#sendData(new TextEncoder().encode('ping'));
+ } else {
+ // There is an active communication
+ this.#Ping = true;
+ }
+ await new Promise((resolve) => setTimeout(resolve, 20000));
+ }
+ };
+ #clicksListener() {
+ document.querySelectorAll("[id]").forEach(e => {
+ if (this.#AllEvents || ((e.id !== '') && (this.#bindsList.includes(e.id)))) {
+ if (e.id && !e.dataset.webui_click_is_set) {
+ e.dataset.webui_click_is_set = "true";
+ e.addEventListener("click", () => this.#sendClick(e.id));
+ }
+ }
+ });
+ }
+ async #sendData(packet: Uint8Array) {
+ this.#Ping = false;
+ if ((!this.#wsIsConnected()) || packet === undefined) return;
+ // Enqueue the packet
+ this.#sendQueue.push(packet);
+ if (this.#isSending) return;
+ this.#isSending = true;
+ while (this.#sendQueue.length > 0) {
+ const currentPacket = this.#sendQueue.shift()!;
+ if (currentPacket.length < this.#MULTI_CHUNK_SIZE) {
+ this.#ws.send(currentPacket.buffer);
+ } else {
+ // Pre-packet to let WebUI be ready for multi packet
+ const pre_packet = Uint8Array.of(
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_MULTI,
+ ...new TextEncoder().encode(currentPacket.length.toString()),
+ 0,
+ );
+ this.#ws.send(pre_packet.buffer);
+ // Send chunks
+ let offset = 0;
+ const sendChunk = async () => {
+ if (offset < currentPacket.length) {
+ const chunkSize = Math.min(this.#MULTI_CHUNK_SIZE, currentPacket.length - offset);
+ const chunk = currentPacket.subarray(offset, offset + chunkSize);
+ this.#ws.send(chunk);
+ offset += chunkSize;
+ await sendChunk();
+ }
+ };
+ await sendChunk();
+ }
+ }
+ this.#isSending = false;
+ }
+ #sendClick(elem: string) {
+ if (this.#wsIsConnected()) {
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Element]
+ const packet =
+ elem !== ''
+ ? Uint8Array.of(
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_CLICK,
+ ...new TextEncoder().encode(elem),
+ 0,
+ )
+ : Uint8Array.of(
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_CLICK,
+ 0,
+ );
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ // this.#addID(packet, 0, this.#PROTOCOL_ID)
+ this.#sendData(packet);
+ if (this.#log) console.log(`WebUI -> Send Click [${elem}]`);
+ }
+ }
+ #checkToken() {
+ if (this.#wsIsConnected()) {
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ const packet =
+ Uint8Array.of(
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_CHECK_TK,
+ 0,
+ );
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ // this.#addID(packet, 0, this.#PROTOCOL_ID)
+ this.#sendData(packet);
+ if (this.#log) console.log(`WebUI -> Send Token [0x${this.#token.toString(16).padStart(8, '0')}]`);
+ }
+ }
+ #sendEventNavigation(url: string) {
+ if (url !== '') {
+ if (this.#wsIsConnected()) {
+ if (this.#log) console.log(`WebUI -> Send Navigation Event [${url}]`);
+ const packet = Uint8Array.of(
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [URL]
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_NAVIGATION,
+ ...new TextEncoder().encode(url),
+ );
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ // this.#addID(packet, 0, this.#PROTOCOL_ID)
+ this.#sendData(packet);
+ }
+ }
+ }
+ #sendDrag(x: number, y: number) {
+ if (this.#wsIsConnected()) {
+ if (this.#log) console.log(`WebUI -> Send Drag Event [${x}, ${y}]`);
+ const packet = Uint8Array.of(
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [X]
+ // 4: [Y]
+ this.#WEBUI_SIGNATURE,
+ 0,
+ 0,
+ 0,
+ 0, // Token (4 Bytes)
+ 0,
+ 0, // ID (2 Bytes)
+ this.#CMD_WINDOW_DRAG,
+ ...new Uint8Array(new Int32Array([x]).buffer), // X (4 Bytes)
+ ...new Uint8Array(new Int32Array([y]).buffer), // Y (4 Bytes)
+ );
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ // this.#addID(packet, 0, this.#PROTOCOL_ID)
+ this.#sendData(packet);
+ }
+ }
+ #closeWindowTimer() {
+ setTimeout(function () {
+ globalThis.close();
+ }, 1000);
+ }
+ #updateBindsList() {
+ if (this.#bindsList.includes('')) {
+ this.#AllEvents = true;
+ this.#allowNavigation = false;
+ }
+ this.#generateCallObjects();
+ this.#clicksListener();
+ }
+ #toUint16(value: number): number {
+ return value & 0xffff;
+ }
+ #generateCallObjects() {
+ for (const bind of this.#bindsList) {
+ if (bind.trim()) {
+ const fn = bind;
+ if (fn.trim()) {
+ if (fn !== '__webui_core_api__') {
+ if (typeof (window as any)[fn] === 'undefined') {
+ this[fn] = (...args: DataTypes[]) => this.call(fn, ...args);
+ (window as any)[fn] = (...args: string[]) => this.call(fn, ...args);
+ if (this.#log) console.log(`WebUI -> Binding backend function [${fn}]`);
+ }
+ }
+ }
+ }
+ }
+ }
+ #getScriptUrl() {
+ const scripts = Array.from(document.scripts)
+ .filter(s => s.src !== null && s.src.startsWith('http') && s.src.endsWith('webui.js'))
+ .map(s => s.src);
+ return scripts.length === 0 ? null : new URL(scripts[0]);
+ }
+ #callPromise(fn: string, ...args: DataTypes[]) {
+ --this.#callPromiseID[0];
+ const callId = this.#toUint16(this.#callPromiseID[0]);
+ // Combine lengths
+ let argsLengths = args
+ .map((arg) => {
+ if (typeof arg === 'object') {
+ // Uint8Array
+ return arg.length;
+ } else {
+ // string, number, boolean
+ return new TextEncoder().encode(arg.toString()).length;
+ }
+ })
+ .join(';');
+ // Combine values
+ let argsValues: Uint8Array = new Uint8Array();
+ for (const arg of args) {
+ let buffer: Uint8Array;
+ if (typeof arg === 'object') {
+ buffer = arg; // Uint8Array
+ } else {
+ // string, number, boolean
+ buffer = new TextEncoder().encode(arg.toString());
+ }
+ const temp = new Uint8Array(argsValues.length + buffer.length + 1);
+ temp.set(argsValues, 0);
+ temp.set(buffer, argsValues.length);
+ temp[argsValues.length + buffer.length] = 0x00;
+ argsValues = temp;
+ }
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Fn, Null, {LenLen...}, Null, {Data,Null,Data,Null...}]
+ let packet = new Uint8Array(0);
+ const packetPush = (data: Uint8Array) => {
+ const newPacket = new Uint8Array(packet.length + data.length);
+ newPacket.set(packet);
+ newPacket.set(data, packet.length);
+ packet = newPacket;
+ };
+ packetPush(new Uint8Array([this.#WEBUI_SIGNATURE]));
+ packetPush(new Uint8Array([0, 0, 0, 0])); // Token (4 Bytes)
+ packetPush(new Uint8Array([0, 0])); // ID (2 Bytes)
+ packetPush(new Uint8Array([this.#CMD_CALL_FUNC]));
+ packetPush(new TextEncoder().encode(fn));
+ packetPush(new Uint8Array([0]));
+ packetPush(new TextEncoder().encode(argsLengths));
+ packetPush(new Uint8Array([0]));
+ packetPush(new Uint8Array(argsValues));
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ this.#addID(packet, callId, this.#PROTOCOL_ID);
+ return new Promise((resolve) => {
+ this.#callPromiseResolve[callId] = resolve;
+ this.#sendData(packet);
+ });
+ }
+ async callCore(fn: string, ...args: DataTypes[]): Promise {
+ return this.call('__webui_core_api__', fn, ...args);
+ }
+ // -- WebSocket ----------------------------
+ #wsIsConnected(): boolean {
+ return ((this.#ws) && (this.#ws.readyState === WebSocket.OPEN));
+ }
+ #wsConnect(): void {
+ if (this.#wsIsConnected()) {
+ this.#ws.close();
+ }
+ this.#TokenAccepted = false;
+ const scriptUrl = this.#getScriptUrl();
+ const host = scriptUrl !== null ? scriptUrl.hostname : window.location.hostname;
+ const url = this.#secure ? ('wss://' + host) : ('ws://' + host);
+ this.#ws = new WebSocket(`${url}:${this.#port}/_webui_ws_connect`);
+ this.#ws.binaryType = 'arraybuffer';
+ this.#ws.onopen = this.#wsOnOpen.bind(this);
+ this.#ws.onmessage = this.#wsOnMessage.bind(this);
+ this.#ws.onclose = this.#wsOnClose.bind(this);
+ this.#ws.onerror = this.#wsOnError.bind(this);
+ }
+ #wsOnOpen = (event: Event) => {
+ this.#wsWasConnected = true;
+ this.#unfreezeUI();
+ if (this.#log) console.log('WebUI -> Connected');
+ this.#checkToken();
+ };
+ #wsOnError = (event: Event) => {
+ if (this.#log) console.log(`WebUI -> Connection failed.`);
+ };
+ #wsOnClose = (event: CloseEvent) => {
+ if (this.#closeReason === this.#CMD_NAVIGATION) {
+ this.#closeReason = 0;
+ if (this.#log) console.log(`WebUI -> Connection lost. Navigation to [${this.#closeValue}]`);
+ this.#allowNavigation = true;
+ globalThis.location.replace(this.#closeValue);
+ } else {
+ if (this.#wsStayAlive) {
+ // Re-connect
+ if (this.#log) console.log(`WebUI -> Connection lost (${event.code}). Reconnecting...`);
+ this.#freezeUi();
+ setTimeout(() => this.#wsConnect(), this.#wsStayAliveTimeout);
+ }
+ else if (this.#log) {
+ // Debug close
+ console.log(`WebUI -> Connection lost (${event.code})`);
+ this.#freezeUi();
+ } else {
+ // Release close
+ this.#closeWindowTimer();
+ }
+ }
+ // Event Callback
+ this.#userEventCallback(this.event.DISCONNECTED);
+ };
+ #userEventCallback = (e: number) => {
+ if (this.#eventsCallback) {
+ if (e != this.#lastEvent) {
+ this.#lastEvent = e;
+ this.#eventsCallback(e);
+ }
+ }
+ }
+ #wsOnMessage = async (event: MessageEvent) => {
+ const buffer8 = new Uint8Array(event.data);
+ if (buffer8.length < this.#PROTOCOL_SIZE) return;
+ if (buffer8[this.#PROTOCOL_SIGN] !== this.#WEBUI_SIGNATURE) return;
+ if (this.#isTextBasedCommand(buffer8[this.#PROTOCOL_CMD])) {
+ // UTF8 Text based commands
+ const callId = this.#getID(buffer8, this.#PROTOCOL_ID);
+ // Process Command
+ switch (buffer8[this.#PROTOCOL_CMD]) {
+ case this.#CMD_JS_QUICK:
+ case this.#CMD_JS:
+ {
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Script]
+ const script: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ const scriptSanitize = script.replace(/(?:\r\n|\r|\n)/g, '\n');
+ if (this.#log) console.log(`WebUI -> CMD -> JS [${scriptSanitize}]`);
+ // Get callback result
+ let FunReturn: string | Uint8Array = 'undefined';
+ let FunError = false;
+ let isBinaryReturn = false;
+ try {
+ const result = await AsyncFunction(scriptSanitize)();
+ if (result instanceof Uint8Array) {
+ FunReturn = result;
+ isBinaryReturn = true;
+ } else {
+ FunReturn = String(result);
+ }
+ } catch (e) {
+ FunError = true;
+ FunReturn = e.message;
+ }
+ // Stop if this is a quick call
+ if (buffer8[this.#PROTOCOL_CMD] === this.#CMD_JS_QUICK) return;
+ // Get the call return
+ if (FunReturn === undefined) {
+ FunReturn = 'undefined';
+ }
+ // Logging
+ if (this.#log && !FunError) {
+ if (isBinaryReturn) {
+ const binaryData = FunReturn as Uint8Array;
+ const hexPreview = Array.from(binaryData.slice(0, 64)).map(b => `0x${b.toString(16).padStart(2, '0')}`).join(', ');
+ console.log(`WebUI -> CMD -> JS -> Return Success (${binaryData.length} Bytes) [${hexPreview}${binaryData.length > 64 ? '...' : ''}]`);
+ } else {
+ const stringData = String(FunReturn);
+ console.log(`WebUI -> CMD -> JS -> Return Success (${new TextEncoder().encode(stringData).length} Bytes) [${stringData.substring(0, 64)}${stringData.length > 64 ? '...' : ''}]`);
+ }
+ }
+ else if (this.#log && FunError) {
+ const errorString = String(FunReturn);
+ console.log(`WebUI -> CMD -> JS -> Return Error [${errorString.substring(0, 64)}${errorString.length > 64 ? '...' : ''}]`);
+ }
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Error, Script Response]
+ let packet = new Uint8Array(0);
+ const packetPush = (data: Uint8Array) => {
+ const newPacket = new Uint8Array(packet.length + data.length);
+ newPacket.set(packet);
+ newPacket.set(data, packet.length);
+ packet = newPacket;
+ };
+ const packetPushStr = (data: string) => {
+ const chunkSize = 1024 * 8;
+ if (data.length > chunkSize) {
+ const encoder = new TextEncoder();
+ for (let i = 0; i < data.length; i += chunkSize) {
+ const chunk = data.substring(i, Math.min(i + chunkSize, data.length));
+ const encodedChunk = encoder.encode(chunk);
+ packetPush(encodedChunk);
+ }
+ } else {
+ packetPush(new TextEncoder().encode(data));
+ }
+ };
+ packetPush(new Uint8Array([this.#WEBUI_SIGNATURE]));
+ packetPush(new Uint8Array([0, 0, 0, 0])); // Token (4 Bytes)
+ packetPush(new Uint8Array([0, 0])); // ID (2 Bytes)
+ packetPush(new Uint8Array([this.#CMD_JS]));
+ packetPush(new Uint8Array(FunError ? [1] : [0]));
+ if (isBinaryReturn) {
+ packetPush(FunReturn as Uint8Array);
+ } else {
+ packetPushStr(FunReturn as string);
+ }
+ packetPush(new Uint8Array([0]));
+ this.#addToken(packet, this.#token, this.#PROTOCOL_TOKEN);
+ this.#addID(packet, callId, this.#PROTOCOL_ID);
+ this.#sendData(packet);
+ }
+ break;
+ case this.#CMD_CALL_FUNC:
+ {
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Call Response]
+ const callResponse: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ if (this.#log) {
+ console.log(`WebUI -> CMD -> Call Response [${callResponse}]`);
+ }
+ if (this.#callPromiseResolve[callId]) {
+ if (this.#log) {
+ console.log(`WebUI -> CMD -> Resolving Response #${callId}...`);
+ }
+ this.#callPromiseResolve[callId]?.(callResponse);
+ this.#callPromiseResolve[callId] = undefined;
+ }
+ }
+ break;
+ case this.#CMD_NAVIGATION:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [URL]
+ const url: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ if (this.#log) console.log(`WebUI -> CMD -> Navigation [${url}]`);
+ this.#close(this.#CMD_NAVIGATION, url);
+ break;
+ case this.#CMD_WINDOW_RESIZED:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [x,y,width,height]
+ const widthAndHeight: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ const { x, y, width, height } = this.#parseDimensions(widthAndHeight);
+ // Update drag positions
+ this.#currentWindowX = x;
+ this.#currentWindowY = y;
+ if (this.#log) console.log(`WebUI -> CMD -> Window Resized [x: ${x}, y: ${y}, width: ${width}, height: ${height}]`);
+ break;
+ case this.#CMD_NEW_ID:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [New Element]
+ const newElement: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ if (this.#log) console.log(`WebUI -> CMD -> New Bind ID [${newElement}]`);
+ if (!this.#bindsList.includes(newElement)) this.#bindsList.push(newElement);
+ // Generate objects
+ this.#updateBindsList();
+ break;
+ case this.#CMD_CLOSE:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ if (this.#log) {
+ // Debug Close
+ console.log(`WebUI -> CMD -> Close`);
+ if (this.#wsIsConnected()) {
+ this.#wsStayAlive = false;
+ this.#ws.close();
+ }
+ }
+ else {
+ // Release Close
+ globalThis.close();
+ }
+ break;
+ case this.#CMD_CHECK_TK:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Status]
+ // 5: [BindsList]
+ const status = (buffer8[this.#PROTOCOL_DATA] == 0 ? false : true);
+ const tokenHex = `0x${this.#token.toString(16).padStart(8, '0')}`;
+ if (status) {
+ if (this.#log) console.log(`WebUI -> CMD -> Token [${tokenHex}] Accepted`);
+ this.#TokenAccepted = true;
+ // Get binds list (CSV)
+ let csv: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA + 1);
+ csv = csv.endsWith(',') ? csv.slice(0, -1) : csv;
+ this.#bindsList = csv.split(',');
+ // Generate objects
+ this.#updateBindsList();
+ // User event callback
+ this.#userEventCallback(this.event.CONNECTED);
+ }
+ else {
+ if (this.#log) console.log(`WebUI -> CMD -> Token [${tokenHex}] Not Accepted. Reload page...`);
+ // Refresh the page to get a new token
+ this.#allowNavigation = true;
+ this.#wsStayAlive = false;
+ globalThis.location.reload();
+ }
+ break;
+ }
+ } else {
+ // Raw-binary based commands
+ switch (buffer8[this.#PROTOCOL_CMD]) {
+ case this.#CMD_SEND_RAW:
+ // Protocol
+ // 0: [SIGNATURE]
+ // 1: [TOKEN]
+ // 2: [ID]
+ // 3: [CMD]
+ // 4: [Function,Null,Raw Data]
+ // Get function name
+ const functionName: string = this.#getDataStrFromPacket(buffer8, this.#PROTOCOL_DATA);
+ // Get the raw data
+ const rawDataIndex: number = this.#PROTOCOL_DATA + functionName.length + 1;
+ const rawDataSize: number = (buffer8.length - rawDataIndex) - 1;
+ const userRawData = buffer8.subarray(rawDataIndex, (rawDataIndex + rawDataSize));
+ if (this.#log) console.log(`WebUI -> CMD -> Received Raw ${rawDataSize} bytes for [${functionName}()]`);
+ // Call the user function, and pass the raw data
+ if (typeof window[functionName] === 'function') window[functionName](userRawData);
+ else await AsyncFunction(functionName + '(userRawData)')();
+ break;
+ }
+ }
+ };
+ // -- Public APIs --------------------------
+ /**
+ * Call a backend function
+ *
+ * @param fn - binding name
+ * @param data - data to be send to the backend function
+ * @return - Response of the backend callback string
+ * @example - const res = await webui.call("myID", 123, true, "Hi", new Uint8Array([0x42, 0x43, 0x44]))
+ */
+ async call(fn: string, ...args: DataTypes[]): Promise {
+ if (!fn) return Promise.reject(new SyntaxError('No binding name is provided'));
+
+ if (!this.#wsIsConnected()) return Promise.reject(new Error('WebSocket is not connected'));
+
+ // Check binding list
+ if (fn !== '__webui_core_api__') {
+ if (!this.#AllEvents && !this.#bindsList.includes(`${fn}`))
+ return Promise.reject(new ReferenceError(`No binding was found for "${fn}"`));
+ }
+
+ // Call backend and wait for response
+ if (this.#log) console.log(`WebUI -> Calling [${fn}(...)]`);
+ const response = (await this.#callPromise(fn, ...args)) as string;
+
+ // WebUI lib accept `DataTypes` but return only string
+ if (typeof response !== 'string') return '';
+
+ return response;
+ }
+ /**
+ * Active or deactivate webui debug logging
+ *
+ * @param status - log status to set
+ */
+ setLogging(status: boolean) {
+ if (status) {
+ console.log('WebUI -> Log Enabled.');
+ this.#log = true;
+ } else {
+ console.log('WebUI -> Log Disabled.');
+ this.#log = false;
+ }
+ }
+ /**
+ * Encode text into base64 string
+ *
+ * @param data - text string
+ */
+ encode(data: string): string {
+ return btoa(data);
+ }
+ /**
+ * Decode base64 string into text
+ *
+ * @param data - base64 string
+ */
+ decode(data: string): string {
+ return atob(data);
+ }
+ /**
+ * Set a callback to receive events like connect/disconnect
+ *
+ * @param callback - callback function `myCallback(e)`
+ * @example - webui.setEventCallback((e) => {if(e == webui.event.CONNECTED){ ... }});
+ */
+ setEventCallback(callback: (e: number) => void): void {
+ this.#eventsCallback = callback;
+ }
+ /**
+ * Check if UI is connected to the back-end. The connection
+ * is done by including `webui.js` virtual file in the HTML.
+ *
+ * @return - Boolean `true` if connected
+ */
+ isConnected(): boolean {
+ return ((this.#wsIsConnected()) && (this.#TokenAccepted));
+ }
+ /**
+ * Get OS high contrast preference.
+ *
+ * @return - Boolean `True` if OS is using high contrast theme
+ */
+ async isHighContrast(): Promise {
+ // Call a core function and wait for response
+ const response = await this.callCore("high_contrast") as boolean;
+ if (this.#log) console.log(`Core Response: [${response}]`);
+ return response;
+ }
+ /**
+ * When binding all events on the backend, WebUI blocks all navigation events
+ * and sends them to the backend. This API allows you to control that behavior.
+ *
+ * @param status - Boolean `True` means WebUI will allow navigations
+ * @example - webui.allowNavigation(true); // Allow navigation
+ * window.location.replace('www.test.com'); // This will now proceed as usual
+ */
+ allowNavigation(status: boolean): void {
+ this.#allowNavigation = status;
+ }
+}
+// Export
+type webui = WebuiBridge;
+export default webui;
+export type { WebuiBridge };
+// Wait for the html to be parsed
+addEventListener('load', () => {
+ document.body.addEventListener('contextmenu', (event) => event.preventDefault());
+ addRefreshableEventListener(document.body, 'input', 'contextmenu', (event) => event.stopPropagation());
+});
diff --git a/v2/webui/bridge/webui_bridge.h b/v2/webui/bridge/webui_bridge.h
new file mode 100644
index 0000000..adc2d24
--- /dev/null
+++ b/v2/webui/bridge/webui_bridge.h
@@ -0,0 +1,1892 @@
+// WebUI v2.5.0-beta.4
+// https://webui.me
+// https://github.com/webui-dev/webui
+// Copyright (c) 2020-2026 Hassan Draga.
+// Licensed under MIT License.
+// All rights reserved.
+// Canada.
+
+// --- PLEASE DO NOT EDIT THIS FILE -------
+// --- THIS FILE IS GENERATED BY JS2C.JS --
+
+#ifndef WEBUI_BRIDGE_H
+#define WEBUI_BRIDGE_H
+unsigned char webui_javascript_bridge[] = {
+ 0x2f, 0x2f, 0x20, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x76,
+ 0x32, 0x2e, 0x35, 0x2e, 0x30, 0x2d, 0x62, 0x65, 0x74, 0x61,
+ 0x2e, 0x34, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70,
+ 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x65, 0x62, 0x75, 0x69, 0x2e,
+ 0x6d, 0x65, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70,
+ 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x77, 0x65, 0x62, 0x75, 0x69,
+ 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x77, 0x65, 0x62, 0x75, 0x69,
+ 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
+ 0x32, 0x30, 0x2d, 0x32, 0x30, 0x32, 0x35, 0x20, 0x48, 0x61,
+ 0x73, 0x73, 0x61, 0x6e, 0x20, 0x44, 0x72, 0x61, 0x67, 0x61,
+ 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e,
+ 0x73, 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20,
+ 0x4d, 0x49, 0x54, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
+ 0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, 0x6c, 0x20,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x0a, 0x2f, 0x2f, 0x20,
+ 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x2e, 0x0a, 0x0a, 0x22,
+ 0x75, 0x73, 0x65, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+ 0x22, 0x3b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x61, 0x64, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73,
+ 0x68, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x72,
+ 0x6f, 0x6f, 0x74, 0x2c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x74,
+ 0x79, 0x70, 0x65, 0x2c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x65, 0x72, 0x2c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x29, 0x7b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x72, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x6d, 0x75, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x7b, 0x66, 0x6f, 0x72,
+ 0x28, 0x6c, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x75, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x66, 0x6f, 0x72,
+ 0x28, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20,
+ 0x6f, 0x66, 0x20, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2e, 0x61, 0x64, 0x64, 0x65, 0x64, 0x4e, 0x6f, 0x64,
+ 0x65, 0x73, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x21, 0x28, 0x6e,
+ 0x6f, 0x64, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x6f, 0x66, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x45,
+ 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x29, 0x29, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x29, 0x26, 0x26, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69,
+ 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x74, 0x79, 0x70,
+ 0x65, 0x2c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
+ 0x2c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x3b,
+ 0x66, 0x6f, 0x72, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x63, 0x68,
+ 0x69, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x6e, 0x6f, 0x64,
+ 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x28, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x29, 0x29, 0x63, 0x68, 0x69, 0x6c, 0x64,
+ 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x6f,
+ 0x66, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x45, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x26, 0x26, 0x63, 0x68, 0x69, 0x6c, 0x64,
+ 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
+ 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x74, 0x79,
+ 0x70, 0x65, 0x2c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65,
+ 0x72, 0x2c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29,
+ 0x7d, 0x7d, 0x6c, 0x65, 0x74, 0x20, 0x6f, 0x62, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x4d,
+ 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x28, 0x72, 0x65, 0x62, 0x69,
+ 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
+ 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f,
+ 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6f, 0x62,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x28, 0x72, 0x6f, 0x6f, 0x74,
+ 0x2c, 0x7b, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x3a,
+ 0x21, 0x30, 0x2c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69,
+ 0x73, 0x74, 0x3a, 0x21, 0x30, 0x7d, 0x29, 0x2c, 0x6f, 0x62,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x7d, 0x76, 0x61, 0x72,
+ 0x20, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x28, 0x61, 0x73, 0x79, 0x6e,
+ 0x63, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x28, 0x29, 0x7b, 0x7d, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x76, 0x61,
+ 0x72, 0x20, 0x57, 0x65, 0x62, 0x75, 0x69, 0x42, 0x72, 0x69,
+ 0x64, 0x67, 0x65, 0x3d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x7b,
+ 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x3b, 0x23, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x3b, 0x23, 0x70, 0x6f, 0x72, 0x74,
+ 0x3b, 0x23, 0x6c, 0x6f, 0x67, 0x3b, 0x23, 0x77, 0x69, 0x6e,
+ 0x58, 0x3b, 0x23, 0x77, 0x69, 0x6e, 0x59, 0x3b, 0x23, 0x77,
+ 0x69, 0x6e, 0x57, 0x3b, 0x23, 0x77, 0x69, 0x6e, 0x48, 0x3b,
+ 0x23, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x44, 0x72, 0x61, 0x67, 0x3b, 0x23, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f,
+ 0x6d, 0x44, 0x72, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3d,
+ 0x21, 0x31, 0x3b, 0x23, 0x69, 0x73, 0x44, 0x72, 0x61, 0x67,
+ 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x31, 0x3b, 0x23, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x6f, 0x75, 0x73,
+ 0x65, 0x58, 0x3d, 0x30, 0x3b, 0x23, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x4d, 0x6f, 0x75, 0x73, 0x65, 0x59, 0x3d,
+ 0x30, 0x3b, 0x23, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x58, 0x3d, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65,
+ 0x6e, 0x58, 0x7c, 0x7c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x65, 0x66,
+ 0x74, 0x3b, 0x23, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x3d, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65,
+ 0x6e, 0x59, 0x7c, 0x7c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x54, 0x6f, 0x70,
+ 0x3b, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x58, 0x3d, 0x77, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
+ 0x58, 0x7c, 0x7c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e,
+ 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x65, 0x66, 0x74,
+ 0x3b, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x3d, 0x77, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
+ 0x59, 0x7c, 0x7c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e,
+ 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x54, 0x6f, 0x70, 0x3b,
+ 0x23, 0x77, 0x73, 0x3b, 0x23, 0x77, 0x73, 0x53, 0x74, 0x61,
+ 0x79, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x3d, 0x21, 0x30, 0x3b,
+ 0x23, 0x77, 0x73, 0x53, 0x74, 0x61, 0x79, 0x41, 0x6c, 0x69,
+ 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x3d,
+ 0x35, 0x30, 0x30, 0x3b, 0x23, 0x77, 0x73, 0x57, 0x61, 0x73,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x3d,
+ 0x21, 0x31, 0x3b, 0x23, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41,
+ 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x3d, 0x21, 0x31,
+ 0x3b, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x3d, 0x30, 0x3b, 0x23, 0x63, 0x6c, 0x6f,
+ 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x23, 0x41,
+ 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3d, 0x21,
+ 0x31, 0x3b, 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f,
+ 0x6d, 0x69, 0x73, 0x65, 0x49, 0x44, 0x3d, 0x6e, 0x65, 0x77,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x28, 0x31, 0x29, 0x3b, 0x23, 0x63, 0x61, 0x6c,
+ 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x52, 0x65,
+ 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x3d, 0x5b, 0x5d, 0x3b, 0x23,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x21, 0x30, 0x3b, 0x23,
+ 0x73, 0x65, 0x6e, 0x64, 0x51, 0x75, 0x65, 0x75, 0x65, 0x3d,
+ 0x5b, 0x5d, 0x3b, 0x23, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x31, 0x3b, 0x23, 0x62, 0x69,
+ 0x6e, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x3b, 0x23, 0x57,
+ 0x45, 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41,
+ 0x54, 0x55, 0x52, 0x45, 0x3d, 0x32, 0x32, 0x31, 0x3b, 0x23,
+ 0x43, 0x4d, 0x44, 0x5f, 0x4a, 0x53, 0x3d, 0x32, 0x35, 0x34,
+ 0x3b, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4a, 0x53, 0x5f, 0x51,
+ 0x55, 0x49, 0x43, 0x4b, 0x3d, 0x32, 0x35, 0x33, 0x3b, 0x23,
+ 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x43, 0x4b, 0x3d,
+ 0x32, 0x35, 0x32, 0x3b, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4e,
+ 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x3d,
+ 0x32, 0x35, 0x31, 0x3b, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43,
+ 0x4c, 0x4f, 0x53, 0x45, 0x3d, 0x32, 0x35, 0x30, 0x3b, 0x23,
+ 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x46,
+ 0x55, 0x4e, 0x43, 0x3d, 0x32, 0x34, 0x39, 0x3b, 0x23, 0x43,
+ 0x4d, 0x44, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x41,
+ 0x57, 0x3d, 0x32, 0x34, 0x38, 0x3b, 0x23, 0x43, 0x4d, 0x44,
+ 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x49, 0x44, 0x3d, 0x32, 0x34,
+ 0x37, 0x3b, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4d, 0x55, 0x4c,
+ 0x54, 0x49, 0x3d, 0x32, 0x34, 0x36, 0x3b, 0x23, 0x43, 0x4d,
+ 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x54, 0x4b,
+ 0x3d, 0x32, 0x34, 0x35, 0x3b, 0x23, 0x43, 0x4d, 0x44, 0x5f,
+ 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x44, 0x52, 0x41,
+ 0x47, 0x3d, 0x32, 0x34, 0x34, 0x3b, 0x23, 0x43, 0x4d, 0x44,
+ 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x52, 0x45,
+ 0x53, 0x49, 0x5a, 0x45, 0x44, 0x3d, 0x32, 0x34, 0x33, 0x3b,
+ 0x23, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x43, 0x48, 0x55,
+ 0x4e, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x3d, 0x36, 0x35,
+ 0x35, 0x30, 0x30, 0x3b, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f,
+ 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x3d, 0x38,
+ 0x3b, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
+ 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x3d, 0x30, 0x3b, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, 0x4f,
+ 0x4b, 0x45, 0x4e, 0x3d, 0x31, 0x3b, 0x23, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x3d, 0x35,
+ 0x3b, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
+ 0x5f, 0x43, 0x4d, 0x44, 0x3d, 0x37, 0x3b, 0x23, 0x50, 0x52,
+ 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41, 0x54,
+ 0x41, 0x3d, 0x38, 0x3b, 0x23, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x31, 0x29, 0x3b,
+ 0x23, 0x50, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x30, 0x3b, 0x23,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x61, 0x6c, 0x6c,
+ 0x62, 0x61, 0x63, 0x6b, 0x3d, 0x6e, 0x75, 0x6c, 0x6c, 0x3b,
+ 0x23, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x3d, 0x2d, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d,
+ 0x7b, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44,
+ 0x3a, 0x30, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e,
+ 0x45, 0x43, 0x54, 0x45, 0x44, 0x3a, 0x31, 0x7d, 0x3b, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72,
+ 0x28, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x3d, 0x21,
+ 0x31, 0x2c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3d, 0x30, 0x2c,
+ 0x70, 0x6f, 0x72, 0x74, 0x3d, 0x30, 0x2c, 0x6c, 0x6f, 0x67,
+ 0x3d, 0x21, 0x31, 0x2c, 0x77, 0x69, 0x6e, 0x58, 0x3d, 0x30,
+ 0x2c, 0x77, 0x69, 0x6e, 0x59, 0x3d, 0x30, 0x2c, 0x77, 0x69,
+ 0x6e, 0x57, 0x3d, 0x30, 0x2c, 0x77, 0x69, 0x6e, 0x48, 0x3d,
+ 0x30, 0x2c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x72, 0x61, 0x67, 0x3d, 0x21,
+ 0x31, 0x7d, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x3d,
+ 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3d, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x70, 0x6f, 0x72, 0x74, 0x3d, 0x70, 0x6f, 0x72, 0x74,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67,
+ 0x3d, 0x6c, 0x6f, 0x67, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x77, 0x69, 0x6e, 0x58, 0x3d, 0x77, 0x69, 0x6e, 0x58,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x69, 0x6e,
+ 0x59, 0x3d, 0x77, 0x69, 0x6e, 0x59, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x69, 0x6e, 0x57, 0x3d, 0x77, 0x69,
+ 0x6e, 0x57, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77,
+ 0x69, 0x6e, 0x48, 0x3d, 0x77, 0x69, 0x6e, 0x48, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x72, 0x61,
+ 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x63, 0x75, 0x73, 0x74,
+ 0x6f, 0x6d, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x72,
+ 0x61, 0x67, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x5b, 0x30, 0x5d, 0x3d, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c,
+ 0x22, 0x77, 0x65, 0x62, 0x75, 0x69, 0x22, 0x69, 0x6e, 0x20,
+ 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73,
+ 0x29, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x20, 0x6e, 0x65, 0x77,
+ 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x53, 0x6f,
+ 0x72, 0x72, 0x79, 0x2e, 0x20, 0x57, 0x65, 0x62, 0x55, 0x49,
+ 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c,
+ 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x6f, 0x6e, 0x65, 0x20,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69,
+ 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x2e,
+ 0x22, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77,
+ 0x69, 0x6e, 0x58, 0x21, 0x3d, 0x3d, 0x76, 0x6f, 0x69, 0x64,
+ 0x20, 0x30, 0x26, 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x77, 0x69, 0x6e, 0x59, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x77, 0x69, 0x6e, 0x57, 0x21, 0x3d, 0x3d, 0x76, 0x6f,
+ 0x69, 0x64, 0x20, 0x30, 0x26, 0x26, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x77, 0x69, 0x6e, 0x48, 0x2c, 0x22, 0x57, 0x65,
+ 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x69, 0x6e,
+ 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x7c, 0x7c, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x68, 0x6f, 0x77,
+ 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x28, 0x22, 0x57,
+ 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x20, 0x69,
+ 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70,
+ 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x79,
+ 0x6f, 0x75, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62, 0x72,
+ 0x6f, 0x77, 0x73, 0x65, 0x72, 0x22, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x7c, 0x7c, 0x67,
+ 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73, 0x2e,
+ 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28, 0x29, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x28, 0x29, 0x2c, 0x22, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x6e, 0x20, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73, 0x3f, 0x67,
+ 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73, 0x2e,
+ 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
+ 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6e,
+ 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x65, 0x22, 0x2c, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28,
+ 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x26, 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x41, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x26,
+ 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49,
+ 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x28, 0x29, 0x29, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e,
+ 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66,
+ 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b, 0x6c, 0x65, 0x74,
+ 0x20, 0x75, 0x72, 0x6c, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x55,
+ 0x52, 0x4c, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x75, 0x72, 0x6c, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60,
+ 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x44,
+ 0x4f, 0x4d, 0x20, 0x2d, 0x3e, 0x20, 0x4e, 0x61, 0x76, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x20, 0x5b, 0x24, 0x7b, 0x75, 0x72, 0x6c, 0x2e,
+ 0x68, 0x72, 0x65, 0x66, 0x7d, 0x5d, 0x60, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x75, 0x72, 0x6c, 0x2e, 0x68,
+ 0x72, 0x65, 0x66, 0x29, 0x7d, 0x7d, 0x29, 0x3a, 0x61, 0x64,
+ 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x61, 0x62,
+ 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x64, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x64, 0x79, 0x2c,
+ 0x22, 0x61, 0x22, 0x2c, 0x22, 0x63, 0x6c, 0x69, 0x63, 0x6b,
+ 0x22, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x3e, 0x7b,
+ 0x69, 0x66, 0x28, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x26, 0x26, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x41, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x26, 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x28, 0x29, 0x29, 0x7b, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b,
+ 0x6c, 0x65, 0x74, 0x7b, 0x68, 0x72, 0x65, 0x66, 0x7d, 0x3d,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62,
+ 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x44, 0x4f, 0x4d, 0x20,
+ 0x2d, 0x3e, 0x20, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x5b, 0x24, 0x7b, 0x68,
+ 0x72, 0x65, 0x66, 0x7d, 0x5d, 0x60, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x28, 0x68, 0x72, 0x65, 0x66, 0x29, 0x7d,
+ 0x7d, 0x29, 0x2c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22,
+ 0x6b, 0x65, 0x79, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x2c, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x3e, 0x7b, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x7c, 0x7c, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x2e, 0x6b, 0x65, 0x79, 0x3d, 0x3d, 0x3d,
+ 0x22, 0x46, 0x35, 0x22, 0x26, 0x26, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44,
+ 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x7d, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44,
+ 0x72, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x26, 0x26, 0x28,
+ 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x61,
+ 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75,
+ 0x73, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x2c, 0x65, 0x3d,
+ 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x65, 0x2e, 0x62, 0x75, 0x74,
+ 0x74, 0x6f, 0x6e, 0x73, 0x21, 0x3d, 0x3d, 0x31, 0x29, 0x7b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x44, 0x72,
+ 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x31, 0x3b,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x7d, 0x69, 0x66, 0x28,
+ 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x44,
+ 0x72, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x29, 0x7b, 0x6c,
+ 0x65, 0x74, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d,
+ 0x65, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3b, 0x66,
+ 0x6f, 0x72, 0x28, 0x3b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x3b, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x77, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x2e, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70,
+ 0x75, 0x74, 0x65, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x28,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x29, 0x2e, 0x67, 0x65,
+ 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x28, 0x22, 0x2d, 0x2d, 0x77, 0x65,
+ 0x62, 0x75, 0x69, 0x2d, 0x61, 0x70, 0x70, 0x2d, 0x72, 0x65,
+ 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x2e, 0x74, 0x72, 0x69,
+ 0x6d, 0x28, 0x29, 0x3d, 0x3d, 0x3d, 0x22, 0x64, 0x72, 0x61,
+ 0x67, 0x22, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x6f, 0x75,
+ 0x73, 0x65, 0x58, 0x3d, 0x65, 0x2e, 0x73, 0x63, 0x72, 0x65,
+ 0x65, 0x6e, 0x58, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x6f, 0x75,
+ 0x73, 0x65, 0x59, 0x3d, 0x65, 0x2e, 0x73, 0x63, 0x72, 0x65,
+ 0x65, 0x6e, 0x59, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x58, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x57, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x58, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x44, 0x72, 0x61, 0x67,
+ 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x30, 0x3b, 0x62, 0x72,
+ 0x65, 0x61, 0x6b, 0x7d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x3d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x7d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x7d, 0x6c,
+ 0x65, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x58, 0x3d,
+ 0x65, 0x2e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x58, 0x2d,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x4d, 0x6f, 0x75, 0x73, 0x65, 0x58, 0x2c,
+ 0x64, 0x65, 0x6c, 0x74, 0x61, 0x59, 0x3d, 0x65, 0x2e, 0x73,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x59, 0x2d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
+ 0x4d, 0x6f, 0x75, 0x73, 0x65, 0x59, 0x2c, 0x6e, 0x65, 0x77,
+ 0x58, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x58, 0x2b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x58, 0x2c,
+ 0x6e, 0x65, 0x77, 0x59, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x2b, 0x64, 0x65, 0x6c, 0x74,
+ 0x61, 0x59, 0x3b, 0x6e, 0x65, 0x77, 0x58, 0x3c, 0x30, 0x26,
+ 0x26, 0x28, 0x6e, 0x65, 0x77, 0x58, 0x3d, 0x30, 0x29, 0x2c,
+ 0x6e, 0x65, 0x77, 0x59, 0x3c, 0x30, 0x26, 0x26, 0x28, 0x6e,
+ 0x65, 0x77, 0x59, 0x3d, 0x30, 0x29, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x44, 0x72, 0x61,
+ 0x67, 0x28, 0x6e, 0x65, 0x77, 0x58, 0x2c, 0x6e, 0x65, 0x77,
+ 0x59, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x58, 0x3d, 0x6e, 0x65, 0x77, 0x58, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x3d,
+ 0x6e, 0x65, 0x77, 0x59, 0x7d, 0x29, 0x2c, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x61, 0x64, 0x64, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x75,
+ 0x70, 0x22, 0x2c, 0x28, 0x29, 0x3d, 0x3e, 0x7b, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x44, 0x72, 0x61, 0x67,
+ 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x31, 0x7d, 0x29, 0x29,
+ 0x2c, 0x6f, 0x6e, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x75,
+ 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3d, 0x28, 0x29, 0x3d, 0x3e,
+ 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c, 0x6f,
+ 0x73, 0x65, 0x28, 0x29, 0x7d, 0x2c, 0x73, 0x65, 0x74, 0x54,
+ 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x28, 0x29, 0x3d,
+ 0x3e, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73,
+ 0x57, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x7c, 0x7c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x73, 0x68, 0x6f, 0x77, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e,
+ 0x67, 0x28, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61,
+ 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x70, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x7d,
+ 0x2c, 0x35, 0x65, 0x33, 0x29, 0x7d, 0x23, 0x63, 0x6c, 0x6f,
+ 0x73, 0x65, 0x28, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3d,
+ 0x30, 0x2c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22,
+ 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c,
+ 0x6f, 0x73, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3d,
+ 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28,
+ 0x29, 0x26, 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77,
+ 0x73, 0x2e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28, 0x29, 0x7d,
+ 0x23, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x61, 0x72, 0x6e, 0x69,
+ 0x6e, 0x67, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x7b, 0x73, 0x65,
+ 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x28,
+ 0x29, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x21, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x29,
+ 0x7b, 0x69, 0x66, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x77,
+ 0x65, 0x62, 0x75, 0x69, 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2d, 0x6c, 0x6f, 0x73, 0x74, 0x22, 0x29, 0x29, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x6c, 0x65, 0x74, 0x20,
+ 0x64, 0x69, 0x76, 0x3d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45,
+ 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x22, 0x64, 0x69,
+ 0x76, 0x22, 0x29, 0x3b, 0x64, 0x69, 0x76, 0x2e, 0x69, 0x64,
+ 0x3d, 0x22, 0x77, 0x65, 0x62, 0x75, 0x69, 0x2d, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6c, 0x6f, 0x73, 0x74, 0x22,
+ 0x2c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x61, 0x73,
+ 0x73, 0x69, 0x67, 0x6e, 0x28, 0x64, 0x69, 0x76, 0x2e, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x2c, 0x7b, 0x70, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x22, 0x66, 0x69, 0x78, 0x65,
+ 0x64, 0x22, 0x2c, 0x74, 0x6f, 0x70, 0x3a, 0x22, 0x30, 0x22,
+ 0x2c, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x22, 0x30, 0x22, 0x2c,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x22, 0x31, 0x30, 0x30,
+ 0x25, 0x22, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x22,
+ 0x72, 0x67, 0x62, 0x28, 0x31, 0x39, 0x31, 0x20, 0x31, 0x32,
+ 0x35, 0x20, 0x33, 0x30, 0x20, 0x2f, 0x20, 0x38, 0x34, 0x25,
+ 0x29, 0x22, 0x2c, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x22,
+ 0x23, 0x66, 0x66, 0x66, 0x22, 0x2c, 0x74, 0x65, 0x78, 0x74,
+ 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x22, 0x63, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x22, 0x2c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3a, 0x22, 0x34, 0x70, 0x78, 0x20, 0x30, 0x22,
+ 0x2c, 0x66, 0x6f, 0x6e, 0x74, 0x46, 0x61, 0x6d, 0x69, 0x6c,
+ 0x79, 0x3a, 0x22, 0x41, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x20,
+ 0x73, 0x61, 0x6e, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x69, 0x66,
+ 0x22, 0x2c, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65,
+ 0x3a, 0x22, 0x31, 0x36, 0x70, 0x78, 0x22, 0x2c, 0x7a, 0x49,
+ 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x22, 0x39, 0x30, 0x30, 0x30,
+ 0x22, 0x2c, 0x6c, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x22, 0x31, 0x22, 0x7d, 0x29, 0x2c, 0x64,
+ 0x69, 0x76, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54,
+ 0x4d, 0x4c, 0x3d, 0x22, 0x3c, 0x73, 0x74, 0x72, 0x6f, 0x6e,
+ 0x67, 0x3e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x3c, 0x2f,
+ 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x20, 0x22, 0x2b,
+ 0x6d, 0x73, 0x67, 0x2b, 0x22, 0x20, 0x2d, 0x20, 0x3c, 0x65,
+ 0x6d, 0x3e, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x32, 0x2e,
+ 0x35, 0x2e, 0x30, 0x2d, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x34,
+ 0x3c, 0x2f, 0x65, 0x6d, 0x3e, 0x22, 0x2c, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x64, 0x79,
+ 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x65, 0x66,
+ 0x6f, 0x72, 0x65, 0x28, 0x64, 0x69, 0x76, 0x2c, 0x64, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x64,
+ 0x79, 0x2e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x43, 0x68, 0x69,
+ 0x6c, 0x64, 0x29, 0x7d, 0x7d, 0x2c, 0x31, 0x65, 0x33, 0x29,
+ 0x7d, 0x23, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x55, 0x69,
+ 0x28, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x62,
+ 0x61, 0x63, 0x6b, 0x3d, 0x3d, 0x6e, 0x75, 0x6c, 0x6c, 0x26,
+ 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x68, 0x6f,
+ 0x77, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x28, 0x22,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x20, 0x69, 0x73,
+ 0x20, 0x6c, 0x6f, 0x73, 0x74, 0x22, 0x29, 0x7d, 0x23, 0x75,
+ 0x6e, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x55, 0x49, 0x28,
+ 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x64, 0x69, 0x76, 0x3d,
+ 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67,
+ 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42,
+ 0x79, 0x49, 0x64, 0x28, 0x22, 0x77, 0x65, 0x62, 0x75, 0x69,
+ 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2d, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6c, 0x6f,
+ 0x73, 0x74, 0x22, 0x29, 0x3b, 0x64, 0x69, 0x76, 0x26, 0x26,
+ 0x64, 0x69, 0x76, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x28, 0x29, 0x7d, 0x23, 0x69, 0x73, 0x54, 0x65, 0x78, 0x74,
+ 0x42, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
+ 0x6e, 0x64, 0x28, 0x63, 0x6d, 0x64, 0x29, 0x7b, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6d, 0x64, 0x21, 0x3d,
+ 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44,
+ 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x41, 0x57, 0x7d,
+ 0x23, 0x70, 0x61, 0x72, 0x73, 0x65, 0x44, 0x69, 0x6d, 0x65,
+ 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x28, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x29, 0x7b, 0x74, 0x72, 0x79, 0x7b, 0x6c, 0x65,
+ 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x3d, 0x69, 0x6e,
+ 0x70, 0x75, 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28,
+ 0x22, 0x2c, 0x22, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x70, 0x61,
+ 0x72, 0x74, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x21, 0x3d, 0x3d, 0x34, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x7b, 0x78, 0x3a, 0x30, 0x2c, 0x79, 0x3a, 0x30, 0x2c,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x30, 0x2c, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x30, 0x7d, 0x3b, 0x6c, 0x65,
+ 0x74, 0x20, 0x78, 0x3d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46,
+ 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x61, 0x72, 0x74, 0x73,
+ 0x5b, 0x30, 0x5d, 0x29, 0x2c, 0x79, 0x3d, 0x70, 0x61, 0x72,
+ 0x73, 0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x61,
+ 0x72, 0x74, 0x73, 0x5b, 0x31, 0x5d, 0x29, 0x2c, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46,
+ 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x61, 0x72, 0x74, 0x73,
+ 0x5b, 0x32, 0x5d, 0x29, 0x2c, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f,
+ 0x61, 0x74, 0x28, 0x70, 0x61, 0x72, 0x74, 0x73, 0x5b, 0x33,
+ 0x5d, 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5b,
+ 0x78, 0x2c, 0x79, 0x2c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c,
+ 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x2e, 0x73, 0x6f,
+ 0x6d, 0x65, 0x28, 0x69, 0x73, 0x4e, 0x61, 0x4e, 0x29, 0x3f,
+ 0x7b, 0x78, 0x3a, 0x30, 0x2c, 0x79, 0x3a, 0x30, 0x2c, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3a, 0x30, 0x2c, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3a, 0x30, 0x7d, 0x3a, 0x7b, 0x78, 0x2c,
+ 0x79, 0x2c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x7d, 0x7d, 0x63, 0x61, 0x74, 0x63,
+ 0x68, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x7b, 0x78,
+ 0x3a, 0x30, 0x2c, 0x79, 0x3a, 0x30, 0x2c, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3a, 0x30, 0x2c, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x30, 0x7d, 0x7d, 0x7d, 0x23, 0x67, 0x65, 0x74,
+ 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x72, 0x46, 0x72, 0x6f,
+ 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x2c, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x7b, 0x6c, 0x65, 0x74,
+ 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74,
+ 0x65, 0x73, 0x3d, 0x5b, 0x5d, 0x3b, 0x66, 0x6f, 0x72, 0x28,
+ 0x6c, 0x65, 0x74, 0x20, 0x69, 0x3d, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x69, 0x3c, 0x62,
+ 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x26, 0x26, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x5b, 0x69, 0x5d, 0x21, 0x3d, 0x3d, 0x30, 0x3b, 0x69, 0x2b,
+ 0x2b, 0x29, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79,
+ 0x74, 0x65, 0x73, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x28, 0x62,
+ 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x69, 0x5d, 0x29, 0x3b,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77,
+ 0x20, 0x54, 0x65, 0x78, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64,
+ 0x65, 0x72, 0x28, 0x29, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64,
+ 0x65, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74,
+ 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x73, 0x74, 0x72,
+ 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x29, 0x29,
+ 0x7d, 0x23, 0x67, 0x65, 0x74, 0x49, 0x44, 0x28, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x2c, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x29, 0x7b, 0x69, 0x66, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x3c, 0x30, 0x7c, 0x7c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3e,
+ 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x2d, 0x31, 0x29, 0x74, 0x68, 0x72,
+ 0x6f, 0x77, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x45, 0x72, 0x72,
+ 0x6f, 0x72, 0x28, 0x22, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20,
+ 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x6f, 0x75,
+ 0x6e, 0x64, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73,
+ 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x20,
+ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x22, 0x29, 0x3b, 0x6c, 0x65,
+ 0x74, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x79, 0x74,
+ 0x65, 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x31, 0x5d, 0x3c, 0x3c,
+ 0x38, 0x7c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x79, 0x74,
+ 0x65, 0x7d, 0x23, 0x61, 0x64, 0x64, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2c, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x29, 0x7b, 0x69, 0x66, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3c, 0x30, 0x7c, 0x7c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3e,
+ 0x34, 0x32, 0x39, 0x34, 0x39, 0x36, 0x37, 0x32, 0x39, 0x35,
+ 0x29, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x20, 0x6e, 0x65, 0x77,
+ 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x4e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x75,
+ 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72,
+ 0x61, 0x6e, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x34,
+ 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70,
+ 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2e, 0x22, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x3c, 0x30, 0x7c, 0x7c, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x3e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e,
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2d, 0x34, 0x29, 0x74,
+ 0x68, 0x72, 0x6f, 0x77, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x62,
+ 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69,
+ 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e,
+ 0x74, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x69, 0x6e,
+ 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x22, 0x29,
+ 0x3b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x26, 0x32, 0x35, 0x35, 0x2c, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x31, 0x5d,
+ 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3e, 0x3e, 0x3e, 0x38,
+ 0x26, 0x32, 0x35, 0x35, 0x2c, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x32, 0x5d,
+ 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3e, 0x3e, 0x3e, 0x31,
+ 0x36, 0x26, 0x32, 0x35, 0x35, 0x2c, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x33,
+ 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3e, 0x3e, 0x3e,
+ 0x32, 0x34, 0x26, 0x32, 0x35, 0x35, 0x7d, 0x23, 0x61, 0x64,
+ 0x64, 0x49, 0x44, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x2c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3c, 0x30, 0x7c, 0x7c, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3e, 0x36, 0x35, 0x35, 0x33, 0x35, 0x29, 0x74, 0x68,
+ 0x72, 0x6f, 0x77, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x28, 0x22, 0x4e, 0x75, 0x6d, 0x62, 0x65,
+ 0x72, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67,
+ 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x32, 0x20, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73,
+ 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x22,
+ 0x29, 0x3b, 0x69, 0x66, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x3c, 0x30, 0x7c, 0x7c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3e,
+ 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x6c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x2d, 0x32, 0x29, 0x74, 0x68, 0x72, 0x6f,
+ 0x77, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x28, 0x22, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x6f,
+ 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x6f, 0x75, 0x6e,
+ 0x64, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x75,
+ 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x2e, 0x22, 0x29, 0x3b, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x26, 0x32, 0x35,
+ 0x35, 0x2c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x31, 0x5d, 0x3d, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3e, 0x3e, 0x3e, 0x38, 0x26, 0x32, 0x35,
+ 0x35, 0x7d, 0x23, 0x73, 0x74, 0x61, 0x72, 0x74, 0x28, 0x29,
+ 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6b, 0x65, 0x65,
+ 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x28, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50,
+ 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x49, 0x44, 0x5b, 0x30,
+ 0x5d, 0x3d, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x28,
+ 0x29, 0x7d, 0x23, 0x6b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69,
+ 0x76, 0x65, 0x3d, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x28, 0x29,
+ 0x3d, 0x3e, 0x7b, 0x66, 0x6f, 0x72, 0x28, 0x3b, 0x3b, 0x29,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x69, 0x6e, 0x67,
+ 0x3f, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e,
+ 0x64, 0x44, 0x61, 0x74, 0x61, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x28, 0x22, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x29, 0x3a,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x69, 0x6e, 0x67,
+ 0x3d, 0x21, 0x30, 0x2c, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20,
+ 0x6e, 0x65, 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73,
+ 0x65, 0x28, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x3d,
+ 0x3e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
+ 0x74, 0x28, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x2c,
+ 0x32, 0x65, 0x34, 0x29, 0x29, 0x7d, 0x3b, 0x23, 0x63, 0x6c,
+ 0x69, 0x63, 0x6b, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x65, 0x72, 0x28, 0x29, 0x7b, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c,
+ 0x28, 0x22, 0x5b, 0x69, 0x64, 0x5d, 0x22, 0x29, 0x2e, 0x66,
+ 0x6f, 0x72, 0x45, 0x61, 0x63, 0x68, 0x28, 0x65, 0x3d, 0x3e,
+ 0x7b, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x41, 0x6c,
+ 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x7c, 0x7c, 0x65,
+ 0x2e, 0x69, 0x64, 0x21, 0x3d, 0x3d, 0x22, 0x22, 0x26, 0x26,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e, 0x64,
+ 0x73, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x73, 0x28, 0x65, 0x2e, 0x69, 0x64, 0x29,
+ 0x29, 0x26, 0x26, 0x65, 0x2e, 0x69, 0x64, 0x26, 0x26, 0x21,
+ 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x2e,
+ 0x77, 0x65, 0x62, 0x75, 0x69, 0x5f, 0x63, 0x6c, 0x69, 0x63,
+ 0x6b, 0x5f, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x26, 0x26,
+ 0x28, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
+ 0x2e, 0x77, 0x65, 0x62, 0x75, 0x69, 0x5f, 0x63, 0x6c, 0x69,
+ 0x63, 0x6b, 0x5f, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x3d,
+ 0x22, 0x74, 0x72, 0x75, 0x65, 0x22, 0x2c, 0x65, 0x2e, 0x61,
+ 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x63, 0x6c, 0x69,
+ 0x63, 0x6b, 0x22, 0x2c, 0x28, 0x29, 0x3d, 0x3e, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6c,
+ 0x69, 0x63, 0x6b, 0x28, 0x65, 0x2e, 0x69, 0x64, 0x29, 0x29,
+ 0x29, 0x7d, 0x29, 0x7d, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x23,
+ 0x73, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x28, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x29, 0x7b, 0x69, 0x66, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x69, 0x6e, 0x67,
+ 0x3d, 0x21, 0x31, 0x2c, 0x21, 0x28, 0x21, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x7c, 0x7c,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x3d, 0x3d, 0x76,
+ 0x6f, 0x69, 0x64, 0x20, 0x30, 0x29, 0x26, 0x26, 0x28, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x51,
+ 0x75, 0x65, 0x75, 0x65, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x28,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x29, 0x2c, 0x21, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x53, 0x65, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x29, 0x29, 0x7b, 0x66, 0x6f, 0x72,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x53,
+ 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x21, 0x30, 0x3b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64,
+ 0x51, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x3e, 0x30, 0x3b, 0x29, 0x7b, 0x6c, 0x65, 0x74,
+ 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x73, 0x65, 0x6e, 0x64, 0x51, 0x75, 0x65, 0x75, 0x65,
+ 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x28, 0x29, 0x3b, 0x69,
+ 0x66, 0x28, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x3c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x4d,
+ 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b,
+ 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x29, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x73, 0x65, 0x6e, 0x64, 0x28,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x29, 0x3b, 0x65, 0x6c, 0x73, 0x65, 0x7b, 0x6c, 0x65, 0x74,
+ 0x20, 0x70, 0x72, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x3d, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x2e, 0x6f, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x57, 0x45, 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49,
+ 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f,
+ 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x2c, 0x2e, 0x2e, 0x2e, 0x6e,
+ 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x28, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72,
+ 0x69, 0x6e, 0x67, 0x28, 0x29, 0x29, 0x2c, 0x30, 0x29, 0x3b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x73,
+ 0x65, 0x6e, 0x64, 0x28, 0x70, 0x72, 0x65, 0x5f, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x29, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x3d, 0x30, 0x2c, 0x73, 0x65, 0x6e, 0x64,
+ 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x3d, 0x61, 0x73, 0x79, 0x6e,
+ 0x63, 0x28, 0x29, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x6f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x3c, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e,
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x7b, 0x6c, 0x65,
+ 0x74, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a,
+ 0x65, 0x3d, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x6d, 0x69, 0x6e,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x4d, 0x55, 0x4c,
+ 0x54, 0x49, 0x5f, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x5f, 0x53,
+ 0x49, 0x5a, 0x45, 0x2c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x2d, 0x6f, 0x66, 0x66, 0x73, 0x65,
+ 0x74, 0x29, 0x2c, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x3d, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x2e, 0x73, 0x75, 0x62, 0x61, 0x72, 0x72, 0x61,
+ 0x79, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x6f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x2b, 0x63, 0x68, 0x75, 0x6e,
+ 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x73, 0x65, 0x6e, 0x64,
+ 0x28, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x29, 0x2c, 0x6f, 0x66,
+ 0x66, 0x73, 0x65, 0x74, 0x2b, 0x3d, 0x63, 0x68, 0x75, 0x6e,
+ 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x2c, 0x61, 0x77, 0x61, 0x69,
+ 0x74, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x28, 0x29, 0x7d, 0x7d, 0x3b, 0x61, 0x77, 0x61, 0x69,
+ 0x74, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x28, 0x29, 0x7d, 0x7d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x3d, 0x21, 0x31, 0x7d, 0x7d, 0x23, 0x73, 0x65, 0x6e, 0x64,
+ 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x28, 0x65, 0x6c, 0x65, 0x6d,
+ 0x29, 0x7b, 0x69, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x29, 0x7b, 0x6c, 0x65,
+ 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x65,
+ 0x6c, 0x65, 0x6d, 0x21, 0x3d, 0x3d, 0x22, 0x22, 0x3f, 0x55,
+ 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x2e,
+ 0x6f, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x57,
+ 0x45, 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41,
+ 0x54, 0x55, 0x52, 0x45, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x4c, 0x49,
+ 0x43, 0x4b, 0x2c, 0x2e, 0x2e, 0x2e, 0x6e, 0x65, 0x77, 0x20,
+ 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x29, 0x2c, 0x30, 0x29, 0x3a,
+ 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79,
+ 0x2e, 0x6f, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x57, 0x45, 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e,
+ 0x41, 0x54, 0x55, 0x52, 0x45, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x4c,
+ 0x49, 0x43, 0x4b, 0x2c, 0x30, 0x29, 0x3b, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, 0x4f, 0x4b, 0x45,
+ 0x4e, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73,
+ 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x28, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60,
+ 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x53,
+ 0x65, 0x6e, 0x64, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20,
+ 0x5b, 0x24, 0x7b, 0x65, 0x6c, 0x65, 0x6d, 0x7d, 0x5d, 0x60,
+ 0x29, 0x7d, 0x7d, 0x23, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x28, 0x29, 0x7b, 0x69, 0x66, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28,
+ 0x29, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x3d, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41,
+ 0x72, 0x72, 0x61, 0x79, 0x2e, 0x6f, 0x66, 0x28, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x57, 0x45, 0x42, 0x55, 0x49, 0x5f,
+ 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d,
+ 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x54, 0x4b,
+ 0x2c, 0x30, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x61, 0x64, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x28, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43,
+ 0x4f, 0x4c, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x29, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64,
+ 0x44, 0x61, 0x74, 0x61, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62,
+ 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x53, 0x65, 0x6e, 0x64,
+ 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x5b, 0x30, 0x78,
+ 0x24, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64,
+ 0x53, 0x74, 0x61, 0x72, 0x74, 0x28, 0x38, 0x2c, 0x22, 0x30,
+ 0x22, 0x29, 0x7d, 0x5d, 0x60, 0x29, 0x7d, 0x7d, 0x23, 0x73,
+ 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61,
+ 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x75,
+ 0x72, 0x6c, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x75, 0x72, 0x6c,
+ 0x21, 0x3d, 0x3d, 0x22, 0x22, 0x26, 0x26, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x29, 0x7b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26,
+ 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c,
+ 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20,
+ 0x2d, 0x3e, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x4e, 0x61,
+ 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x20, 0x5b, 0x24, 0x7b, 0x75, 0x72,
+ 0x6c, 0x7d, 0x5d, 0x60, 0x29, 0x3b, 0x6c, 0x65, 0x74, 0x20,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x55, 0x69, 0x6e,
+ 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x6f, 0x66,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x57, 0x45, 0x42,
+ 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55,
+ 0x52, 0x45, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4e, 0x41, 0x56, 0x49, 0x47,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x2c, 0x2e, 0x2e, 0x2e, 0x6e,
+ 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x28, 0x75, 0x72, 0x6c, 0x29, 0x29, 0x3b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54,
+ 0x4f, 0x4b, 0x45, 0x4e, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x73, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61,
+ 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x29, 0x7d, 0x7d,
+ 0x23, 0x73, 0x65, 0x6e, 0x64, 0x44, 0x72, 0x61, 0x67, 0x28,
+ 0x78, 0x2c, 0x79, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x29,
+ 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67,
+ 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49,
+ 0x20, 0x2d, 0x3e, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x44,
+ 0x72, 0x61, 0x67, 0x20, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x20,
+ 0x5b, 0x24, 0x7b, 0x78, 0x7d, 0x2c, 0x20, 0x24, 0x7b, 0x79,
+ 0x7d, 0x5d, 0x60, 0x29, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x55, 0x69, 0x6e, 0x74,
+ 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x6f, 0x66, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x57, 0x45, 0x42, 0x55,
+ 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52,
+ 0x45, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x43, 0x4d, 0x44, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57,
+ 0x5f, 0x44, 0x52, 0x41, 0x47, 0x2c, 0x2e, 0x2e, 0x2e, 0x6e,
+ 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72,
+ 0x72, 0x61, 0x79, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x49, 0x6e,
+ 0x74, 0x33, 0x32, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b,
+ 0x78, 0x5d, 0x29, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x29, 0x2c, 0x2e, 0x2e, 0x2e, 0x6e, 0x65, 0x77, 0x20, 0x55,
+ 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28,
+ 0x6e, 0x65, 0x77, 0x20, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x41,
+ 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x79, 0x5d, 0x29, 0x2e,
+ 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x29, 0x3b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, 0x4f,
+ 0x4b, 0x45, 0x4e, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x73, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x28,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x29, 0x7d, 0x7d, 0x23,
+ 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x28, 0x29, 0x7b, 0x73,
+ 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
+ 0x7b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69,
+ 0x73, 0x2e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28, 0x29, 0x7d,
+ 0x2c, 0x31, 0x65, 0x33, 0x29, 0x7d, 0x23, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x73, 0x4c, 0x69,
+ 0x73, 0x74, 0x28, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x62, 0x69, 0x6e, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74,
+ 0x2e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28,
+ 0x22, 0x22, 0x29, 0x26, 0x26, 0x28, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x41, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x3d, 0x21, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x21, 0x31, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x67, 0x65, 0x6e,
+ 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x4f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x28, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c, 0x69, 0x63, 0x6b,
+ 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28,
+ 0x29, 0x7d, 0x23, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x74, 0x31,
+ 0x36, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x7b, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x26, 0x36, 0x35, 0x35, 0x33, 0x35, 0x7d, 0x23, 0x67,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6c,
+ 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x28, 0x29,
+ 0x7b, 0x66, 0x6f, 0x72, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x62,
+ 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e, 0x64, 0x73, 0x4c, 0x69,
+ 0x73, 0x74, 0x29, 0x69, 0x66, 0x28, 0x62, 0x69, 0x6e, 0x64,
+ 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x29, 0x7b, 0x6c,
+ 0x65, 0x74, 0x20, 0x66, 0x6e, 0x3d, 0x62, 0x69, 0x6e, 0x64,
+ 0x3b, 0x66, 0x6e, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29,
+ 0x26, 0x26, 0x66, 0x6e, 0x21, 0x3d, 0x3d, 0x22, 0x5f, 0x5f,
+ 0x77, 0x65, 0x62, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x72, 0x65,
+ 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x5f, 0x22, 0x26, 0x26, 0x74,
+ 0x79, 0x70, 0x65, 0x6f, 0x66, 0x20, 0x77, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x5b, 0x66, 0x6e, 0x5d, 0x3e, 0x22, 0x75, 0x22,
+ 0x26, 0x26, 0x28, 0x74, 0x68, 0x69, 0x73, 0x5b, 0x66, 0x6e,
+ 0x5d, 0x3d, 0x28, 0x2e, 0x2e, 0x2e, 0x61, 0x72, 0x67, 0x73,
+ 0x29, 0x3d, 0x3e, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x61,
+ 0x6c, 0x6c, 0x28, 0x66, 0x6e, 0x2c, 0x2e, 0x2e, 0x2e, 0x61,
+ 0x72, 0x67, 0x73, 0x29, 0x2c, 0x77, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x5b, 0x66, 0x6e, 0x5d, 0x3d, 0x28, 0x2e, 0x2e, 0x2e,
+ 0x61, 0x72, 0x67, 0x73, 0x29, 0x3d, 0x3e, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x66, 0x6e, 0x2c,
+ 0x2e, 0x2e, 0x2e, 0x61, 0x72, 0x67, 0x73, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x20, 0x66, 0x75,
+ 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x24, 0x7b,
+ 0x66, 0x6e, 0x7d, 0x5d, 0x60, 0x29, 0x29, 0x7d, 0x7d, 0x23,
+ 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55,
+ 0x72, 0x6c, 0x28, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x3d, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x28, 0x64, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x73, 0x29, 0x2e, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x28, 0x73, 0x3d, 0x3e, 0x73, 0x2e, 0x73, 0x72,
+ 0x63, 0x21, 0x3d, 0x3d, 0x6e, 0x75, 0x6c, 0x6c, 0x26, 0x26,
+ 0x73, 0x2e, 0x73, 0x72, 0x63, 0x2e, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x28, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x22, 0x29, 0x26, 0x26, 0x73, 0x2e, 0x73, 0x72,
+ 0x63, 0x2e, 0x65, 0x6e, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68,
+ 0x28, 0x22, 0x77, 0x65, 0x62, 0x75, 0x69, 0x2e, 0x6a, 0x73,
+ 0x22, 0x29, 0x29, 0x2e, 0x6d, 0x61, 0x70, 0x28, 0x73, 0x3d,
+ 0x3e, 0x73, 0x2e, 0x73, 0x72, 0x63, 0x29, 0x3b, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3d,
+ 0x3d, 0x3d, 0x30, 0x3f, 0x6e, 0x75, 0x6c, 0x6c, 0x3a, 0x6e,
+ 0x65, 0x77, 0x20, 0x55, 0x52, 0x4c, 0x28, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x7d, 0x23,
+ 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73,
+ 0x65, 0x28, 0x66, 0x6e, 0x2c, 0x2e, 0x2e, 0x2e, 0x61, 0x72,
+ 0x67, 0x73, 0x29, 0x7b, 0x2d, 0x2d, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d,
+ 0x69, 0x73, 0x65, 0x49, 0x44, 0x5b, 0x30, 0x5d, 0x3b, 0x6c,
+ 0x65, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x3d,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x55, 0x69,
+ 0x6e, 0x74, 0x31, 0x36, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69,
+ 0x73, 0x65, 0x49, 0x44, 0x5b, 0x30, 0x5d, 0x29, 0x2c, 0x61,
+ 0x72, 0x67, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x73,
+ 0x3d, 0x61, 0x72, 0x67, 0x73, 0x2e, 0x6d, 0x61, 0x70, 0x28,
+ 0x61, 0x72, 0x67, 0x3d, 0x3e, 0x74, 0x79, 0x70, 0x65, 0x6f,
+ 0x66, 0x20, 0x61, 0x72, 0x67, 0x3d, 0x3d, 0x22, 0x6f, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3f, 0x61, 0x72, 0x67, 0x2e,
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x6e, 0x65, 0x77,
+ 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64,
+ 0x65, 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64,
+ 0x65, 0x28, 0x61, 0x72, 0x67, 0x2e, 0x74, 0x6f, 0x53, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x29, 0x2e, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x29, 0x2e, 0x6a, 0x6f, 0x69, 0x6e,
+ 0x28, 0x22, 0x3b, 0x22, 0x29, 0x2c, 0x61, 0x72, 0x67, 0x73,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x3d, 0x6e, 0x65, 0x77,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61,
+ 0x79, 0x3b, 0x66, 0x6f, 0x72, 0x28, 0x6c, 0x65, 0x74, 0x20,
+ 0x61, 0x72, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x67,
+ 0x73, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x3b, 0x74, 0x79, 0x70, 0x65, 0x6f, 0x66,
+ 0x20, 0x61, 0x72, 0x67, 0x3d, 0x3d, 0x22, 0x6f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x22, 0x3f, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x3d, 0x61, 0x72, 0x67, 0x3a, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78,
+ 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29,
+ 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x61, 0x72,
+ 0x67, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x28, 0x29, 0x29, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x74, 0x65,
+ 0x6d, 0x70, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e,
+ 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x72,
+ 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x6c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2b, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2b,
+ 0x31, 0x29, 0x3b, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x65,
+ 0x74, 0x28, 0x61, 0x72, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x2c, 0x30, 0x29, 0x2c, 0x74, 0x65, 0x6d, 0x70,
+ 0x2e, 0x73, 0x65, 0x74, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x2c, 0x61, 0x72, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29,
+ 0x2c, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x61, 0x72, 0x67, 0x73,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x6c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x2b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5d, 0x3d, 0x30,
+ 0x2c, 0x61, 0x72, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x73, 0x3d, 0x74, 0x65, 0x6d, 0x70, 0x7d, 0x6c, 0x65, 0x74,
+ 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x6e, 0x65,
+ 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x28, 0x30, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x3d, 0x64, 0x61, 0x74,
+ 0x61, 0x3d, 0x3e, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65,
+ 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x6e, 0x65,
+ 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e,
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2b, 0x64, 0x61, 0x74,
+ 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b,
+ 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e,
+ 0x73, 0x65, 0x74, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x29, 0x2c, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x2e, 0x73, 0x65, 0x74, 0x28, 0x64, 0x61, 0x74, 0x61,
+ 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x7d, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+ 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73,
+ 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74,
+ 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x57, 0x45, 0x42, 0x55, 0x49, 0x5f,
+ 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5d,
+ 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50,
+ 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69,
+ 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x5d, 0x29, 0x29,
+ 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73,
+ 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74,
+ 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x30, 0x2c,
+ 0x30, 0x5d, 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79,
+ 0x28, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d,
+ 0x44, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x55, 0x4e,
+ 0x43, 0x5d, 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x28, 0x66, 0x6e, 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61,
+ 0x79, 0x28, 0x5b, 0x30, 0x5d, 0x29, 0x29, 0x2c, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e,
+ 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x28, 0x61, 0x72, 0x67, 0x73, 0x4c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x73, 0x29, 0x29, 0x2c, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e,
+ 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72,
+ 0x72, 0x61, 0x79, 0x28, 0x5b, 0x30, 0x5d, 0x29, 0x29, 0x2c,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68,
+ 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38,
+ 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x72, 0x67, 0x73,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x29, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, 0x4f,
+ 0x4b, 0x45, 0x4e, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x61, 0x64, 0x64, 0x49, 0x44, 0x28, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x2c, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x29, 0x2c,
+ 0x6e, 0x65, 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73,
+ 0x65, 0x28, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x3d,
+ 0x3e, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x61,
+ 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x52,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5b, 0x63, 0x61, 0x6c,
+ 0x6c, 0x49, 0x64, 0x5d, 0x3d, 0x72, 0x65, 0x73, 0x6f, 0x6c,
+ 0x76, 0x65, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73,
+ 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x28, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x29, 0x7d, 0x29, 0x7d, 0x61, 0x73,
+ 0x79, 0x6e, 0x63, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x6f,
+ 0x72, 0x65, 0x28, 0x66, 0x6e, 0x2c, 0x2e, 0x2e, 0x2e, 0x61,
+ 0x72, 0x67, 0x73, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x61, 0x6c,
+ 0x6c, 0x28, 0x22, 0x5f, 0x5f, 0x77, 0x65, 0x62, 0x75, 0x69,
+ 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f,
+ 0x5f, 0x22, 0x2c, 0x66, 0x6e, 0x2c, 0x2e, 0x2e, 0x2e, 0x61,
+ 0x72, 0x67, 0x73, 0x29, 0x7d, 0x23, 0x77, 0x73, 0x49, 0x73,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28,
+ 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x26, 0x26, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x72, 0x65,
+ 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3d, 0x3d,
+ 0x3d, 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74,
+ 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x7d, 0x23, 0x77, 0x73, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x28, 0x29, 0x7b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29,
+ 0x26, 0x26, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73,
+ 0x2e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x3d, 0x21,
+ 0x31, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x55, 0x72, 0x6c, 0x3d, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x55, 0x72, 0x6c, 0x28, 0x29, 0x2c, 0x68, 0x6f, 0x73,
+ 0x74, 0x3d, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x72,
+ 0x6c, 0x21, 0x3d, 0x3d, 0x6e, 0x75, 0x6c, 0x6c, 0x3f, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x72, 0x6c, 0x2e, 0x68,
+ 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x2c, 0x75, 0x72, 0x6c, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x3f,
+ 0x22, 0x77, 0x73, 0x73, 0x3a, 0x2f, 0x2f, 0x22, 0x2b, 0x68,
+ 0x6f, 0x73, 0x74, 0x3a, 0x22, 0x77, 0x73, 0x3a, 0x2f, 0x2f,
+ 0x22, 0x2b, 0x68, 0x6f, 0x73, 0x74, 0x3b, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x3d, 0x6e, 0x65, 0x77, 0x20,
+ 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x28,
+ 0x60, 0x24, 0x7b, 0x75, 0x72, 0x6c, 0x7d, 0x3a, 0x24, 0x7b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x70, 0x6f, 0x72, 0x74,
+ 0x7d, 0x2f, 0x5f, 0x77, 0x65, 0x62, 0x75, 0x69, 0x5f, 0x77,
+ 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x60,
+ 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73,
+ 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x22, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x6f, 0x6e, 0x6f, 0x70, 0x65,
+ 0x6e, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73,
+ 0x4f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x2e, 0x62, 0x69, 0x6e,
+ 0x64, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x6f, 0x6e, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x4f, 0x6e, 0x4d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x2e, 0x62, 0x69, 0x6e, 0x64, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x6f, 0x6e, 0x63, 0x6c, 0x6f,
+ 0x73, 0x65, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77,
+ 0x73, 0x4f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x2e, 0x62,
+ 0x69, 0x6e, 0x64, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x6f,
+ 0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x4f, 0x6e, 0x45, 0x72, 0x72,
+ 0x6f, 0x72, 0x2e, 0x62, 0x69, 0x6e, 0x64, 0x28, 0x74, 0x68,
+ 0x69, 0x73, 0x29, 0x7d, 0x23, 0x77, 0x73, 0x4f, 0x6e, 0x4f,
+ 0x70, 0x65, 0x6e, 0x3d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d,
+ 0x3e, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73,
+ 0x57, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x3d, 0x21, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x75, 0x6e, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65,
+ 0x55, 0x49, 0x28, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x57,
+ 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x29, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x28, 0x29, 0x7d, 0x3b,
+ 0x23, 0x77, 0x73, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x3d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x3e, 0x7b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x22, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e,
+ 0x22, 0x29, 0x7d, 0x3b, 0x23, 0x77, 0x73, 0x4f, 0x6e, 0x43,
+ 0x6c, 0x6f, 0x73, 0x65, 0x3d, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x3d, 0x3e, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63,
+ 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x3d, 0x3d, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43,
+ 0x4d, 0x44, 0x5f, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x3f, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x3d, 0x30, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57,
+ 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c,
+ 0x6f, 0x73, 0x74, 0x2e, 0x20, 0x4e, 0x61, 0x76, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x5b,
+ 0x24, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c,
+ 0x6f, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5d,
+ 0x60, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x21, 0x30, 0x2c, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73, 0x2e, 0x6c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x29, 0x29, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x77, 0x73, 0x53, 0x74, 0x61, 0x79, 0x41, 0x6c, 0x69,
+ 0x76, 0x65, 0x3f, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
+ 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65,
+ 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f,
+ 0x73, 0x74, 0x20, 0x28, 0x24, 0x7b, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x29, 0x2e, 0x20,
+ 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6e, 0x67, 0x2e, 0x2e, 0x2e, 0x60, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65,
+ 0x55, 0x69, 0x28, 0x29, 0x2c, 0x73, 0x65, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x28, 0x29, 0x3d, 0x3e,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x28, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x53, 0x74, 0x61, 0x79,
+ 0x41, 0x6c, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f,
+ 0x75, 0x74, 0x29, 0x29, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x6c, 0x6f, 0x67, 0x3f, 0x28, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57,
+ 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c,
+ 0x6f, 0x73, 0x74, 0x20, 0x28, 0x24, 0x7b, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x29, 0x60,
+ 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x66, 0x72,
+ 0x65, 0x65, 0x7a, 0x65, 0x55, 0x69, 0x28, 0x29, 0x29, 0x3a,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c, 0x6f, 0x73,
+ 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x54, 0x69, 0x6d,
+ 0x65, 0x72, 0x28, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x28, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e,
+ 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54,
+ 0x45, 0x44, 0x29, 0x7d, 0x3b, 0x23, 0x75, 0x73, 0x65, 0x72,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x62,
+ 0x61, 0x63, 0x6b, 0x3d, 0x65, 0x3d, 0x3e, 0x7b, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x26, 0x26,
+ 0x65, 0x21, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x26, 0x26,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x61, 0x73,
+ 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x65, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x28,
+ 0x65, 0x29, 0x29, 0x7d, 0x3b, 0x23, 0x77, 0x73, 0x4f, 0x6e,
+ 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3d, 0x61, 0x73,
+ 0x79, 0x6e, 0x63, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d,
+ 0x3e, 0x7b, 0x76, 0x61, 0x72, 0x20, 0x5f, 0x61, 0x2c, 0x5f,
+ 0x62, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x38, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69,
+ 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x29,
+ 0x3b, 0x69, 0x66, 0x28, 0x21, 0x28, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x38, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x3c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45,
+ 0x29, 0x26, 0x26, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38,
+ 0x5b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e,
+ 0x5d, 0x3d, 0x3d, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x57, 0x45, 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e,
+ 0x41, 0x54, 0x55, 0x52, 0x45, 0x29, 0x69, 0x66, 0x28, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x69, 0x73, 0x54, 0x65, 0x78,
+ 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x61, 0x6e, 0x64, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x38, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52,
+ 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x43, 0x4d, 0x44,
+ 0x5d, 0x29, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x63, 0x61,
+ 0x6c, 0x6c, 0x49, 0x64, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x67, 0x65, 0x74, 0x49, 0x44, 0x28, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x38, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f,
+ 0x49, 0x44, 0x29, 0x3b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68,
+ 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38, 0x5b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f,
+ 0x43, 0x4f, 0x4c, 0x5f, 0x43, 0x4d, 0x44, 0x5d, 0x29, 0x7b,
+ 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4a, 0x53, 0x5f, 0x51, 0x55,
+ 0x49, 0x43, 0x4b, 0x3a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4a,
+ 0x53, 0x3a, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a,
+ 0x65, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x67, 0x65,
+ 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x72, 0x46, 0x72,
+ 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x62,
+ 0x75, 0x66, 0x66, 0x65, 0x72, 0x38, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f,
+ 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x29, 0x2e, 0x72, 0x65,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x28, 0x2f, 0x28, 0x3f, 0x3a,
+ 0x5c, 0x72, 0x5c, 0x6e, 0x7c, 0x5c, 0x72, 0x7c, 0x5c, 0x6e,
+ 0x29, 0x2f, 0x67, 0x2c, 0x60, 0x0a, 0x60, 0x29, 0x3b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x4a,
+ 0x53, 0x20, 0x5b, 0x24, 0x7b, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x7d,
+ 0x5d, 0x60, 0x29, 0x3b, 0x6c, 0x65, 0x74, 0x20, 0x46, 0x75,
+ 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x22, 0x75,
+ 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x2c,
+ 0x46, 0x75, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3d, 0x21,
+ 0x31, 0x2c, 0x69, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79,
+ 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x21, 0x31, 0x3b,
+ 0x74, 0x72, 0x79, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74,
+ 0x20, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x29,
+ 0x28, 0x29, 0x3b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x6f, 0x66,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61,
+ 0x79, 0x3f, 0x28, 0x46, 0x75, 0x6e, 0x52, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x3d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2c,
+ 0x69, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x21, 0x30, 0x29, 0x3a, 0x46,
+ 0x75, 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x53,
+ 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x29, 0x7d, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28,
+ 0x65, 0x29, 0x7b, 0x46, 0x75, 0x6e, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x3d, 0x21, 0x30, 0x2c, 0x46, 0x75, 0x6e, 0x52, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x65, 0x2e, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x7d, 0x69, 0x66, 0x28, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x38, 0x5b, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
+ 0x5f, 0x43, 0x4d, 0x44, 0x5d, 0x3d, 0x3d, 0x3d, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4a, 0x53,
+ 0x5f, 0x51, 0x55, 0x49, 0x43, 0x4b, 0x29, 0x72, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x3b, 0x69, 0x66, 0x28, 0x46, 0x75, 0x6e,
+ 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x3d, 0x3d, 0x76,
+ 0x6f, 0x69, 0x64, 0x20, 0x30, 0x26, 0x26, 0x28, 0x46, 0x75,
+ 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3d, 0x22, 0x75,
+ 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67,
+ 0x26, 0x26, 0x21, 0x46, 0x75, 0x6e, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x29, 0x69, 0x66, 0x28, 0x69, 0x73, 0x42, 0x69, 0x6e,
+ 0x61, 0x72, 0x79, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x29,
+ 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72,
+ 0x79, 0x44, 0x61, 0x74, 0x61, 0x3d, 0x46, 0x75, 0x6e, 0x52,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2c, 0x68, 0x65, 0x78, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x3d, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x28, 0x62, 0x69,
+ 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x73,
+ 0x6c, 0x69, 0x63, 0x65, 0x28, 0x30, 0x2c, 0x36, 0x34, 0x29,
+ 0x29, 0x2e, 0x6d, 0x61, 0x70, 0x28, 0x62, 0x3d, 0x3e, 0x60,
+ 0x30, 0x78, 0x24, 0x7b, 0x62, 0x2e, 0x74, 0x6f, 0x53, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70,
+ 0x61, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x28, 0x32, 0x2c,
+ 0x22, 0x30, 0x22, 0x29, 0x7d, 0x60, 0x29, 0x2e, 0x6a, 0x6f,
+ 0x69, 0x6e, 0x28, 0x22, 0x2c, 0x20, 0x22, 0x29, 0x3b, 0x63,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67,
+ 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e,
+ 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x4a, 0x53,
+ 0x20, 0x2d, 0x3e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e,
+ 0x20, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x28,
+ 0x24, 0x7b, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61,
+ 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x7d,
+ 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x29, 0x20, 0x5b, 0x24,
+ 0x7b, 0x68, 0x65, 0x78, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x7d, 0x24, 0x7b, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,
+ 0x44, 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74,
+ 0x68, 0x3e, 0x36, 0x34, 0x3f, 0x22, 0x2e, 0x2e, 0x2e, 0x22,
+ 0x3a, 0x22, 0x22, 0x7d, 0x5d, 0x60, 0x29, 0x7d, 0x65, 0x6c,
+ 0x73, 0x65, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x74, 0x72,
+ 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x3d, 0x53, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x28, 0x46, 0x75, 0x6e, 0x52, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x29, 0x3b, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57,
+ 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x4d,
+ 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x4a, 0x53, 0x20, 0x2d, 0x3e,
+ 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x53, 0x75,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x28, 0x24, 0x7b, 0x6e,
+ 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x44, 0x61, 0x74, 0x61, 0x29, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x7d, 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x29,
+ 0x20, 0x5b, 0x24, 0x7b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x44, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x28, 0x30, 0x2c, 0x36, 0x34, 0x29,
+ 0x7d, 0x24, 0x7b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44,
+ 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x3e, 0x36, 0x34, 0x3f, 0x22, 0x2e, 0x2e, 0x2e, 0x22, 0x3a,
+ 0x22, 0x22, 0x7d, 0x5d, 0x60, 0x29, 0x7d, 0x65, 0x6c, 0x73,
+ 0x65, 0x20, 0x69, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x46, 0x75, 0x6e, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e,
+ 0x67, 0x3d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x46,
+ 0x75, 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x29, 0x3b,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x4a,
+ 0x53, 0x20, 0x2d, 0x3e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x5b, 0x24,
+ 0x7b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x28, 0x30, 0x2c, 0x36, 0x34, 0x29, 0x7d, 0x24,
+ 0x7b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3e,
+ 0x36, 0x34, 0x3f, 0x22, 0x2e, 0x2e, 0x2e, 0x22, 0x3a, 0x22,
+ 0x22, 0x7d, 0x5d, 0x60, 0x29, 0x7d, 0x6c, 0x65, 0x74, 0x20,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x6e, 0x65, 0x77,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61,
+ 0x79, 0x28, 0x30, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x50, 0x75, 0x73, 0x68, 0x3d, 0x64, 0x61, 0x74, 0x61,
+ 0x3d, 0x3e, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77,
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x3d, 0x6e, 0x65, 0x77,
+ 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61,
+ 0x79, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2b, 0x64, 0x61, 0x74, 0x61,
+ 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0x6e,
+ 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x73,
+ 0x65, 0x74, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x29,
+ 0x2c, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x2e, 0x73, 0x65, 0x74, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2c,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x7d, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50,
+ 0x75, 0x73, 0x68, 0x53, 0x74, 0x72, 0x3d, 0x64, 0x61, 0x74,
+ 0x61, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x64, 0x61, 0x74,
+ 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3e, 0x38,
+ 0x31, 0x39, 0x32, 0x29, 0x7b, 0x6c, 0x65, 0x74, 0x20, 0x65,
+ 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x3d, 0x6e, 0x65, 0x77,
+ 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64,
+ 0x65, 0x72, 0x3b, 0x66, 0x6f, 0x72, 0x28, 0x6c, 0x65, 0x74,
+ 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, 0x64, 0x61, 0x74,
+ 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x69,
+ 0x2b, 0x3d, 0x38, 0x31, 0x39, 0x32, 0x29, 0x7b, 0x6c, 0x65,
+ 0x74, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x3d, 0x64, 0x61,
+ 0x74, 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x28, 0x69, 0x2c, 0x4d, 0x61, 0x74, 0x68, 0x2e,
+ 0x6d, 0x69, 0x6e, 0x28, 0x69, 0x2b, 0x38, 0x31, 0x39, 0x32,
+ 0x2c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x29, 0x29, 0x2c, 0x65, 0x6e, 0x63, 0x6f, 0x64,
+ 0x65, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x3d, 0x65, 0x6e,
+ 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x65, 0x6e, 0x63, 0x6f,
+ 0x64, 0x65, 0x28, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x29, 0x3b,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68,
+ 0x28, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x43, 0x68,
+ 0x75, 0x6e, 0x6b, 0x29, 0x7d, 0x7d, 0x65, 0x6c, 0x73, 0x65,
+ 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73,
+ 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74,
+ 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x28, 0x29, 0x2e,
+ 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x64, 0x61, 0x74,
+ 0x61, 0x29, 0x29, 0x7d, 0x3b, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79,
+ 0x28, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x57, 0x45,
+ 0x42, 0x55, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54,
+ 0x55, 0x52, 0x45, 0x5d, 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65,
+ 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72,
+ 0x61, 0x79, 0x28, 0x5b, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x5d, 0x29, 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x50, 0x75, 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79,
+ 0x28, 0x5b, 0x30, 0x2c, 0x30, 0x5d, 0x29, 0x29, 0x2c, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28,
+ 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41,
+ 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x4a, 0x53, 0x5d, 0x29,
+ 0x29, 0x2c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75,
+ 0x73, 0x68, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e,
+ 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x46, 0x75,
+ 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3f, 0x5b, 0x31, 0x5d,
+ 0x3a, 0x5b, 0x30, 0x5d, 0x29, 0x29, 0x2c, 0x69, 0x73, 0x42,
+ 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x3f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75,
+ 0x73, 0x68, 0x28, 0x46, 0x75, 0x6e, 0x52, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x29, 0x3a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x50, 0x75, 0x73, 0x68, 0x53, 0x74, 0x72, 0x28, 0x46, 0x75,
+ 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x29, 0x2c, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x28,
+ 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41,
+ 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x30, 0x5d, 0x29, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64,
+ 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x28, 0x70, 0x61, 0x63, 0x6b,
+ 0x65, 0x74, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f,
+ 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x29, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x61, 0x64, 0x64, 0x49, 0x44, 0x28, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2c, 0x63, 0x61, 0x6c, 0x6c,
+ 0x49, 0x64, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x44,
+ 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x73, 0x65,
+ 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x28, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x29, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b,
+ 0x3b, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x41, 0x4c, 0x4c,
+ 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x3a, 0x7b, 0x6c, 0x65, 0x74,
+ 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x72,
+ 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
+ 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f,
+ 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x29, 0x3b,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26,
+ 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c,
+ 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20,
+ 0x2d, 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20,
+ 0x43, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x20, 0x5b, 0x24, 0x7b, 0x63, 0x61, 0x6c,
+ 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x7d,
+ 0x5d, 0x60, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73,
+ 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5b, 0x63,
+ 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x5d, 0x26, 0x26, 0x28, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x52,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x23, 0x24,
+ 0x7b, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x7d, 0x2e, 0x2e,
+ 0x2e, 0x60, 0x29, 0x2c, 0x28, 0x5f, 0x62, 0x3d, 0x28, 0x5f,
+ 0x61, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x61,
+ 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x52,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x29, 0x5b, 0x63, 0x61,
+ 0x6c, 0x6c, 0x49, 0x64, 0x5d, 0x29, 0x3d, 0x3d, 0x6e, 0x75,
+ 0x6c, 0x6c, 0x7c, 0x7c, 0x5f, 0x62, 0x2e, 0x63, 0x61, 0x6c,
+ 0x6c, 0x28, 0x5f, 0x61, 0x2c, 0x63, 0x61, 0x6c, 0x6c, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x29, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50,
+ 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x6f,
+ 0x6c, 0x76, 0x65, 0x5b, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64,
+ 0x5d, 0x3d, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x30, 0x29, 0x7d,
+ 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x63, 0x61, 0x73, 0x65,
+ 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44,
+ 0x5f, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x3a, 0x6c, 0x65, 0x74, 0x20, 0x75, 0x72, 0x6c, 0x3d,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x67, 0x65, 0x74, 0x44,
+ 0x61, 0x74, 0x61, 0x53, 0x74, 0x72, 0x46, 0x72, 0x6f, 0x6d,
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x38, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f,
+ 0x44, 0x41, 0x54, 0x41, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60,
+ 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43,
+ 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x4e, 0x61, 0x76, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x24, 0x7b,
+ 0x75, 0x72, 0x6c, 0x7d, 0x5d, 0x60, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f,
+ 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x2c, 0x75, 0x72, 0x6c, 0x29, 0x3b, 0x62, 0x72, 0x65, 0x61,
+ 0x6b, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x57, 0x49, 0x4e,
+ 0x44, 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45,
+ 0x44, 0x3a, 0x6c, 0x65, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x41, 0x6e, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x67, 0x65, 0x74,
+ 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x72, 0x46, 0x72, 0x6f,
+ 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x38, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
+ 0x5f, 0x44, 0x41, 0x54, 0x41, 0x29, 0x2c, 0x7b, 0x78, 0x2c,
+ 0x79, 0x2c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x7d, 0x3d, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x70, 0x61, 0x72, 0x73, 0x65, 0x44, 0x69, 0x6d,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x28, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x41, 0x6e, 0x64, 0x48, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x58, 0x3d, 0x78, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x59, 0x3d, 0x79, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26,
+ 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c,
+ 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20,
+ 0x2d, 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x52, 0x65, 0x73,
+ 0x69, 0x7a, 0x65, 0x64, 0x20, 0x5b, 0x78, 0x3a, 0x20, 0x24,
+ 0x7b, 0x78, 0x7d, 0x2c, 0x20, 0x79, 0x3a, 0x20, 0x24, 0x7b,
+ 0x79, 0x7d, 0x2c, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
+ 0x20, 0x24, 0x7b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x7d, 0x2c,
+ 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x24,
+ 0x7b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x5d, 0x60,
+ 0x29, 0x3b, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x63, 0x61,
+ 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43,
+ 0x4d, 0x44, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x49, 0x44, 0x3a,
+ 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x45, 0x6c, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x3d, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74,
+ 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54,
+ 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x29,
+ 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67,
+ 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49,
+ 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e,
+ 0x20, 0x4e, 0x65, 0x77, 0x20, 0x42, 0x69, 0x6e, 0x64, 0x20,
+ 0x49, 0x44, 0x20, 0x5b, 0x24, 0x7b, 0x6e, 0x65, 0x77, 0x45,
+ 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x5d, 0x60, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e,
+ 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x6e, 0x65, 0x77, 0x45,
+ 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x29, 0x7c, 0x7c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e, 0x64, 0x73,
+ 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x28,
+ 0x6e, 0x65, 0x77, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x73, 0x4c,
+ 0x69, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x62, 0x72, 0x65, 0x61,
+ 0x6b, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x4c, 0x4f,
+ 0x53, 0x45, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x6f, 0x67, 0x3f, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x57, 0x65, 0x62,
+ 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20,
+ 0x2d, 0x3e, 0x20, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x22, 0x29,
+ 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49,
+ 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x28, 0x29, 0x26, 0x26, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x77, 0x73, 0x53, 0x74, 0x61, 0x79, 0x41, 0x6c, 0x69,
+ 0x76, 0x65, 0x3d, 0x21, 0x31, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x77, 0x73, 0x2e, 0x63, 0x6c, 0x6f, 0x73, 0x65,
+ 0x28, 0x29, 0x29, 0x29, 0x3a, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+ 0x6c, 0x54, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x6c, 0x6f, 0x73,
+ 0x65, 0x28, 0x29, 0x3b, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b,
+ 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x43, 0x4d, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b,
+ 0x5f, 0x54, 0x4b, 0x3a, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x38, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41,
+ 0x54, 0x41, 0x5d, 0x21, 0x3d, 0x30, 0x2c, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x48, 0x65, 0x78, 0x3d, 0x60, 0x30, 0x78, 0x24,
+ 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e,
+ 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64, 0x53,
+ 0x74, 0x61, 0x72, 0x74, 0x28, 0x38, 0x2c, 0x22, 0x30, 0x22,
+ 0x29, 0x7d, 0x60, 0x3b, 0x69, 0x66, 0x28, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57,
+ 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x4d,
+ 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x20, 0x5b, 0x24, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x48,
+ 0x65, 0x78, 0x7d, 0x5d, 0x20, 0x41, 0x63, 0x63, 0x65, 0x70,
+ 0x74, 0x65, 0x64, 0x60, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x63, 0x63,
+ 0x65, 0x70, 0x74, 0x65, 0x64, 0x3d, 0x21, 0x30, 0x3b, 0x6c,
+ 0x65, 0x74, 0x20, 0x63, 0x73, 0x76, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61,
+ 0x53, 0x74, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x38, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50, 0x52,
+ 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41, 0x54,
+ 0x41, 0x2b, 0x31, 0x29, 0x3b, 0x63, 0x73, 0x76, 0x3d, 0x63,
+ 0x73, 0x76, 0x2e, 0x65, 0x6e, 0x64, 0x73, 0x57, 0x69, 0x74,
+ 0x68, 0x28, 0x22, 0x2c, 0x22, 0x29, 0x3f, 0x63, 0x73, 0x76,
+ 0x2e, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x28, 0x30, 0x2c, 0x2d,
+ 0x31, 0x29, 0x3a, 0x63, 0x73, 0x76, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e, 0x64, 0x73, 0x4c, 0x69,
+ 0x73, 0x74, 0x3d, 0x63, 0x73, 0x76, 0x2e, 0x73, 0x70, 0x6c,
+ 0x69, 0x74, 0x28, 0x22, 0x2c, 0x22, 0x29, 0x2c, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x28,
+ 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x75, 0x73,
+ 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x6c,
+ 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x28, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x4f, 0x4e,
+ 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x29, 0x7d, 0x65, 0x6c,
+ 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62,
+ 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20,
+ 0x2d, 0x3e, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x5b,
+ 0x24, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x65, 0x78,
+ 0x7d, 0x5d, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x41, 0x63, 0x63,
+ 0x65, 0x70, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x52, 0x65, 0x6c,
+ 0x6f, 0x61, 0x64, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, 0x2e,
+ 0x2e, 0x60, 0x29, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x21, 0x30, 0x2c, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x77, 0x73, 0x53, 0x74, 0x61,
+ 0x79, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x3d, 0x21, 0x31, 0x2c,
+ 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x68, 0x69, 0x73,
+ 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x3b, 0x62,
+ 0x72, 0x65, 0x61, 0x6b, 0x7d, 0x7d, 0x65, 0x6c, 0x73, 0x65,
+ 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x28, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x38, 0x5b, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
+ 0x5f, 0x43, 0x4d, 0x44, 0x5d, 0x29, 0x7b, 0x63, 0x61, 0x73,
+ 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x43, 0x4d,
+ 0x44, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x41, 0x57,
+ 0x3a, 0x6c, 0x65, 0x74, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x3d, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74,
+ 0x61, 0x53, 0x74, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x38, 0x2c, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x50,
+ 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x41,
+ 0x54, 0x41, 0x29, 0x2c, 0x72, 0x61, 0x77, 0x44, 0x61, 0x74,
+ 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3d, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f,
+ 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x2b, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x2e,
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2b, 0x31, 0x2c, 0x72,
+ 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65,
+ 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38, 0x2e, 0x6c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2d, 0x72, 0x61, 0x77, 0x44,
+ 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2d, 0x31,
+ 0x2c, 0x75, 0x73, 0x65, 0x72, 0x52, 0x61, 0x77, 0x44, 0x61,
+ 0x74, 0x61, 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x38,
+ 0x2e, 0x73, 0x75, 0x62, 0x61, 0x72, 0x72, 0x61, 0x79, 0x28,
+ 0x72, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64,
+ 0x65, 0x78, 0x2c, 0x72, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61,
+ 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x72, 0x61, 0x77, 0x44,
+ 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x60, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x2d, 0x3e, 0x20, 0x52,
+ 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x52, 0x61,
+ 0x77, 0x20, 0x24, 0x7b, 0x72, 0x61, 0x77, 0x44, 0x61, 0x74,
+ 0x61, 0x53, 0x69, 0x7a, 0x65, 0x7d, 0x20, 0x62, 0x79, 0x74,
+ 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x5b, 0x24, 0x7b,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61,
+ 0x6d, 0x65, 0x7d, 0x28, 0x29, 0x5d, 0x60, 0x29, 0x2c, 0x74,
+ 0x79, 0x70, 0x65, 0x6f, 0x66, 0x20, 0x77, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x5d, 0x3d, 0x3d, 0x22, 0x66,
+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x77,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5b, 0x66, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x5d, 0x28,
+ 0x75, 0x73, 0x65, 0x72, 0x52, 0x61, 0x77, 0x44, 0x61, 0x74,
+ 0x61, 0x29, 0x3a, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x41,
+ 0x73, 0x79, 0x6e, 0x63, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x2b, 0x22, 0x28, 0x75, 0x73,
+ 0x65, 0x72, 0x52, 0x61, 0x77, 0x44, 0x61, 0x74, 0x61, 0x29,
+ 0x22, 0x29, 0x28, 0x29, 0x3b, 0x62, 0x72, 0x65, 0x61, 0x6b,
+ 0x7d, 0x7d, 0x3b, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x63,
+ 0x61, 0x6c, 0x6c, 0x28, 0x66, 0x6e, 0x2c, 0x2e, 0x2e, 0x2e,
+ 0x61, 0x72, 0x67, 0x73, 0x29, 0x7b, 0x69, 0x66, 0x28, 0x21,
+ 0x66, 0x6e, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+ 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x2e, 0x72, 0x65,
+ 0x6a, 0x65, 0x63, 0x74, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x53,
+ 0x79, 0x6e, 0x74, 0x61, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x28, 0x22, 0x4e, 0x6f, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x69, 0x73,
+ 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x22,
+ 0x29, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x21, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x29, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x50, 0x72, 0x6f, 0x6d,
+ 0x69, 0x73, 0x65, 0x2e, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74,
+ 0x28, 0x6e, 0x65, 0x77, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x28, 0x22, 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65,
+ 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x29,
+ 0x29, 0x3b, 0x69, 0x66, 0x28, 0x66, 0x6e, 0x21, 0x3d, 0x3d,
+ 0x22, 0x5f, 0x5f, 0x77, 0x65, 0x62, 0x75, 0x69, 0x5f, 0x63,
+ 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x5f, 0x22,
+ 0x26, 0x26, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x41,
+ 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x26, 0x26,
+ 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x62, 0x69, 0x6e,
+ 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x60, 0x24, 0x7b, 0x66,
+ 0x6e, 0x7d, 0x60, 0x29, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x2e,
+ 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x28, 0x6e, 0x65, 0x77,
+ 0x20, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x60, 0x4e, 0x6f, 0x20,
+ 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x61,
+ 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x66, 0x6f,
+ 0x72, 0x20, 0x22, 0x24, 0x7b, 0x66, 0x6e, 0x7d, 0x22, 0x60,
+ 0x29, 0x29, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c,
+ 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x60, 0x57, 0x65, 0x62,
+ 0x55, 0x49, 0x20, 0x2d, 0x3e, 0x20, 0x43, 0x61, 0x6c, 0x6c,
+ 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x24, 0x7b, 0x66, 0x6e, 0x7d,
+ 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x5d, 0x60, 0x29, 0x3b, 0x6c,
+ 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x74, 0x68,
+ 0x69, 0x73, 0x2e, 0x23, 0x63, 0x61, 0x6c, 0x6c, 0x50, 0x72,
+ 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x28, 0x66, 0x6e, 0x2c, 0x2e,
+ 0x2e, 0x2e, 0x61, 0x72, 0x67, 0x73, 0x29, 0x3b, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6f,
+ 0x66, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x21, 0x3d, 0x22, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22,
+ 0x3f, 0x22, 0x22, 0x3a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x7d, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67,
+ 0x69, 0x6e, 0x67, 0x28, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x29, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3f, 0x28,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x22, 0x57, 0x65, 0x62, 0x55, 0x49, 0x20, 0x2d,
+ 0x3e, 0x20, 0x4c, 0x6f, 0x67, 0x20, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x2e, 0x22, 0x29, 0x2c, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x3d, 0x21, 0x30, 0x29,
+ 0x3a, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x57, 0x65, 0x62, 0x55, 0x49,
+ 0x20, 0x2d, 0x3e, 0x20, 0x4c, 0x6f, 0x67, 0x20, 0x44, 0x69,
+ 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x22, 0x29, 0x2c,
+ 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x3d,
+ 0x21, 0x31, 0x29, 0x7d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x7b, 0x72, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x20, 0x62, 0x74, 0x6f, 0x61, 0x28, 0x64,
+ 0x61, 0x74, 0x61, 0x29, 0x7d, 0x64, 0x65, 0x63, 0x6f, 0x64,
+ 0x65, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x7b, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x74, 0x6f, 0x62, 0x28,
+ 0x64, 0x61, 0x74, 0x61, 0x29, 0x7d, 0x73, 0x65, 0x74, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61,
+ 0x63, 0x6b, 0x28, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63,
+ 0x6b, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x62,
+ 0x61, 0x63, 0x6b, 0x3d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61,
+ 0x63, 0x6b, 0x7d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x28, 0x29, 0x7b, 0x72, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x23,
+ 0x77, 0x73, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x28, 0x29, 0x26, 0x26, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x63,
+ 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x7d, 0x61, 0x73, 0x79,
+ 0x6e, 0x63, 0x20, 0x69, 0x73, 0x48, 0x69, 0x67, 0x68, 0x43,
+ 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x28, 0x29, 0x7b,
+ 0x6c, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x6f,
+ 0x72, 0x65, 0x28, 0x22, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x22, 0x29, 0x3b,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x2e, 0x23, 0x6c, 0x6f, 0x67, 0x26, 0x26, 0x63, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28,
+ 0x60, 0x43, 0x6f, 0x72, 0x65, 0x20, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, 0x5b, 0x24, 0x7b, 0x72,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x7d, 0x5d, 0x60,
+ 0x29, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x7d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x29, 0x7b, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x23, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x76, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x7d, 0x7d, 0x3b, 0x61, 0x64, 0x64, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x65, 0x72, 0x28, 0x22, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2c,
+ 0x28, 0x29, 0x3d, 0x3e, 0x7b, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x61,
+ 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x2c,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3d, 0x3e, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x29,
+ 0x2c, 0x61, 0x64, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73,
+ 0x68, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x64,
+ 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f,
+ 0x64, 0x79, 0x2c, 0x22, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22,
+ 0x2c, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x6d,
+ 0x65, 0x6e, 0x75, 0x22, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x3d, 0x3e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x74,
+ 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x29, 0x7d, 0x29, 0x3b, 0x0a,
+ 0x00
+};
+
+#endif // WEBUI_BRIDGE_H
\ No newline at end of file
diff --git a/v2/webui/build.cmake.sh b/v2/webui/build.cmake.sh
new file mode 100644
index 0000000..66b440b
--- /dev/null
+++ b/v2/webui/build.cmake.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+mkdir -p build
+
+# webui-2.5.0, examples
+pushd build
+cmake .. --fresh
+cmake --build . --config Debug
+popd
+
diff --git a/v2/webui/build.zig b/v2/webui/build.zig
new file mode 100644
index 0000000..1bc8dc5
--- /dev/null
+++ b/v2/webui/build.zig
@@ -0,0 +1,240 @@
+const std = @import("std");
+const Build = std.Build;
+const OptimizeMode = std.builtin.OptimizeMode;
+const Compile = Build.Step.Compile;
+const Module = Build.Module;
+const builtin = @import("builtin");
+
+const lib_name = "webui";
+var global_log_level: std.log.Level = .warn;
+
+/// Vendored dependencies of webui.
+pub const Dependency = enum {
+ civetweb,
+ // TODO: Check and add all vendored dependencies, e.g. "webview"
+};
+
+const DebugDependencies = std.EnumSet(Dependency);
+
+pub fn build(b: *Build) !void {
+ const target = b.standardTargetOptions(.{});
+ const optimize = b.standardOptimizeOption(.{});
+
+ const is_dynamic = b.option(bool, "dynamic", "build the dynamic library") orelse false;
+ const enable_tls = b.option(bool, "enable-tls", "enable TLS support") orelse false;
+ const enable_webui_log = b.option(bool, "enable-webui-log", "Enable WebUI log output") orelse false;
+ const verbose = b.option(std.log.Level, "verbose", "set verbose output") orelse .warn;
+ global_log_level = verbose;
+ // TODO: Support list of dependencies once support is limited to >0.13.0
+ const debug = b.option(Dependency, "debug", "enable dependency debug output");
+ const debug_dependencies = DebugDependencies.initMany(if (debug) |d| &.{d} else &.{});
+
+ if (enable_tls and !target.query.isNative()) {
+ log(.err, .WebUI, "cross compilation is not supported with TLS enabled", .{});
+ return error.InvalidBuildConfiguration;
+ }
+
+ log(.info, .WebUI, "Building {s} WebUI library{s}...", .{
+ if (is_dynamic) "dynamic" else "static",
+ if (enable_tls) " with TLS support" else "",
+ });
+ defer {
+ log(.info, .WebUI, "Done.", .{});
+ }
+
+ const webui = if (builtin.zig_version.minor == 14) (if (is_dynamic) b.addSharedLibrary(.{
+ .name = lib_name,
+ .target = target,
+ .optimize = optimize,
+ .pic = true,
+ }) else b.addStaticLibrary(.{
+ .name = lib_name,
+ .target = target,
+ .optimize = optimize,
+ })) else b.addLibrary(.{
+ .name = lib_name,
+ .linkage = if (is_dynamic) .dynamic else .static,
+ .root_module = b.createModule(.{
+ // not, pic enabled, zig will not allow to build a static library
+ // .pic = is_dynamic,
+ .pic = if (is_dynamic) is_dynamic else true,
+ .target = target,
+ .optimize = optimize,
+ }),
+ });
+
+ try addLinkerFlags(b, webui, enable_tls, debug_dependencies, enable_webui_log);
+
+ b.installArtifact(webui);
+
+ try build_examples(b, webui);
+}
+
+fn addLinkerFlags(
+ b: *Build,
+ webui: *Compile,
+ enable_tls: bool,
+ debug_dependencies: DebugDependencies,
+ enable_webui_log: bool,
+) !void {
+ const webui_target = webui.rootModuleTarget();
+ const is_windows = webui_target.os.tag == .windows;
+ const is_darwin = webui_target.os.tag == .macos;
+ const debug = webui.root_module.optimize.? == .Debug;
+
+ // Prepare compiler flags.
+ const no_tls_flags: []const []const u8 = &.{"-DNO_SSL"};
+ const tls_flags: []const []const u8 = &.{ "-DWEBUI_TLS", "-DNO_SSL_DL", "-DOPENSSL_API_1_1" };
+ const civetweb_flags: []const []const u8 = &.{
+ "-DNO_CACHING",
+ "-DNO_CGI",
+ "-DUSE_WEBSOCKET",
+ "-Wno-error=date-time",
+ };
+
+ if (debug and enable_webui_log) {
+ webui.root_module.addCMacro("WEBUI_LOG", "");
+ }
+ webui.addCSourceFile(.{
+ .file = b.path("src/webui.c"),
+ .flags = if (enable_tls) tls_flags else no_tls_flags,
+ });
+
+ // Add Win32 WebView2 C++ support on Windows
+ if (is_windows) {
+ webui.addCSourceFile(.{
+ .file = b.path("src/webview/win32_wv2.cpp"),
+ .flags = if (enable_tls) tls_flags else no_tls_flags,
+ });
+ webui.linkLibCpp();
+ }
+
+ const civetweb_debug = debug and debug_dependencies.contains(.civetweb);
+ webui.addCSourceFile(.{
+ .file = b.path("src/civetweb/civetweb.c"),
+ .flags = if (enable_tls and !civetweb_debug)
+ civetweb_flags ++ tls_flags ++ .{"-DNDEBUG"}
+ else if (enable_tls and civetweb_debug)
+ civetweb_flags ++ tls_flags
+ else if (!enable_tls and !civetweb_debug)
+ civetweb_flags ++ .{"-DUSE_WEBSOCKET"} ++ no_tls_flags ++ .{"-DNDEBUG"}
+ else
+ civetweb_flags ++ .{"-DUSE_WEBSOCKET"} ++ no_tls_flags,
+ });
+ webui.linkLibC();
+ webui.addIncludePath(b.path("include"));
+ webui.installHeader(b.path("include/webui.h"), "webui.h");
+ if (is_darwin) {
+ webui.addCSourceFile(.{
+ .file = b.path("src/webview/wkwebview.m"),
+ .flags = &.{},
+ });
+ webui.linkFramework("Cocoa");
+ webui.linkFramework("WebKit");
+ } else if (is_windows) {
+ webui.linkSystemLibrary("ws2_32");
+ webui.linkSystemLibrary("ole32");
+ if (webui_target.abi == .msvc) {
+ webui.linkSystemLibrary("Advapi32");
+ webui.linkSystemLibrary("Shell32");
+ webui.linkSystemLibrary("user32");
+ }
+ if (enable_tls) {
+ webui.linkSystemLibrary("bcrypt");
+ }
+ }
+ if (enable_tls) {
+ webui.linkSystemLibrary("ssl");
+ webui.linkSystemLibrary("crypto");
+ }
+
+ for (webui.root_module.link_objects.items) |lo| {
+ switch (lo) {
+ .c_source_file => |csf| {
+ log(.debug, .WebUI, "{s} linker flags:\n", .{
+ csf.file.src_path.sub_path,
+ });
+ for (csf.flags) |flag| {
+ log(.debug, .WebUI, " {s}", .{flag});
+ }
+ },
+ else => {},
+ }
+ }
+}
+
+fn build_examples(b: *Build, webui: *Compile) !void {
+ const build_examples_step = b.step("examples", "builds the library and its examples");
+ const target = webui.root_module.resolved_target.?;
+ const optimize = webui.root_module.optimize.?;
+
+ const examples_path = b.path("examples/C").getPath(b);
+ var examples_dir = std.fs.cwd().openDir(
+ examples_path,
+ .{ .iterate = true },
+ ) catch |e| switch (e) {
+ // Do not attempt building examples if directory does not exist.
+ error.FileNotFound => return,
+ else => return e,
+ };
+ defer examples_dir.close();
+
+ var paths = examples_dir.iterate();
+ while (try paths.next()) |val| {
+ if (val.kind != .directory) {
+ continue;
+ }
+ const example_name = val.name;
+
+ const exe = b.addExecutable(if (builtin.zig_version.minor == 14) .{
+ .name = example_name,
+ .target = target,
+ .optimize = optimize,
+ } else .{
+ .name = example_name,
+ .root_module = b.createModule(.{
+ .target = target,
+ .optimize = optimize,
+ .pic = true,
+ }),
+ });
+ const path = try std.fmt.allocPrint(b.allocator, "examples/C/{s}/main.c", .{example_name});
+ defer b.allocator.free(path);
+
+ exe.addCSourceFile(.{ .file = b.path(path), .flags = &.{} });
+ exe.linkLibrary(webui);
+
+ const exe_install = b.addInstallArtifact(exe, .{});
+ const exe_run = b.addRunArtifact(exe);
+ const step_name = try std.fmt.allocPrint(b.allocator, "run_{s}", .{example_name});
+ defer b.allocator.free(step_name);
+ const step_desc = try std.fmt.allocPrint(b.allocator, "run example {s}", .{example_name});
+ defer b.allocator.free(step_desc);
+
+ const cwd = try std.fmt.allocPrint(b.allocator, "src/examples/{s}", .{example_name});
+ defer b.allocator.free(cwd);
+ exe_run.setCwd(b.path(cwd));
+
+ exe_run.step.dependOn(&exe_install.step);
+ build_examples_step.dependOn(&exe_install.step);
+ b.step(step_name, step_desc).dependOn(&exe_run.step);
+ }
+}
+
+/// Function to runtime-scope log levels based on build flag, for all scopes.
+fn log(
+ comptime level: std.log.Level,
+ comptime scope: @TypeOf(.EnumLiteral),
+ comptime format: []const u8,
+ args: anytype,
+) void {
+ const should_print: bool = @intFromEnum(global_log_level) >= @intFromEnum(level);
+ if (should_print) {
+ switch (comptime level) {
+ .err => std.log.scoped(scope).err(format, args),
+ .warn => std.log.scoped(scope).warn(format, args),
+ .info => std.log.scoped(scope).info(format, args),
+ .debug => std.log.scoped(scope).debug(format, args),
+ }
+ }
+}
diff --git a/v2/webui/build.zig.zon b/v2/webui/build.zig.zon
new file mode 100644
index 0000000..0b80789
--- /dev/null
+++ b/v2/webui/build.zig.zon
@@ -0,0 +1,14 @@
+.{
+ .name = .webui,
+ .version = "2.5.0-beta.4",
+ .fingerprint = 0xac5d87f2e5831aa7,
+ .paths = .{
+ "src",
+ "include",
+ "bridge",
+ "build.zig",
+ "build.zig.zon",
+ "LICENSE",
+ "README.md",
+ },
+}
diff --git a/v2/webui/conanfile.py b/v2/webui/conanfile.py
new file mode 100644
index 0000000..f7e88b3
--- /dev/null
+++ b/v2/webui/conanfile.py
@@ -0,0 +1,33 @@
+from conan import ConanFile
+from conan.tools.cmake import CMake, CMakeToolchain
+
+class WebuiConan(ConanFile):
+ name = "webui"
+ version = "2.5.0-beta.4"
+ license = "MIT"
+ url = "https://github.com/webui-dev/webui"
+ homepage = "https://webui.me"
+ description = "Use any web browser or WebView as GUI, with your preferred language in the backend and modern web technologies in the frontend, all in a lightweight portable library."
+
+ settings = "os", "compiler", "build_type", "arch"
+ options = {"tls": [True, False], "shared": [True, False]}
+ default_options = {"tls": False, "shared": False}
+
+ generators = "CMakeDeps"
+
+ def generate(self):
+ tc = CMakeToolchain(self)
+ tc.variables["WEBUI_USE_TLS"] = self.options.tls
+ tc.variables["BUILD_SHARED_LIBS"] = self.options.shared
+ tc.generate()
+
+ def build(self):
+ cmake = CMake(self)
+ cmake.configure()
+ cmake.build()
+
+ def requirements(self):
+ self.tool_requires("cmake/[>=3.18.0]")
+
+ if self.options.tls:
+ self.requires("openssl/[>3.0.0]")
\ No newline at end of file
diff --git a/v2/webui/examples/C++/README.md b/v2/webui/examples/C++/README.md
new file mode 100644
index 0000000..cd7aab0
--- /dev/null
+++ b/v2/webui/examples/C++/README.md
@@ -0,0 +1,39 @@
+# WebUI C++ Examples
+
+Examples of how to create a WebUI application in C++.
+
+The only requirement to build the examples is a a C++11 compiler.
+
+- `minimal`: Creates a minimal WebUI application.
+- `call_cpp_from_js`: Calls C++ from JavaScript.
+- `call_js_from_cpp`: Calls JavaScript from C++ using class methods and member-function bind.
+- `serve_a_folder`: Uses WebUI to serve a folder with multiple files (class-based example using member-function bind).
+- `virtual_file_system`: Embeds files using a virtual file system.
+- `test_index_redirect`: Tests index fallback and custom entry behavior for `/`, `/sub`, and `/sub/foo`.
+
+To build an example, cd into its directory and run the make command.
+
+- **Windows**
+
+ ```sh
+ # G++
+ mingw32-make
+
+ # MSVC
+ nmake
+ ```
+
+- **Linux**
+
+ ```sh
+ # G++
+ make
+
+ # Clang
+ make CXX=clang
+ ```
+
+- **macOS**
+ ```sh
+ make
+ ```
diff --git a/v2/webui/examples/C++/call_cpp_from_js/GNUmakefile b/v2/webui/examples/C++/call_cpp_from_js/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/call_cpp_from_js/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/call_cpp_from_js/Makefile b/v2/webui/examples/C++/call_cpp_from_js/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/call_cpp_from_js/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/call_cpp_from_js/main.cpp b/v2/webui/examples/C++/call_cpp_from_js/main.cpp
new file mode 100644
index 0000000..063862d
--- /dev/null
+++ b/v2/webui/examples/C++/call_cpp_from_js/main.cpp
@@ -0,0 +1,118 @@
+// Call C++ from JavaScript Example
+
+#include "webui.hpp"
+#include
+
+class CallCppFromJsApp {
+public:
+ CallCppFromJsApp() {
+ // Bind HTML element IDs with class methods
+ win.bind("my_function_string", this, &CallCppFromJsApp::my_function_string);
+ win.bind("my_function_integer", this, &CallCppFromJsApp::my_function_integer);
+ win.bind("my_function_boolean", this, &CallCppFromJsApp::my_function_boolean);
+ win.bind("my_function_with_response", this, &CallCppFromJsApp::my_function_with_response);
+ }
+
+ void run() {
+ const std::string html = R"V0G0N(
+
+
+
+
+ Call C++ from JavaScript Example
+
+
+
+ WebUI - Call C++ from JavaScript
+ Call C++ functions with arguments (See the logs in your terminal )
+ Call my_function_string()
+
+ Call my_function_integer()
+
+ Call my_function_boolean()
+
+ Call a C++ function that returns a response
+ Call my_function_with_response()
+ Double:
+
+
+
+ )V0G0N";
+
+ // Show the HTML page in the WebView/Browser window
+ win.show(html);
+ // win.show_browser(html, webui_browser::Chrome);
+ // win.show_wv(html);
+
+ // Wait until the window gets closed
+ webui::wait();
+ }
+
+private:
+ webui::window win;
+
+ void my_function_string(webui::window::event* e) {
+ // JavaScript: my_function_string('Hello', 'World');
+ std::string str_1 = e->get_string(); // Or e->get_string(0);
+ std::string str_2 = e->get_string(1);
+ std::cout << "my_function_string 1: " << str_1 << std::endl; // Hello
+ std::cout << "my_function_string 2: " << str_2 << std::endl; // World
+ }
+
+ void my_function_integer(webui::window::event* e) {
+ // JavaScript: my_function_integer(123, 456, 789);
+ long long number_1 = e->get_int(); // Or e->get_int(0);
+ long long number_2 = e->get_int(1);
+ long long number_3 = e->get_int(2);
+ std::cout << "my_function_integer 1: " << number_1 << std::endl; // 123
+ std::cout << "my_function_integer 2: " << number_2 << std::endl; // 456
+ std::cout << "my_function_integer 3: " << number_3 << std::endl; // 789
+ }
+
+ void my_function_boolean(webui::window::event* e) {
+ // JavaScript: my_function_boolean(true, false);
+ bool status_1 = e->get_bool(); // Or e->get_bool(0);
+ bool status_2 = e->get_bool(1);
+ std::cout << "my_function_boolean 1: " << (status_1 ? "True" : "False") << std::endl;
+ std::cout << "my_function_boolean 2: " << (status_2 ? "True" : "False") << std::endl;
+ }
+
+ void my_function_with_response(webui::window::event* e) {
+ // JavaScript: my_function_with_response(number, 2).then(...)
+ long long number = e->get_int(0);
+ long long times = e->get_int(1);
+ long long res = number * times;
+ std::cout << "my_function_with_response: " << number << " * " << times << " = " << res << std::endl;
+ // Send the response back to JavaScript
+ e->return_int(res);
+ }
+};
+
+int main() {
+ CallCppFromJsApp app;
+ app.run();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C++/call_js_from_cpp/GNUmakefile b/v2/webui/examples/C++/call_js_from_cpp/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/call_js_from_cpp/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/call_js_from_cpp/Makefile b/v2/webui/examples/C++/call_js_from_cpp/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/call_js_from_cpp/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/call_js_from_cpp/main.cpp b/v2/webui/examples/C++/call_js_from_cpp/main.cpp
new file mode 100644
index 0000000..d089ade
--- /dev/null
+++ b/v2/webui/examples/C++/call_js_from_cpp/main.cpp
@@ -0,0 +1,124 @@
+// Call JavaScript from C++ Example
+
+#include "webui.hpp"
+#include
+#include
+#include
+
+class CounterApp {
+public:
+ CounterApp() {
+ // Bind HTML element IDs with class methods
+ win.bind("my_function_count", this, &CounterApp::my_function_count);
+ win.bind("Exit", this, &CounterApp::exit_app);
+ }
+
+ void run() {
+ const std::string html = R"V0G0N(
+
+
+
+
+ Call JavaScript from C++ Example
+
+
+
+ WebUI - Call JavaScript from C++
+
+ 0
+
+ Manual Count
+
+ Auto Count (Every 10ms)
+
+ Exit
+
+
+
+ )V0G0N";
+
+ // Set WebUI configuration to process UI events one at a time.
+ // This example calls C++ from JavaScript every 10ms, so it's
+ // recommended to set this to `true` to avoid race conditions.
+ webui::set_config(ui_event_blocking, true);
+
+ // Show the HTML page in the WebView/Browser window
+ win.show(html);
+ // win.show_browser(html, webui_browser::Chrome);
+ // win.show_wv(html);
+
+ // Wait until the window gets closed
+ webui::wait();
+ }
+
+private:
+ webui::window win;
+
+ void my_function_count(webui::window::event* e) {
+ // Create a buffer to hold the response
+ char response[64];
+
+ // Run JavaScript to get the current count value from the HTML page
+ if (!e->get_window().script("return GetCount();", 0, response, 64)) {
+ if (!e->get_window().is_shown())
+ std::cout << "Window closed." << std::endl;
+ else
+ std::cout << "JavaScript Error: " << response << std::endl;
+ return;
+ }
+
+ // Get the count, increment, and send it back
+ int count = std::stoi(response) + 1;
+ std::stringstream js;
+ js << "SetCount(" << count << ");";
+ // Run JavaScript (no response) to update the count in the HTML page
+ e->get_window().run(js.str());
+ }
+
+ void exit_app(webui::window::event* e) {
+ // Exit the application, and close all windows. `webui::wait()` will return (Break).
+ webui::exit();
+ }
+};
+
+int main() {
+ CounterApp app;
+ app.run();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C++/minimal/GNUmakefile b/v2/webui/examples/C++/minimal/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/minimal/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/minimal/Makefile b/v2/webui/examples/C++/minimal/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/minimal/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/minimal/main.cpp b/v2/webui/examples/C++/minimal/main.cpp
new file mode 100644
index 0000000..34f159d
--- /dev/null
+++ b/v2/webui/examples/C++/minimal/main.cpp
@@ -0,0 +1,13 @@
+#include "webui.hpp"
+#include
+
+int main() {
+ webui::window my_window;
+ my_window.show(" C++ Hello World ! ");
+ webui::wait();
+ return 0;
+}
+
+#ifdef _WIN32
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C++/serve_a_folder/GNUmakefile b/v2/webui/examples/C++/serve_a_folder/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/serve_a_folder/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/serve_a_folder/Makefile b/v2/webui/examples/C++/serve_a_folder/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/serve_a_folder/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/serve_a_folder/index.html b/v2/webui/examples/C++/serve_a_folder/index.html
new file mode 100644
index 0000000..8b1da8c
--- /dev/null
+++ b/v2/webui/examples/C++/serve_a_folder/index.html
@@ -0,0 +1,39 @@
+
+
+
+
+ WebUI - Serve a Folder Example (C++)
+
+
+
+ Serve a Folder Example (C++)
+
+
+ You can edit this HTML file as you need.
+ Also, you can config WebUI to use Deno or Nodejs runtime for your JS/TS files.
+
+ Please click on the link to switch to the second page
+ Or click on the button to switch to the second page programmatically.
+
+
+
+
+ Switch to The Second Page Programmatically
+
+
+ Open The Second Window
+
+
+
+
+
diff --git a/v2/webui/examples/C++/serve_a_folder/main.cpp b/v2/webui/examples/C++/serve_a_folder/main.cpp
new file mode 100644
index 0000000..a8e274e
--- /dev/null
+++ b/v2/webui/examples/C++/serve_a_folder/main.cpp
@@ -0,0 +1,100 @@
+// Serve A Folder C++ Example
+
+#include "webui.hpp"
+#include
+
+class ServeAFolderApp {
+public:
+ ServeAFolderApp() {
+ // Bind HTML element IDs with class methods
+ win.bind("SwitchToSecondPage", this, &ServeAFolderApp::switch_to_second_page);
+ win.bind("OpenNewWindow", this, &ServeAFolderApp::show_second_window);
+ win.bind("Exit", this, &ServeAFolderApp::exit_app);
+ my_second_window.bind("Exit", this, &ServeAFolderApp::exit_app);
+
+ // Bind all events
+ win.bind("", this, &ServeAFolderApp::events);
+ my_second_window.bind("", this, &ServeAFolderApp::events);
+ }
+
+ void run() {
+ // Print logs (debug build only)
+ std::cout << "Starting..." << std::endl;
+
+ // Show the HTML page in the WebView/Browser window
+ win.show("index.html");
+ // win.show_browser("index.html", webui_browser::Chrome);
+ // win.show_wv("index.html");
+
+ // Wait until all windows get closed
+ webui::wait();
+
+ // Print logs (debug build only)
+ std::cout << "Thank you." << std::endl;
+ }
+
+private:
+ webui::window win;
+ webui::window my_second_window;
+
+ const char* event_type_to_string(size_t type) const {
+ switch (type) {
+ case webui::DISCONNECTED: return "DISCONNECTED";
+ case webui::CONNECTED: return "CONNECTED";
+ case webui::MOUSE_CLICK: return "MOUSE_CLICK";
+ case webui::NAVIGATION: return "NAVIGATION";
+ case webui::CALLBACKS: return "CALLBACKS";
+ default: return "UNKNOWN";
+ }
+ }
+
+ // This method gets called every time the user clicks on "OpenNewWindow"
+ void show_second_window(webui::window::event* e) {
+ // Show a new window, and navigate to `/second.html`
+ // if the window is already opened, then switch in the same window
+ my_second_window.show("second.html");
+ }
+
+ // This method gets called every time the user clicks on "SwitchToSecondPage"
+ void switch_to_second_page(webui::window::event* e) {
+ // Switch to `/second.html` in the same opened window.
+ e->get_window().show("second.html");
+ }
+
+ // This method receives all events because it's bind with an empty HTML ID.
+ void events(webui::window::event* e) {
+ std::cout << "[events] window=" << e->window
+ << " type=" << e->get_type()
+ << " (" << event_type_to_string(e->get_type()) << ")"
+ << " element='" << e->get_element()
+ << "' event=" << e->get_number()
+ << std::endl;
+
+ if (e->event_type == webui::CONNECTED)
+ std::cout << "Window Connected." << std::endl;
+ else if (e->event_type == webui::DISCONNECTED)
+ std::cout << "Window Disconnected." << std::endl;
+ else if (e->event_type == webui::MOUSE_CLICK)
+ std::cout << "Click on element: " << e->element << std::endl;
+ else if (e->event_type == webui::NAVIGATION) {
+ std::string url = e->get_string();
+ std::cout << "Starting navigation to: " << url << std::endl;
+ e->get_window().navigate(url);
+ }
+ }
+
+ void exit_app(webui::window::event* e) {
+ // Close all opened windows
+ webui::exit();
+ }
+};
+
+int main() {
+ ServeAFolderApp app;
+ app.run();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C++/serve_a_folder/second.html b/v2/webui/examples/C++/serve_a_folder/second.html
new file mode 100644
index 0000000..3d18970
--- /dev/null
+++ b/v2/webui/examples/C++/serve_a_folder/second.html
@@ -0,0 +1,26 @@
+
+
+
+
+ WebUI - Second Page (C++)
+
+
+
+ This is the second page !
+
+ Call Exit()
+
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/GNUmakefile b/v2/webui/examples/C++/test_index_redirect/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/test_index_redirect/Makefile b/v2/webui/examples/C++/test_index_redirect/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/test_index_redirect/main.cpp b/v2/webui/examples/C++/test_index_redirect/main.cpp
new file mode 100644
index 0000000..b305ba7
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/main.cpp
@@ -0,0 +1,87 @@
+#include "webui.hpp"
+#include "vfs.h"
+
+// This example is used to verify redirect and fallback behavior for:
+// /, /sub, /sub/foo
+// in both storage modes:
+// 1) set_root_folder(...)
+// 2) set_file_handler(vfs)
+//
+// Server mode is the primary redirect test path because it exposes the raw
+// HTTP behavior (302 Location targets) without mixing in window lifecycle.
+//
+// The expected server behavior is:
+// - start_server("custom.html") prefers custom.html in every directory
+// - an explicit filename is strict; if it does not exist, the request fails
+// - start_server() or start_server("") means "fallback mode", which probes
+// index.html, index.htm, index.ts, then index.js
+//
+// Note: index.ts and index.js can still be valid fallback targets for
+// runtime/script-first scenarios, but they are not equivalent to an HTML GUI
+// entry page. For normal GUI testing, HTML/HTM are the page-like entries.
+int main(int argc, char *argv[])
+{
+ bool serverMode = false;
+ bool vfsEnabled = false;
+ for (int i = 1; i < argc; ++i)
+ {
+ if (std::string(argv[i]) == "--server")
+ {
+ serverMode = true;
+ }
+ else if (std::string(argv[i]) == "--vfs")
+ {
+ vfsEnabled = true;
+ }
+ }
+
+ webui::window window_;
+ webui::set_config(use_cookies, false);
+
+ if (vfsEnabled)
+ {
+ window_.set_file_handler(vfs);
+ }
+ else
+ {
+ window_.set_root_folder("/home/gordon/Dokumenty/PlatformIO/Projects/webui/examples/C++/test_index_redirect/ui/");
+
+ // Absolute paths:
+ // window_.set_root_folder("/path/to/ui/");
+ // window_.set_root_folder("/path/to/ui");
+
+ // Relative if ui folder is next to executable:
+ // window_.set_root_folder("ui/");
+ // window_.set_root_folder("ui");
+ }
+
+ if (serverMode)
+ {
+ window_.set_port(8080);
+
+ // Explicit custom entry file:
+ window_.start_server("custom.html");
+
+ // Redirect to the hardcoded index.* fallback list:
+ // window_.start_server();
+
+ }
+ else
+ {
+ // Explicit custom entry file:
+ window_.show("custom.html");
+ // window_.show_browser("custom.html"); // AnyBrowser is the default second argument in C++.
+
+ // Redirect to the hardcoded index.* fallback list:
+ // window_.show();
+ // window_.show_browser();
+ }
+
+ webui::wait();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(__argc, __argv); }
+#endif
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/custom.html b/v2/webui/examples/C++/test_index_redirect/ui/custom.html
new file mode 100644
index 0000000..0abbe9c
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/custom.html
+
+
+ ui/custom.html
+ IDENTIFIER: ui/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/index.css b/v2/webui/examples/C++/test_index_redirect/ui/index.css
new file mode 100644
index 0000000..6bc789d
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/index.html b/v2/webui/examples/C++/test_index_redirect/ui/index.html
new file mode 100644
index 0000000..120a792
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/index.html
+
+
+ ui/index.html
+ IDENTIFIER: ui/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/index.js b/v2/webui/examples/C++/test_index_redirect/ui/index.js
new file mode 100644
index 0000000..4094538
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/index.js');
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/custom.html b/v2/webui/examples/C++/test_index_redirect/ui/sub/custom.html
new file mode 100644
index 0000000..e90b2d5
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/custom.html
+
+
+ ui/sub/custom.html
+ IDENTIFIER: ui/sub/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/custom.html b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/custom.html
new file mode 100644
index 0000000..2b57d8b
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/foo/custom.html
+
+
+ ui/sub/foo/custom.html
+ IDENTIFIER: ui/sub/foo/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.css b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.css
new file mode 100644
index 0000000..2ce12c5
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/sub/foo/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.html b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.html
new file mode 100644
index 0000000..86026d7
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/foo/index.html
+
+
+ ui/sub/foo/index.html
+ IDENTIFIER: ui/sub/foo/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.js b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.js
new file mode 100644
index 0000000..e4cef1a
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/foo/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/sub/foo/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/sub/foo/index.js');
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/index.css b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.css
new file mode 100644
index 0000000..68962cd
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/sub/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/index.html b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.html
new file mode 100644
index 0000000..912a3a7
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/index.html
+
+
+ ui/sub/index.html
+ IDENTIFIER: ui/sub/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C++/test_index_redirect/ui/sub/index.js b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.js
new file mode 100644
index 0000000..9fd0f34
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/ui/sub/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/sub/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/sub/index.js');
diff --git a/v2/webui/examples/C++/test_index_redirect/vfs.h b/v2/webui/examples/C++/test_index_redirect/vfs.h
new file mode 100644
index 0000000..8251df5
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/vfs.h
@@ -0,0 +1,131 @@
+#ifndef VIRTUAL_FILE_SYSTEM_H
+#define VIRTUAL_FILE_SYSTEM_H
+
+typedef struct {
+ const char *path;
+ const unsigned char *data;
+ int length;
+} VirtualFile;
+
+static const unsigned char FILE_0[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_1[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_2[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+static const unsigned char FILE_3[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_4[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_5[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_6[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_7[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+static const unsigned char FILE_8[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_9[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_10[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_11[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+
+static const VirtualFile virtual_files[] = {
+ {
+ "/index.css",
+ FILE_0,
+ 311
+ },
+ {
+ "/index.html",
+ FILE_1,
+ 1138
+ },
+ {
+ "/index.js",
+ FILE_2,
+ 308
+ },
+ {
+ "/custom.html",
+ FILE_3,
+ 1141
+ },
+ {
+ "/sub/custom.html",
+ FILE_4,
+ 1153
+ },
+ {
+ "/sub/index.css",
+ FILE_5,
+ 315
+ },
+ {
+ "/sub/index.html",
+ FILE_6,
+ 1150
+ },
+ {
+ "/sub/index.js",
+ FILE_7,
+ 316
+ },
+ {
+ "/sub/foo/custom.html",
+ FILE_8,
+ 1165
+ },
+ {
+ "/sub/foo/index.css",
+ FILE_9,
+ 319
+ },
+ {
+ "/sub/foo/index.html",
+ FILE_10,
+ 1162
+ },
+ {
+ "/sub/foo/index.js",
+ FILE_11,
+ 324
+ },
+};
+
+static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);
+
+bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
+ for (int i = 0; i < virtual_files_count; ++i) {
+ if (strcmp(virtual_files[i].path, path) == 0) {
+ *file = virtual_files[i].data;
+ *length = virtual_files[i].length;
+ return true;
+ }
+ }
+ return false;
+}
+
+const void* vfs(const char* path, int* length) {
+ const unsigned char* file_data;
+ int file_length;
+
+ if (virtual_file_system(path, &file_data, &file_length)) {
+ const char* content_type = webui_get_mime_type(path);
+ const char* http_header_template = "HTTP/1.1 200 OK\r\n"
+ "Content-Type: %s\r\n"
+ "Content-Length: %d\r\n"
+ "Cache-Control: no-cache\r\n\r\n";
+ int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
+ *length = header_length + file_length;
+ unsigned char* response = (unsigned char*) webui_malloc(*length);
+ snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
+ memcpy(response + header_length, file_data, file_length);
+ return response;
+ }
+ return NULL;
+}
+
+#endif // VIRTUAL_FILE_SYSTEM_H
diff --git a/v2/webui/examples/C++/test_index_redirect/vfs.py b/v2/webui/examples/C++/test_index_redirect/vfs.py
new file mode 100644
index 0000000..57e4dfd
--- /dev/null
+++ b/v2/webui/examples/C++/test_index_redirect/vfs.py
@@ -0,0 +1,99 @@
+# WebUI Library
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# WebUI Virtual File System Generator
+# v2.0
+
+import os
+import sys
+
+def generate_vfs_header(directory, output_header):
+ files = []
+
+ for root, _, filenames in os.walk(directory):
+ for filename in filenames:
+ filepath = os.path.join(root, filename)
+ relative_path = os.path.relpath(filepath, directory)
+ # Ensure path starts with a slash
+ relative_path = '/' + relative_path.replace('\\', '/')
+ files.append((relative_path, filepath))
+
+ with open(output_header, 'w') as header:
+ header.write('#ifndef VIRTUAL_FILE_SYSTEM_H\n')
+ header.write('#define VIRTUAL_FILE_SYSTEM_H\n\n')
+
+ header.write('typedef struct {\n')
+ header.write(' const char *path;\n')
+ header.write(' const unsigned char *data;\n')
+ header.write(' int length;\n')
+ header.write('} VirtualFile;\n\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(f'static const unsigned char FILE_{i}[] = {{')
+ header.write(','.join(f'0x{byte:02x}' for byte in data))
+ header.write('};\n\n')
+
+ header.write('\nstatic const VirtualFile virtual_files[] = {\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(' {\n')
+ header.write(f' "{relative_path}",\n')
+ header.write(f' FILE_{i},\n')
+ header.write(f' {len(data)}\n')
+ header.write(' },\n')
+
+ header.write('};\n\n')
+
+ header.write('static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);\n\n')
+
+ header.write('bool virtual_file_system(const char* path, const unsigned char** file, int* length) {\n')
+ header.write(' for (int i = 0; i < virtual_files_count; ++i) {\n')
+ header.write(' if (strcmp(virtual_files[i].path, path) == 0) {\n')
+ header.write(' *file = virtual_files[i].data;\n')
+ header.write(' *length = virtual_files[i].length;\n')
+ header.write(' return true;\n')
+ header.write(' }\n')
+ header.write(' }\n')
+ header.write(' return false;\n')
+ header.write('}\n\n')
+
+ header.write('const void* vfs(const char* path, int* length) {\n')
+ header.write(' const unsigned char* file_data;\n')
+ header.write(' int file_length;\n\n')
+
+ header.write(' if (virtual_file_system(path, &file_data, &file_length)) {\n')
+ header.write(' const char* content_type = webui_get_mime_type(path);\n')
+ header.write(' const char* http_header_template = "HTTP/1.1 200 OK\\r\\n"\n')
+ header.write(' "Content-Type: %s\\r\\n"\n')
+ header.write(' "Content-Length: %d\\r\\n"\n')
+ header.write(' "Cache-Control: no-cache\\r\\n\\r\\n";\n')
+ header.write(' int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);\n')
+ header.write(' *length = header_length + file_length;\n')
+ header.write(' unsigned char* response = (unsigned char*) webui_malloc(*length);\n')
+ header.write(' snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);\n')
+ header.write(' memcpy(response + header_length, file_data, file_length);\n')
+ header.write(' return response;\n')
+ header.write(' }\n')
+ header.write(' return NULL;\n')
+ header.write('}\n\n')
+
+ header.write('#endif // VIRTUAL_FILE_SYSTEM_H\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print(f'Usage: {sys.argv[0]} ')
+ sys.exit(1)
+
+ directory = sys.argv[1]
+ output_header = sys.argv[2]
+ generate_vfs_header(directory, output_header)
+ print(f'Generated {output_header} from {directory}')
diff --git a/v2/webui/examples/C++/virtual_file_system/GNUmakefile b/v2/webui/examples/C++/virtual_file_system/GNUmakefile
new file mode 100644
index 0000000..2b085f5
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C++ Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=g++` / `make CC=clang`
+CC = g++
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.cpp -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C++ Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C++ Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C++ Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),g++ clang aarch64-linux-gnu-g++ arm-linux-gnueabihf-g++ musl-g++),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C++/virtual_file_system/Makefile b/v2/webui/examples/C++/virtual_file_system/Makefile
new file mode 100644
index 0000000..d056ecd
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/Makefile
@@ -0,0 +1,65 @@
+# WebUI C++ Example
+# Windows - Microsoft Visual C++
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Debug Static)...
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C++ Example (Debug Dynamic)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)/debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C++ Example (Release Static)...
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C++ Example (Release Dynamic)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /EHsc /std:c++17 main.cpp /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C++/virtual_file_system/main.cpp b/v2/webui/examples/C++/virtual_file_system/main.cpp
new file mode 100644
index 0000000..a2ff9bf
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/main.cpp
@@ -0,0 +1,57 @@
+// Virtual File System Example C++
+
+#include "webui.hpp"
+#include "vfs.h"
+
+class VirtualFileSystemApp {
+public:
+ VirtualFileSystemApp() {
+
+ // Bind the "Exit" button in the HTML to the exit_app() method in C++
+ win.bind("Exit", this, &VirtualFileSystemApp::exit_app);
+
+ // VSF (Virtual File System) C++ Example
+ //
+ // 1. Run Python script to generate header file of a folder
+ // python vfs.py "/path/to/folder" "vfs.h"
+ //
+ // 2. Include header file in your C++ project
+ // #include "vfs.h"
+ //
+ // 3. Use vfs in your custom files handler `webui::window::set_file_handler()`
+ // win.set_file_handler(vfs);
+
+ win.set_file_handler(vfs);
+ }
+
+ void run() {
+ // Show the main page (index.html) in the WebView/Browser window
+ win.show("index.html");
+ // win.show_browser("index.html", webui_browser::Chrome);
+ // win.show_wv("index.html");
+
+ // Wait until the window gets closed
+ webui::wait();
+
+ // Clean up WebUI resources. This is optional, but recommended.
+ webui::clean();
+ }
+
+private:
+ webui::window win;
+
+ void exit_app(webui::window::event* e) {
+ // Exit the application, and close all windows. `webui::wait()` will return (Break).
+ webui::exit();
+ }
+};
+
+int main() {
+ VirtualFileSystemApp app;
+ app.run();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C++/virtual_file_system/ui/index.html b/v2/webui/examples/C++/virtual_file_system/ui/index.html
new file mode 100644
index 0000000..7c04de4
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/ui/index.html
@@ -0,0 +1,135 @@
+
+
+
+
+ WebUI - Virtual File System C++
+
+
+
+ Virtual File System C++ Example
+
+
+
+
+ This file is embedded in this C++ application.
+
+
+
+ Exit
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C++/virtual_file_system/ui/sub/index.html b/v2/webui/examples/C++/virtual_file_system/ui/sub/index.html
new file mode 100644
index 0000000..7fa3dc3
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/ui/sub/index.html
@@ -0,0 +1,64 @@
+
+
+
+
+ WebUI - Virtual File System C++
+
+
+
+
+ This is another file embedded in this C++ application.
+
+
+ Exit
+
+
+
+
+
+
diff --git a/v2/webui/examples/C++/virtual_file_system/ui/svg/webui.svg b/v2/webui/examples/C++/virtual_file_system/ui/svg/webui.svg
new file mode 100644
index 0000000..5cf0cf7
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/ui/svg/webui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/v2/webui/examples/C++/virtual_file_system/vfs.h b/v2/webui/examples/C++/virtual_file_system/vfs.h
new file mode 100644
index 0000000..5910e4e
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/vfs.h
@@ -0,0 +1,68 @@
+#ifndef VIRTUAL_FILE_SYSTEM_H
+#define VIRTUAL_FILE_SYSTEM_H
+
+typedef struct {
+ const char *path;
+ const unsigned char *data;
+ int length;
+} VirtualFile;
+
+static const unsigned char FILE_0[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x43,0x2b,0x2b,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x09,0x09,0x3c,0x68,0x33,0x20,0x69,0x64,0x3d,0x22,0x74,0x69,0x74,0x6c,0x65,0x22,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x43,0x2b,0x2b,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3c,0x2f,0x68,0x33,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x69,0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x22,0x73,0x76,0x67,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x76,0x67,0x22,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x73,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x43,0x2b,0x2b,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0a,0x09,0x09,0x3c,0x68,0x34,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x68,0x34,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x09,0x09,0x2f,0x2f,0x20,0x4a,0x61,0x76,0x61,0x53,0x63,0x72,0x69,0x70,0x74,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x0a,0x09,0x09,0x2f,0x2a,0x0a,0x09,0x09,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x27,0x44,0x4f,0x4d,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x4c,0x6f,0x61,0x64,0x65,0x64,0x27,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x4f,0x4d,0x20,0x69,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2e,0x20,0x43,0x68,0x65,0x63,0x6b,0x20,0x69,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x21,0x3d,0x3d,0x20,0x27,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x27,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x53,0x65,0x74,0x20,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x65,0x74,0x45,0x76,0x65,0x6e,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x28,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x65,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,0x68,0x65,0x64,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x44,0x49,0x53,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x6c,0x6f,0x73,0x74,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x60,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x0a,0x09,0x09,0x09,0x09,0x61,0x6c,0x65,0x72,0x74,0x28,0x27,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x61,0x64,0x64,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x48,0x54,0x4d,0x4c,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x0a,0x09,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x77,0x65,0x62,0x75,0x69,0x2e,0x69,0x73,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x28,0x29,0x29,0x20,0x7b,0x0a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x57,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x62,0x69,0x6e,0x64,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x60,0x66,0x75,0x6e,0x63,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x69,0x6e,0x20,0x74,0x68,0x72,0x65,0x65,0x20,0x70,0x6c,0x61,0x63,0x65,0x73,0x3a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x20,0x20,0x3a,0x20,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x4d,0x65,0x74,0x68,0x6f,0x64,0x20,0x20,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x66,0x75,0x6e,0x63,0x27,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x5b,0x21,0x5d,0x20,0x4e,0x6f,0x74,0x65,0x3a,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x63,0x72,0x65,0x61,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x73,0x20,0x77,0x68,0x65,0x6e,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x61,0x20,0x73,0x69,0x6d,0x69,0x6c,0x61,0x72,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x61,0x6c,0x72,0x65,0x61,0x64,0x79,0x20,0x65,0x78,0x69,0x73,0x74,0x2e,0x0a,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6f,0x6f,0x20,0x3d,0x20,0x27,0x48,0x65,0x6c,0x6c,0x6f,0x27,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x62,0x61,0x72,0x20,0x3d,0x20,0x31,0x32,0x33,0x34,0x35,0x36,0x3b,0x0a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6f,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x29,0x60,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x55,0x73,0x69,0x6e,0x67,0x20,0x61,0x77,0x61,0x69,0x74,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x2a,0x2f,0x0a,0x0a,0x09,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_1[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x43,0x2b,0x2b,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x66,0x69,0x6c,0x65,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x43,0x2b,0x2b,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_2[] = {0x3c,0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x62,0x78,0x3d,0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x62,0x6f,0x78,0x79,0x2d,0x73,0x76,0x67,0x2e,0x63,0x6f,0x6d,0x22,0x3e,0x20,0x3c,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x22,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0x20,0x3c,0x63,0x69,0x72,0x63,0x6c,0x65,0x20,0x63,0x78,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x63,0x79,0x3d,0x22,0x36,0x30,0x22,0x20,0x72,0x3d,0x22,0x31,0x36,0x2e,0x38,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0x20,0x3c,0x62,0x78,0x3a,0x67,0x72,0x69,0x64,0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x38,0x33,0x2e,0x33,0x36,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x39,0x36,0x2e,0x37,0x35,0x33,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x32,0x61,0x36,0x36,0x39,0x39,0x22,0x20,0x6d,0x61,0x73,0x6b,0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x33,0x39,0x31,0x2e,0x30,0x37,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x38,0x36,0x2e,0x38,0x34,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x38,0x39,0x2e,0x30,0x32,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x32,0x2e,0x33,0x35,0x38,0x20,0x33,0x37,0x31,0x2e,0x35,0x38,0x34,0x20,0x4c,0x20,0x33,0x39,0x37,0x2e,0x32,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x39,0x2e,0x33,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x34,0x2e,0x31,0x34,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x4c,0x20,0x34,0x30,0x37,0x2e,0x35,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x39,0x2e,0x36,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x35,0x2e,0x33,0x37,0x38,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x30,0x33,0x2e,0x31,0x39,0x34,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x39,0x38,0x2e,0x32,0x33,0x38,0x20,0x33,0x35,0x38,0x2e,0x33,0x39,0x36,0x20,0x4c,0x20,0x33,0x39,0x33,0x2e,0x32,0x35,0x34,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x39,0x31,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x38,0x31,0x35,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x34,0x34,0x31,0x2e,0x32,0x30,0x31,0x20,0x33,0x35,0x36,0x2e,0x30,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x38,0x37,0x20,0x33,0x35,0x36,0x2e,0x36,0x33,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x34,0x33,0x20,0x33,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x35,0x38,0x2e,0x39,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x30,0x2e,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x31,0x2e,0x39,0x35,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x30,0x31,0x20,0x33,0x36,0x33,0x2e,0x30,0x37,0x32,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x31,0x39,0x32,0x20,0x34,0x34,0x31,0x2e,0x31,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x38,0x36,0x37,0x20,0x33,0x36,0x35,0x2e,0x33,0x31,0x32,0x20,0x34,0x34,0x33,0x2e,0x38,0x38,0x39,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x37,0x2e,0x37,0x37,0x36,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x39,0x2e,0x34,0x38,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x37,0x31,0x2e,0x31,0x36,0x34,0x20,0x34,0x34,0x34,0x2e,0x30,0x38,0x35,0x20,0x33,0x37,0x32,0x2e,0x34,0x31,0x20,0x51,0x20,0x34,0x34,0x33,0x2e,0x32,0x35,0x39,0x20,0x33,0x37,0x33,0x2e,0x36,0x35,0x36,0x20,0x34,0x34,0x31,0x2e,0x37,0x36,0x31,0x20,0x33,0x37,0x34,0x2e,0x33,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x34,0x33,0x38,0x2e,0x32,0x34,0x37,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x36,0x33,0x2e,0x30,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x32,0x2e,0x31,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x30,0x2e,0x36,0x30,0x38,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x35,0x39,0x2e,0x30,0x36,0x38,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x35,0x38,0x2e,0x31,0x37,0x32,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x4c,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x37,0x32,0x2e,0x31,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x37,0x31,0x2e,0x31,0x30,0x38,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x39,0x2e,0x34,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x37,0x2e,0x37,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x36,0x36,0x2e,0x37,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x33,0x2e,0x36,0x37,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x31,0x2e,0x37,0x33,0x32,0x20,0x33,0x37,0x34,0x2e,0x32,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x39,0x2e,0x37,0x38,0x36,0x20,0x33,0x37,0x33,0x2e,0x31,0x35,0x32,0x20,0x34,0x34,0x38,0x2e,0x37,0x32,0x32,0x20,0x33,0x37,0x31,0x2e,0x31,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x39,0x2e,0x32,0x30,0x34,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x35,0x32,0x2e,0x32,0x39,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x35,0x32,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x35,0x33,0x2e,0x39,0x31,0x36,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x34,0x2e,0x39,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x38,0x2e,0x38,0x30,0x32,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x39,0x2e,0x38,0x33,0x38,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x34,0x31,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x39,0x2e,0x31,0x37,0x36,0x20,0x34,0x36,0x33,0x2e,0x39,0x35,0x34,0x20,0x33,0x37,0x31,0x2e,0x31,0x35,0x20,0x51,0x20,0x34,0x36,0x32,0x2e,0x38,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x39,0x34,0x34,0x20,0x33,0x37,0x34,0x2e,0x32,0x30,0x32,0x20,0x51,0x20,0x34,0x35,0x38,0x2e,0x39,0x39,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x5a,0x20,0x4d,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x37,0x35,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x3c,0x2f,0x73,0x76,0x67,0x3e};
+
+
+static const VirtualFile virtual_files[] = {
+ {
+ "/index.html",
+ FILE_0,
+ 3099
+ },
+ {
+ "/sub/index.html",
+ FILE_1,
+ 1160
+ },
+ {
+ "/svg/webui.svg",
+ FILE_2,
+ 2347
+ },
+};
+
+static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);
+
+bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
+ for (int i = 0; i < virtual_files_count; ++i) {
+ if (strcmp(virtual_files[i].path, path) == 0) {
+ *file = virtual_files[i].data;
+ *length = virtual_files[i].length;
+ return true;
+ }
+ }
+ return false;
+}
+
+const void* vfs(const char* path, int* length) {
+ const unsigned char* file_data;
+ int file_length;
+
+ if (virtual_file_system(path, &file_data, &file_length)) {
+ const char* content_type = webui_get_mime_type(path);
+ const char* http_header_template = "HTTP/1.1 200 OK\r\n"
+ "Content-Type: %s\r\n"
+ "Content-Length: %d\r\n"
+ "Cache-Control: no-cache\r\n\r\n";
+ int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
+ *length = header_length + file_length;
+ unsigned char* response = (unsigned char*) webui_malloc(*length);
+ snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
+ memcpy(response + header_length, file_data, file_length);
+ return response;
+ }
+ return NULL;
+}
+
+#endif // VIRTUAL_FILE_SYSTEM_H
diff --git a/v2/webui/examples/C++/virtual_file_system/vfs.py b/v2/webui/examples/C++/virtual_file_system/vfs.py
new file mode 100644
index 0000000..57e4dfd
--- /dev/null
+++ b/v2/webui/examples/C++/virtual_file_system/vfs.py
@@ -0,0 +1,99 @@
+# WebUI Library
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# WebUI Virtual File System Generator
+# v2.0
+
+import os
+import sys
+
+def generate_vfs_header(directory, output_header):
+ files = []
+
+ for root, _, filenames in os.walk(directory):
+ for filename in filenames:
+ filepath = os.path.join(root, filename)
+ relative_path = os.path.relpath(filepath, directory)
+ # Ensure path starts with a slash
+ relative_path = '/' + relative_path.replace('\\', '/')
+ files.append((relative_path, filepath))
+
+ with open(output_header, 'w') as header:
+ header.write('#ifndef VIRTUAL_FILE_SYSTEM_H\n')
+ header.write('#define VIRTUAL_FILE_SYSTEM_H\n\n')
+
+ header.write('typedef struct {\n')
+ header.write(' const char *path;\n')
+ header.write(' const unsigned char *data;\n')
+ header.write(' int length;\n')
+ header.write('} VirtualFile;\n\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(f'static const unsigned char FILE_{i}[] = {{')
+ header.write(','.join(f'0x{byte:02x}' for byte in data))
+ header.write('};\n\n')
+
+ header.write('\nstatic const VirtualFile virtual_files[] = {\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(' {\n')
+ header.write(f' "{relative_path}",\n')
+ header.write(f' FILE_{i},\n')
+ header.write(f' {len(data)}\n')
+ header.write(' },\n')
+
+ header.write('};\n\n')
+
+ header.write('static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);\n\n')
+
+ header.write('bool virtual_file_system(const char* path, const unsigned char** file, int* length) {\n')
+ header.write(' for (int i = 0; i < virtual_files_count; ++i) {\n')
+ header.write(' if (strcmp(virtual_files[i].path, path) == 0) {\n')
+ header.write(' *file = virtual_files[i].data;\n')
+ header.write(' *length = virtual_files[i].length;\n')
+ header.write(' return true;\n')
+ header.write(' }\n')
+ header.write(' }\n')
+ header.write(' return false;\n')
+ header.write('}\n\n')
+
+ header.write('const void* vfs(const char* path, int* length) {\n')
+ header.write(' const unsigned char* file_data;\n')
+ header.write(' int file_length;\n\n')
+
+ header.write(' if (virtual_file_system(path, &file_data, &file_length)) {\n')
+ header.write(' const char* content_type = webui_get_mime_type(path);\n')
+ header.write(' const char* http_header_template = "HTTP/1.1 200 OK\\r\\n"\n')
+ header.write(' "Content-Type: %s\\r\\n"\n')
+ header.write(' "Content-Length: %d\\r\\n"\n')
+ header.write(' "Cache-Control: no-cache\\r\\n\\r\\n";\n')
+ header.write(' int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);\n')
+ header.write(' *length = header_length + file_length;\n')
+ header.write(' unsigned char* response = (unsigned char*) webui_malloc(*length);\n')
+ header.write(' snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);\n')
+ header.write(' memcpy(response + header_length, file_data, file_length);\n')
+ header.write(' return response;\n')
+ header.write(' }\n')
+ header.write(' return NULL;\n')
+ header.write('}\n\n')
+
+ header.write('#endif // VIRTUAL_FILE_SYSTEM_H\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print(f'Usage: {sys.argv[0]} ')
+ sys.exit(1)
+
+ directory = sys.argv[1]
+ output_header = sys.argv[2]
+ generate_vfs_header(directory, output_header)
+ print(f'Generated {output_header} from {directory}')
diff --git a/v2/webui/examples/C/README.md b/v2/webui/examples/C/README.md
new file mode 100644
index 0000000..e3b1b42
--- /dev/null
+++ b/v2/webui/examples/C/README.md
@@ -0,0 +1,51 @@
+# WebUI C Examples
+
+Examples of how to create a WebUI application in C.
+
+## C Examples
+
+The only requirement to build the examples is a C compiler.
+
+- `minimal`: Creates a minimal WebUI application.
+- `call_c_from_js`: Calls C from JavaScript.
+- `call_js_from_c`: Calls JavaScript from C.
+- `serve_a_folder`: Use WebUI to serve a folder that contains `.html`, `.css`, `.js`, or `.ts` files.
+- `custom_web_server`: Use your preferred web server like NGINX/Apache... with WebUI to serve a folder.
+- `chatgpt_api`: Calls ChatGPT API from C.
+- `frameless`: Frameless window example.
+- `public_network_access`: Allows network access to external devices.
+- `react`: React + WebUI example.
+- `virtual_file_system`: Embeds files using a virtual file system.
+- `test_index_redirect`: Tests index fallback and custom entry behavior for `/`, `/sub`, and `/sub/foo`.
+- `web_app_multi_client`: Multiple clients example.
+
+To build an example, cd into its directory and run the make command.
+
+- **Windows**
+
+ ```sh
+ # GCC
+ mingw32-make
+
+ # MSVC
+ nmake
+ ```
+
+- **Linux**
+
+ ```sh
+ # GCC
+ make
+
+ # Clang
+ make CC=clang
+ ```
+
+- **macOS**
+ ```sh
+ make
+ ```
+
+## Additional Examples
+
+- [`text-editor`](https://github.com/webui-dev/webui/tree/main/examples/C/text-editor): A lightweight and portable text editor written in C using WebUI as the GUI library.
diff --git a/v2/webui/examples/C/call_c_from_js/GNUmakefile b/v2/webui/examples/C/call_c_from_js/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/call_c_from_js/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/call_c_from_js/Makefile b/v2/webui/examples/C/call_c_from_js/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/call_c_from_js/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/call_c_from_js/main.c b/v2/webui/examples/C/call_c_from_js/main.c
new file mode 100644
index 0000000..48a2775
--- /dev/null
+++ b/v2/webui/examples/C/call_c_from_js/main.c
@@ -0,0 +1,184 @@
+// Call C from JavaScript Example
+
+#include "webui.h"
+
+void my_function_string(webui_event_t* e) {
+
+ // JavaScript:
+ // my_function_string('Hello', 'World`);
+
+ const char* str_1 = webui_get_string(e); // Or webui_get_string_at(e, 0);
+ const char* str_2 = webui_get_string_at(e, 1);
+
+ printf("my_function_string 1: %s\n", str_1); // Hello
+ printf("my_function_string 2: %s\n", str_2); // World
+}
+
+void my_function_integer(webui_event_t* e) {
+
+ // JavaScript:
+ // my_function_integer(123, 456, 789, 12345.6789);
+
+ size_t count = webui_get_count(e);
+ printf("my_function_integer: There is %zu arguments in this event\n", count); // 4
+
+ long long number_1 = webui_get_int(e); // Or webui_get_int_at(e, 0);
+ long long number_2 = webui_get_int_at(e, 1);
+ long long number_3 = webui_get_int_at(e, 2);
+
+ printf("my_function_integer 1: %lld\n", number_1); // 123
+ printf("my_function_integer 2: %lld\n", number_2); // 456
+ printf("my_function_integer 3: %lld\n", number_3); // 789
+
+ double float_1 = webui_get_float_at(e, 3);
+
+ printf("my_function_integer 4: %f\n", float_1); // 12345.6789
+}
+
+void my_function_boolean(webui_event_t* e) {
+
+ // JavaScript:
+ // my_function_boolean(true, false);
+
+ bool status_1 = webui_get_bool(e); // Or webui_get_bool_at(e, 0);
+ bool status_2 = webui_get_bool_at(e, 1);
+
+ printf("my_function_boolean 1: %s\n", (status_1 ? "True" : "False")); // True
+ printf("my_function_boolean 2: %s\n", (status_2 ? "True" : "False")); // False
+}
+
+void my_function_raw_binary(webui_event_t* e) {
+
+ // JavaScript:
+ // my_function_raw_binary(new Uint8Array([0x41]), new Uint8Array([0x42, 0x43]));
+
+ const unsigned char* raw_1 = (const unsigned char*)webui_get_string(e); // Or webui_get_string_at(e, 0);
+ const unsigned char* raw_2 = (const unsigned char*)webui_get_string_at(e, 1);
+
+ int len_1 = (int)webui_get_size(e); // Or webui_get_size_at(e, 0);
+ int len_2 = (int)webui_get_size_at(e, 1);
+
+ // Print raw_1
+ printf("my_function_raw_binary 1 (%d bytes): ", len_1);
+ for (size_t i = 0; i < len_1; i++)
+ printf("0x%02x ", raw_1[i]);
+ printf("\n");
+
+ // Check raw_2 (Big)
+ // [0xA1, 0x00..., 0xA2]
+ bool valid = false;
+ if (raw_2[0] == 0xA1 && raw_2[len_2 - 1] == 0xA2)
+ valid = true;
+
+ // Print raw_2
+ printf("my_function_raw_binary 2 big (%d bytes): valid data? %s\n", len_2, (valid ? "Yes" : "No"));
+}
+
+void my_function_with_response(webui_event_t* e) {
+
+ // JavaScript:
+ // my_function_with_response(number, 2).then(...)
+
+ long long number = webui_get_int(e); // Or webui_get_int_at(e, 0);
+ long long times = webui_get_int_at(e, 1);
+
+ long long res = number * times;
+ printf("my_function_with_response: %lld * %lld = %lld\n", number, times, res);
+
+ // Send back the response to JavaScript
+ webui_return_int(e, res);
+}
+
+int main() {
+
+ // HTML
+ const char* my_html =
+ ""
+ ""
+ " "
+ " "
+ " "
+ " Call C from JavaScript Example "
+ " "
+ " "
+ " "
+ " WebUI - Call C from JavaScript "
+ " Call C functions with arguments (See the logs in your terminal )
"
+ " Call my_function_string() "
+ " "
+ " Call my_function_integer() "
+ " "
+ " Call my_function_boolean() "
+ " "
+ " "
+ " Call my_function_raw_binary() "
+ " "
+ " Call a C function that returns a response
"
+ " Call my_function_with_response() "
+ " Double:
"
+ " "
+ " "
+ "";
+
+ // Create a window
+ size_t my_window = webui_new_window();
+
+ // Bind HTML elements with C functions
+ webui_bind(my_window, "my_function_string", my_function_string);
+ webui_bind(my_window, "my_function_integer", my_function_integer);
+ webui_bind(my_window, "my_function_boolean", my_function_boolean);
+ webui_bind(my_window, "my_function_with_response", my_function_with_response);
+ webui_bind(my_window, "my_function_raw_binary", my_function_raw_binary);
+
+ // Show the window
+ webui_show(my_window, my_html); // webui_show_browser(my_window, my_html, Chrome);
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/call_js_from_c/GNUmakefile b/v2/webui/examples/C/call_js_from_c/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/call_js_from_c/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/call_js_from_c/Makefile b/v2/webui/examples/C/call_js_from_c/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/call_js_from_c/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/call_js_from_c/main.c b/v2/webui/examples/C/call_js_from_c/main.c
new file mode 100644
index 0000000..5b60593
--- /dev/null
+++ b/v2/webui/examples/C/call_js_from_c/main.c
@@ -0,0 +1,143 @@
+// Call JavaScript from C Example
+
+#include "webui.h"
+
+void my_function_exit(webui_event_t* e) {
+
+ // Close all opened windows
+ webui_exit();
+}
+
+void my_function_count(webui_event_t* e) {
+
+ // This function gets called every time the user clicks on "my_function_count"
+
+ // Create a buffer to hold the response
+ char response[64];
+
+ // Run JavaScript
+ if (!webui_script(e->window, "return GetCount();", 0, response, 64)) {
+
+ if (!webui_is_shown(e->window))
+ printf("Window closed.\n");
+ else
+ printf("JavaScript Error: %s\n", response);
+ return;
+ }
+
+ // Get the count
+ int count = atoi(response);
+
+ // Increment
+ count++;
+
+ // Generate a JavaScript
+ char js[64];
+ sprintf(js, "SetCount(%d);", count);
+
+ // Run JavaScript (Quick Way)
+ webui_run(e->window, js);
+
+ // Alternatively, Using `webui_extensions.h`
+ // webui_run_fmt(e->window, "SetCount(%d);", count);
+}
+
+int main() {
+
+ // HTML
+ const char* my_html = ""
+ ""
+ " "
+ " "
+ " "
+ " Call JavaScript from C Example "
+ " "
+ " "
+ " "
+ " WebUI - Call JavaScript from C "
+ " "
+ " 0 "
+ " "
+ " Manual Count "
+ " "
+ " Auto Count (Every 10ms) "
+ " "
+ " Exit "
+ " "
+ " "
+ "";
+
+ // Set WebUI configuration to proceess UI events one at a time
+ webui_set_config(ui_event_blocking, true);
+
+ // Create a window
+ size_t my_window = webui_new_window();
+
+ // Bind HTML elements with C functions
+ webui_bind(my_window, "my_function_count", my_function_count);
+ webui_bind(my_window, "my_function_exit", my_function_exit);
+
+ // Show the window
+ webui_show(my_window, my_html); // webui_show_browser(my_window, my_html, Chrome);
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/chatgpt_api/GNUmakefile b/v2/webui/examples/C/chatgpt_api/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/chatgpt_api/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/chatgpt_api/Makefile b/v2/webui/examples/C/chatgpt_api/Makefile
new file mode 100644
index 0000000..00c156b
--- /dev/null
+++ b/v2/webui/examples/C/chatgpt_api/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/chatgpt_api/main.c b/v2/webui/examples/C/chatgpt_api/main.c
new file mode 100644
index 0000000..d928e4a
--- /dev/null
+++ b/v2/webui/examples/C/chatgpt_api/main.c
@@ -0,0 +1,98 @@
+// WebUI C - ChatGPT HTTPS API Example
+
+#include "webui.h"
+
+// ChatGPT Configuration
+#define USER_KEY "sk-proj-xxx-xxxxxxxxxxxxxxxxxxxxxxx_xxx"
+#define USER_MODEL "gpt-4o"
+#define USER_ASSISTANT "You are an assistant, answer with very short messages."
+
+#define BUF_SIZE (1024)
+size_t hiddenWindow = 0;
+
+// HTML
+const char* html = ""
+""
+" "
+" "
+" "
+" "
+" "
+" "
+"";
+
+bool run_ai_query(const char* user_query, char* ai_response) {
+
+ char js[BUF_SIZE];
+ memset(js, 0, BUF_SIZE);
+
+ // Generate JavaScript
+ sprintf(js,
+ "return run_gpt_api('%s', '%s', '%s', '%s');",
+ USER_KEY, USER_MODEL, USER_ASSISTANT, user_query
+ );
+
+ // Run HTTPS API
+ if (webui_script(hiddenWindow, js, 30, ai_response, BUF_SIZE)) {
+ return true;
+ }
+
+ return false;
+}
+
+int main(int argc, char *argv[]) {
+
+ if (argc < 2) {
+ printf("Please provide a query.\nExample: %s What is the capital of Canada?\n", argv[0]);
+ return 0;
+ }
+
+ // Initializing
+ char ai_response[BUF_SIZE];
+ char user_query[BUF_SIZE];
+ memset(ai_response, 0, BUF_SIZE);
+ memset(user_query, 0, BUF_SIZE);
+
+ // Get user query
+ for (int i = 1; i < argc; i++) {
+ strcat(user_query, argv[i]);
+ strcat(user_query, " ");
+ }
+
+ // Start WebUI server
+ hiddenWindow = webui_new_window();
+ webui_set_hide(hiddenWindow, true);
+ webui_show_browser(hiddenWindow, html, ChromiumBased);
+
+ // Run HTTPS API
+ if (run_ai_query(user_query, ai_response)) {
+ printf("AI Response: %s\n", ai_response);
+ } else {
+ printf("Error:\n%s\n", ai_response);
+ }
+
+ // Exit
+ webui_exit();
+ webui_clean();
+
+ return 0;
+}
diff --git a/v2/webui/examples/C/custom_web_server/GNUmakefile b/v2/webui/examples/C/custom_web_server/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/custom_web_server/Makefile b/v2/webui/examples/C/custom_web_server/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/custom_web_server/index.html b/v2/webui/examples/C/custom_web_server/index.html
new file mode 100644
index 0000000..b671d44
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+ WebUI - Custom Web-Server Example (C)
+
+
+
+
+ Custom Web-Server Example (C)
+
+ This HTML page is handled by a custom Web-Server other than WebUI.
+ This window is connected to the back-end because we used:
http://localhost:8081/webui.js
+
+
+ Call my_backend_func()
+
+
diff --git a/v2/webui/examples/C/custom_web_server/main.c b/v2/webui/examples/C/custom_web_server/main.c
new file mode 100644
index 0000000..909bb2e
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/main.c
@@ -0,0 +1,74 @@
+// Serve a Folder Example
+
+#include "webui.h"
+
+void events(webui_event_t* e) {
+
+ // This function gets called every time
+ // there is an event
+
+ if (e->event_type == WEBUI_EVENT_CONNECTED)
+ printf("Connected. \n");
+ else if (e->event_type == WEBUI_EVENT_DISCONNECTED)
+ printf("Disconnected. \n");
+ else if (e->event_type == WEBUI_EVENT_MOUSE_CLICK)
+ printf("Click. \n");
+ else if (e->event_type == WEBUI_EVENT_NAVIGATION) {
+ const char* url = webui_get_string(e);
+ printf("Starting navigation to: %s \n", url);
+
+ // Because we used `webui_bind(MyWindow, "", events);`
+ // WebUI will block all `href` link clicks and sent here instead.
+ // We can then control the behaviour of links as needed.
+ webui_navigate(e->window, url);
+ }
+}
+
+void my_backend_func(webui_event_t* e) {
+
+ // JavaScript:
+ // my_backend_func(123, 456, 789);
+ // or webui.my_backend_func(...);
+
+ long long number_1 = webui_get_int_at(e, 0);
+ long long number_2 = webui_get_int_at(e, 1);
+ long long number_3 = webui_get_int_at(e, 2);
+
+ printf("my_backend_func 1: %lld\n", number_1); // 123
+ printf("my_backend_func 2: %lld\n", number_2); // 456
+ printf("my_backend_func 3: %lld\n", number_3); // 789
+}
+
+int main() {
+
+ // Create new windows
+ size_t window = webui_new_window();
+
+ // Bind all events
+ webui_bind(window, "", events);
+
+ // Bind HTML elements with C functions
+ webui_bind(window, "my_backend_func", my_backend_func);
+
+ // Set the web-server/WebSocket port that WebUI should
+ // use. This means `webui.js` will be available at:
+ // http://localhost:MY_PORT_NUMBER/webui.js
+ webui_set_port(window, 8081);
+
+ // Show a new window and show our custom web server
+ // Assuming the custom web server is running on port
+ // 8080...
+ webui_show(window, "http://localhost:8080/");
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/custom_web_server/second.html b/v2/webui/examples/C/custom_web_server/second.html
new file mode 100644
index 0000000..c8b77f9
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/second.html
@@ -0,0 +1,13 @@
+
+
+
+
+ WebUI - Custom Web-Server second page (C)
+
+
+
+
+ This is the second page !
+
+
+
diff --git a/v2/webui/examples/C/custom_web_server/simple_web_server.py b/v2/webui/examples/C/custom_web_server/simple_web_server.py
new file mode 100644
index 0000000..dbb3c36
--- /dev/null
+++ b/v2/webui/examples/C/custom_web_server/simple_web_server.py
@@ -0,0 +1,10 @@
+import http.server
+import socketserver
+
+PORT = 8080
+
+Handler = http.server.SimpleHTTPRequestHandler
+
+with socketserver.TCPServer(("", PORT), Handler) as httpd:
+ print(f"Server started at http://localhost:{PORT}")
+ httpd.serve_forever()
diff --git a/v2/webui/examples/C/frameless/GNUmakefile b/v2/webui/examples/C/frameless/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/frameless/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/frameless/Makefile b/v2/webui/examples/C/frameless/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/frameless/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/frameless/main.c b/v2/webui/examples/C/frameless/main.c
new file mode 100644
index 0000000..c90a1f1
--- /dev/null
+++ b/v2/webui/examples/C/frameless/main.c
@@ -0,0 +1,130 @@
+// WebUI C - Frameless Example
+
+#include "webui.h"
+
+const char* html =
+""
+" "
+" "
+" "
+" "
+" "
+" "
+" "
+"
"
+"
WebUI Frameless WebView Window "
+"
"
+" "
+" "
+"
"
+"
"
+"
"
+" Welcome to Your WebUI App "
+" This is a stylish, frameless WebUI WebView window. "
+"
"
+"
"
+" "
+"";
+
+void minimize(webui_event_t* e) {
+ webui_minimize(e->window);
+}
+
+void maximize(webui_event_t* e) {
+ webui_maximize(e->window);
+}
+
+void close_win(webui_event_t* e) {
+ webui_close(e->window);
+}
+
+int main() {
+
+ size_t my_window = webui_new_window();
+
+ webui_bind(my_window, "minimize", minimize);
+ webui_bind(my_window, "maximize", maximize);
+ webui_bind(my_window, "close_win", close_win);
+
+ webui_set_size(my_window, 800, 600);
+ webui_set_frameless(my_window, true);
+ webui_set_transparent(my_window, true);
+ webui_set_resizable(my_window, false);
+ webui_set_center(my_window);
+
+ webui_show_wv(my_window, html);
+ webui_wait();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/frameless/webui_frameless.png b/v2/webui/examples/C/frameless/webui_frameless.png
new file mode 100644
index 0000000..42fa0ad
Binary files /dev/null and b/v2/webui/examples/C/frameless/webui_frameless.png differ
diff --git a/v2/webui/examples/C/frameless/webui_frameless_linux.png b/v2/webui/examples/C/frameless/webui_frameless_linux.png
new file mode 100644
index 0000000..5261ed8
Binary files /dev/null and b/v2/webui/examples/C/frameless/webui_frameless_linux.png differ
diff --git a/v2/webui/examples/C/minimal/GNUmakefile b/v2/webui/examples/C/minimal/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/minimal/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/minimal/Makefile b/v2/webui/examples/C/minimal/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/minimal/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/minimal/main.c b/v2/webui/examples/C/minimal/main.c
new file mode 100644
index 0000000..b85d393
--- /dev/null
+++ b/v2/webui/examples/C/minimal/main.c
@@ -0,0 +1,15 @@
+// WebUI C - Minimal Example
+
+#include "webui.h"
+
+int main() {
+
+ size_t my_window = webui_new_window();
+ webui_show(my_window, " Hello World ! ");
+ webui_wait();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/public_network_access/GNUmakefile b/v2/webui/examples/C/public_network_access/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/public_network_access/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/public_network_access/Makefile b/v2/webui/examples/C/public_network_access/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/public_network_access/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/public_network_access/main.c b/v2/webui/examples/C/public_network_access/main.c
new file mode 100644
index 0000000..39205e1
--- /dev/null
+++ b/v2/webui/examples/C/public_network_access/main.c
@@ -0,0 +1,139 @@
+// Public Network Access Example
+
+#include "webui.h"
+
+// Windows
+size_t private_window = 0;
+size_t public_window = 0;
+
+void app_exit(webui_event_t* e) {
+ webui_exit();
+}
+
+void public_window_events(webui_event_t* e) {
+ if (e->event_type == WEBUI_EVENT_CONNECTED) {
+ // New connection
+ webui_run(private_window, "document.getElementById(\"Logs\").value += \"New connection.\\n\";");
+ }
+ else if (e->event_type == WEBUI_EVENT_DISCONNECTED) {
+ // Disconnection
+ webui_run(private_window, "document.getElementById(\"Logs\").value += \"Disconnected.\\n\";");
+ }
+}
+
+void private_window_events(webui_event_t* e) {
+ if (e->event_type == WEBUI_EVENT_CONNECTED) {
+
+ // Get port of public window
+ size_t port = webui_get_port(public_window);
+
+ // Get URL of public window
+ const char* url = webui_get_url(public_window);
+
+ // JavaScript
+ char javascript[1024];
+ sprintf(javascript, "document.getElementById('urlSpan1').innerHTML = 'http://localhost:%zu';", port);
+ webui_run(private_window, javascript);
+ sprintf(javascript, "document.getElementById('urlSpan2').innerHTML = '%s';", url);
+ webui_run(private_window, javascript);
+ sprintf(javascript, "document.getElementById('urlSpan3').innerHTML = 'http://[ANY_IP_OF_THIS_MACHINE]:%zu';", port);
+ webui_run(private_window, javascript);
+ }
+}
+
+int main() {
+
+ // Main Private Window HTML
+ const char* private_html = ""
+ ""
+ " "
+ " "
+ " "
+ " Public Network Access Example "
+ " "
+ " "
+ " "
+ " WebUI - Public Network Access Example "
+ " "
+ " The public window is configured to be accessible from "
+ " any device in the network. "
+ " "
+ " Public window links: "
+ " ... "
+ " ... "
+ " ... "
+ " Public window events: "
+ " "
+ " "
+ " Exit "
+ " "
+ "";
+
+ // Public Window HTML
+ const char* public_html = ""
+ ""
+ " "
+ " "
+ " "
+ " Welcome to Public UI "
+ " "
+ " "
+ " Welcome to Public UI! "
+ " "
+ "";
+
+ // Create windows
+ private_window = webui_new_window();
+ public_window = webui_new_window();
+
+ // App
+ webui_set_timeout(0); // Wait forever (never timeout)
+
+ // Public Window
+ webui_set_public(public_window, true); // Make URL accessible from public networks
+ webui_bind(public_window, "", public_window_events); // Bind all events
+ webui_set_port(public_window, 9000); // Custom port
+ webui_show_browser(public_window, public_html, NoBrowser); // Set public window HTML
+
+ // Private Window
+ webui_bind(private_window, "", private_window_events); // Run JS
+ webui_bind(private_window, "Exit", app_exit); // Bind exit button
+ webui_show(private_window, private_html); // Show the window
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/react/GNUmakefile b/v2/webui/examples/C/react/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/react/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/react/Makefile b/v2/webui/examples/C/react/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/react/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/react/README.md b/v2/webui/examples/C/react/README.md
new file mode 100644
index 0000000..ce54ee1
--- /dev/null
+++ b/v2/webui/examples/C/react/README.md
@@ -0,0 +1,23 @@
+## React WebUI Example
+
+This is a basic example of how to use WebUI with React to generate a portable single executable program. WebUI will run the internal web server and use any installed web browser as GUI to show the React UI.
+
+A simple Python script `vfs.py` is used to generate `vfs.h` to embed the whole react's build folder into the portable single executable program.
+The generated VFS serves exact file paths only; directory index fallback/redirect is handled by WebUI core.
+
+
+
+### How to use it?
+
+1. Run script `build_react` to re-build the React project and compile the C file
+
+### How to create a React WebUI project from scratch?
+
+1. Run `npx create-react-app my-react-app` to create a React app using NPM
+2. Add `` into `public/index.html` to connect UI with the backend
+3. Run `python vfs.py "./my-react-app/build" "vfs.h"` to embed the build folder
+4. Now, use any C compiler to compile `main.c` into a portable executable program
+
+### Other backend languages examples:
+
+- Coming soon...
diff --git a/v2/webui/examples/C/react/build_react.bat b/v2/webui/examples/C/react/build_react.bat
new file mode 100644
index 0000000..464d43b
--- /dev/null
+++ b/v2/webui/examples/C/react/build_react.bat
@@ -0,0 +1,19 @@
+@echo off
+
+echo.
+echo * Build React project...
+
+cd webui-react-example
+call npm install
+call npm run build
+cd ..
+
+echo.
+echo * Embedding React's build files into 'vfs.h'
+
+python vfs.py "./webui-react-example/build" "vfs.h"
+
+echo.
+echo * Compiling 'main.c' into 'main.exe' using Microsoft Visual Studio...
+
+nmake
diff --git a/v2/webui/examples/C/react/build_react.sh b/v2/webui/examples/C/react/build_react.sh
new file mode 100644
index 0000000..76589da
--- /dev/null
+++ b/v2/webui/examples/C/react/build_react.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+echo
+echo "* Build React project..."
+
+cd webui-react-example
+npm install || exit
+npm run build || exit
+cd ..
+
+echo
+echo "* Embedding React's build files into 'vfs.h'"
+
+python3 vfs.py "./webui-react-example/build" "vfs.h"
+
+echo
+echo "* Compiling 'main.c' into 'main' using GCC..."
+
+make
diff --git a/v2/webui/examples/C/react/main.c b/v2/webui/examples/C/react/main.c
new file mode 100644
index 0000000..f127ed6
--- /dev/null
+++ b/v2/webui/examples/C/react/main.c
@@ -0,0 +1,59 @@
+// React Example
+
+#include "webui.h"
+#include "vfs.h"
+
+void exit_app(webui_event_t* e) {
+ webui_exit();
+}
+
+int main() {
+
+ // Create new windows
+ size_t react_window = webui_new_window();
+
+ // Set window size
+ webui_set_size(react_window, 550, 450);
+
+ // Set window position
+ webui_set_position(react_window, 250, 250);
+
+ // Allow multi-user connection to WebUI window
+ webui_set_config(multi_client, true);
+
+ // Disable WebUI's cookies
+ webui_set_config(use_cookies, false);
+
+ // Bind React HTML element IDs with a C functions
+ webui_bind(react_window, "Exit", exit_app);
+
+ // VSF (Virtual File System) Example
+ //
+ // 1. Run Python script to generate header file of a folder
+ // python vfs.py "/path/to/folder" "vfs.h"
+ //
+ // 2. Include header file in your C project
+ // #include "vfs.h"
+ //
+ // 3. use vfs in your custom files handler `webui_set_file_handler()`
+ // webui_set_file_handler(react_window, vfs);
+
+ // Set a custom files handler
+ webui_set_file_handler(react_window, vfs);
+
+ // Show the React window
+ // webui_show_browser(react_window, "index.html", Chrome);
+ webui_show(react_window, "index.html");
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/react/vfs.h b/v2/webui/examples/C/react/vfs.h
new file mode 100644
index 0000000..900602c
--- /dev/null
+++ b/v2/webui/examples/C/react/vfs.h
@@ -0,0 +1,145 @@
+#ifndef VIRTUAL_FILE_SYSTEM_H
+#define VIRTUAL_FILE_SYSTEM_H
+
+typedef struct {
+ const char *path;
+ const unsigned char *data;
+ int length;
+} VirtualFile;
+
+static const unsigned char FILE_0[] = {0x00,0x00,0x01,0x00,0x04,0x00,0x10,0x10,0x00,0x00,0x01,0x00,0x20,0x00,0xe3,0x01,0x00,0x00,0x46,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x01,0x00,0x20,0x00,0x0c,0x03,0x00,0x00,0x29,0x02,0x00,0x00,0x20,0x20,0x00,0x00,0x01,0x00,0x20,0x00,0x39,0x03,0x00,0x00,0x35,0x05,0x00,0x00,0x40,0x40,0x00,0x00,0x01,0x00,0x20,0x00,0xb0,0x06,0x00,0x00,0x6e,0x08,0x00,0x00,0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x08,0x03,0x00,0x00,0x00,0x28,0x2d,0x0f,0x53,0x00,0x00,0x00,0xe4,0x50,0x4c,0x54,0x45,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x32,0x50,0x58,0x3d,0x72,0x80,0x29,0x37,0x3b,0x2a,0x3a,0x3e,0x48,0x90,0xa4,0x2d,0x42,0x47,0x45,0x88,0x9a,0x38,0x64,0x6f,0x35,0x58,0x62,0x36,0x5b,0x65,0x4b,0x99,0xae,0x4b,0x9a,0xaf,0x31,0x4d,0x55,0x39,0x67,0x73,0x33,0x53,0x5c,0x49,0x93,0xa7,0x3a,0x67,0x74,0x27,0x30,0x33,0x40,0x7b,0x8b,0x56,0xb9,0xd4,0x54,0xb4,0xcf,0x41,0x7d,0x8d,0x56,0xbb,0xd6,0x40,0x79,0x89,0x36,0x5c,0x66,0x48,0x92,0xa6,0x2d,0x43,0x49,0x49,0x94,0xa8,0x45,0x88,0x9b,0x2b,0x3b,0x40,0x37,0x5f,0x69,0x37,0x5f,0x6a,0x46,0x8a,0x9d,0x4a,0x96,0xab,0x4b,0x9b,0xb0,0x48,0x90,0xa3,0x2d,0x42,0x48,0x61,0xda,0xfb,0x2c,0x40,0x46,0x43,0x83,0x94,0x4c,0x9d,0xb3,0x26,0x2e,0x30,0x57,0xbd,0xd9,0x4e,0xa3,0xba,0x49,0x93,0xa8,0x24,0x29,0x2b,0x42,0x81,0x91,0x4a,0x95,0xaa,0x52,0xaf,0xc8,0x3f,0x76,0x86,0x3e,0x73,0x81,0x3e,0x75,0x84,0x53,0xb1,0xca,0x3d,0x71,0x7f,0x50,0xa9,0xc1,0x50,0xa8,0xc0,0x50,0xa7,0xbf,0x2c,0x3f,0x44,0x34,0x55,0x5e,0x25,0x2b,0x2d,0x4d,0xa0,0xb6,0x4b,0x98,0xae,0x25,0x2b,0x2c,0x32,0x4f,0x58,0x2b,0x3c,0x41,0x4c,0x9c,0xb2,0x23,0x26,0x26,0x44,0x86,0x98,0x25,0x2c,0x2e,0x49,0x95,0xa9,0x76,0xf4,0x54,0xf6,0x00,0x00,0x00,0x05,0x74,0x52,0x4e,0x53,0x49,0xe6,0xe7,0x4a,0xe4,0x65,0xc0,0x65,0xa6,0x00,0x00,0x00,0xa9,0x49,0x44,0x41,0x54,0x78,0x01,0x4d,0x8e,0xb5,0x5a,0x45,0x41,0x0c,0x84,0xff,0xd9,0xb3,0x09,0xee,0xee,0x25,0x52,0xa1,0xef,0xdf,0xe1,0x54,0x54,0x68,0xc7,0x47,0x85,0xbb,0x2c,0xc1,0xae,0xc5,0x3d,0x03,0xb2,0x16,0xd2,0x7f,0xee,0x6d,0xed,0x66,0xed,0x6d,0x6e,0x66,0x92,0x41,0x96,0x24,0xe2,0x87,0x3e,0x21,0x03,0xa6,0x67,0xba,0xf4,0x48,0x67,0xbd,0x90,0x45,0xdf,0x8f,0xdc,0xb5,0x7d,0x02,0x09,0x06,0xdd,0xbb,0xfd,0x87,0xba,0xbc,0x6b,0x10,0x64,0x13,0xfa,0xa7,0xaf,0x4a,0x6f,0x11,0x97,0x99,0xce,0x33,0xe6,0x4c,0x22,0x4a,0xb9,0xa0,0x9b,0xcc,0xd5,0xfc,0x51,0x87,0x24,0xe2,0xe7,0xc4,0xbc,0x1f,0x66,0x66,0xb5,0x2c,0xe9,0x80,0x35,0x69,0x39,0x02,0x19,0xcc,0x9f,0xaf,0x48,0xa8,0x1c,0x2f,0x6d,0x42,0x02,0x86,0x87,0x77,0xcd,0xdc,0x77,0x3b,0x44,0x0d,0xd8,0x2b,0x26,0x82,0x57,0xab,0x15,0xaa,0xb9,0xa8,0x44,0xf4,0x6f,0x14,0x40,0xca,0xb4,0x52,0x49,0xa9,0xd0,0x42,0xa1,0x6f,0x6d,0x1a,0x2e,0x07,0xdb,0xb3,0x07,0xc0,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x08,0x03,0x00,0x00,0x00,0xd7,0xa9,0xcd,0xca,0x00,0x00,0x01,0x65,0x50,0x4c,0x54,0x45,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x32,0x52,0x5a,0x4e,0xa2,0xb9,0x4a,0x96,0xab,0x33,0x52,0x5b,0x4a,0x97,0xac,0x29,0x35,0x39,0x59,0xc1,0xde,0x30,0x4b,0x53,0x34,0x57,0x60,0x51,0xab,0xc4,0x4c,0x9c,0xb2,0x25,0x2b,0x2d,0x30,0x4a,0x52,0x29,0x36,0x3a,0x3a,0x67,0x74,0x43,0x82,0x93,0x22,0x23,0x23,0x3f,0x76,0x86,0x55,0xb7,0xd1,0x3f,0x77,0x86,0x3c,0x6e,0x7b,0x26,0x2d,0x2f,0x59,0xc2,0xdf,0x3d,0x71,0x7f,0x3a,0x69,0x75,0x42,0x7f,0x90,0x41,0x7d,0x8d,0x41,0x7b,0x8c,0x42,0x81,0x91,0x2f,0x49,0x50,0x50,0xa7,0xbf,0x3d,0x71,0x80,0x4b,0x99,0xae,0x5f,0xd4,0xf3,0x4c,0x9d,0xb3,0x24,0x28,0x29,0x3b,0x6c,0x7a,0x52,0xaf,0xc9,0x61,0xda,0xfb,0x49,0x93,0xa8,0x5a,0xc6,0xe3,0x33,0x55,0x5e,0x31,0x4d,0x55,0x33,0x54,0x5d,0x5a,0xc5,0xe2,0x49,0x93,0xa7,0x58,0xbf,0xdc,0x46,0x8b,0x9e,0x2d,0x42,0x47,0x50,0xa8,0xc0,0x36,0x5b,0x65,0x2c,0x40,0x45,0x35,0x5a,0x64,0x4f,0xa7,0xbf,0x2d,0x42,0x48,0x58,0xbf,0xdb,0x2b,0x3d,0x41,0x57,0xbe,0xda,0x2c,0x40,0x46,0x57,0xbc,0xd8,0x51,0xaa,0xc3,0x3f,0x76,0x85,0x57,0xbc,0xd7,0x2b,0x3c,0x41,0x40,0x79,0x88,0x22,0x23,0x24,0x5c,0xcc,0xea,0x34,0x57,0x61,0x5c,0xcc,0xeb,0x53,0xb2,0xcc,0x24,0x28,0x2a,0x2e,0x45,0x4c,0x5e,0xd1,0xf1,0x56,0xba,0xd5,0x36,0x5d,0x68,0x23,0x24,0x25,0x47,0x8e,0xa1,0x23,0x26,0x27,0x3b,0x6a,0x77,0x56,0xb9,0xd4,0x2d,0x43,0x49,0x4c,0x9b,0xb1,0x5a,0xc4,0xe1,0x5e,0xd0,0xef,0x3e,0x75,0x84,0x53,0xb0,0xca,0x2f,0x48,0x4e,0x4d,0xa0,0xb7,0x5f,0xd5,0xf5,0x5c,0xcb,0xe9,0x4d,0xa0,0xb6,0x38,0x64,0x6f,0x44,0x85,0x97,0x44,0x86,0x98,0x3e,0x74,0x83,0x2b,0x3d,0x42,0x5b,0xc8,0xe6,0x2c,0x3e,0x43,0x3e,0x74,0x82,0x3c,0x6f,0x7d,0x40,0x79,0x89,0x30,0x4c,0x53,0x2e,0x45,0x4b,0x54,0xb4,0xce,0x24,0x27,0x28,0x25,0x2c,0x2e,0x41,0x7e,0x8e,0x57,0xbd,0xd9,0x43,0x81,0x92,0x25,0x2b,0x2c,0x5c,0xca,0xe8,0x43,0x21,0xe4,0x1d,0x00,0x00,0x00,0x07,0x74,0x52,0x4e,0x53,0x06,0x91,0xed,0xee,0x90,0x88,0x89,0x9c,0x47,0xbe,0xd6,0x00,0x00,0x01,0x4f,0x49,0x44,0x41,0x54,0x78,0x01,0x6c,0x89,0xc3,0x42,0xb6,0x51,0x14,0x85,0x9f,0x75,0xb4,0xdf,0x5f,0xc8,0xb3,0x3c,0xcb,0x16,0xa6,0xdd,0x76,0x1c,0x65,0x8d,0xea,0x06,0xb2,0x8d,0xf3,0x61,0x16,0x36,0x16,0x41,0xce,0xbe,0x8c,0x17,0x04,0xfb,0x76,0xa2,0x7b,0x07,0x40,0xce,0x07,0x00,0x45,0x27,0x00,0xde,0x64,0x00,0x49,0xd5,0x21,0xe7,0x1c,0x9e,0xed,0x1a,0x20,0x00,0xf0,0x43,0x97,0xd4,0x54,0x8b,0x0b,0xfe,0x67,0x00,0x1c,0x00,0x31,0xc2,0x45,0x28,0xcf,0x05,0x14,0xf1,0x53,0x51,0x73,0x1a,0xe2,0x69,0x0d,0xc4,0x8f,0x85,0x5a,0xff,0xb7,0x16,0x56,0x06,0xb9,0x0b,0x00,0x02,0xd0,0x29,0xe9,0x67,0x21,0x89,0xaa,0x68,0xce,0xf9,0x10,0x02,0x74,0x05,0xe9,0xba,0x2d,0x69,0x7d,0x98,0xb5,0x11,0xb5,0x3c,0xd5,0x3f,0x15,0xb6,0x8f,0x6c,0x42,0x5a,0x61,0xc4,0xb4,0x34,0x7b,0x44,0xd3,0xe2,0x8c,0xbb,0x5f,0x65,0x38,0xa5,0x79,0xc7,0x81,0xad,0xc0,0x1f,0x33,0x9e,0x29,0x9f,0xa5,0x3f,0xb0,0x66,0x3b,0x38,0x2e,0xe3,0x1c,0xa4,0x74,0xcc,0x3d,0xe5,0x3b,0x0e,0x09,0x3a,0xe3,0x35,0x32,0x66,0x7f,0x4b,0x5a,0xec,0x7f,0x6c,0x12,0xf9,0xa8,0xd8,0x9a,0xcd,0x39,0x2e,0x9e,0x23,0x83,0xd2,0x02,0x41,0xc1,0x71,0xcc,0xfa,0xdb,0x16,0x06,0x1f,0xae,0xa3,0x56,0xff,0x81,0x60,0x3d,0x03,0x03,0x24,0xac,0xc2,0x3f,0x5f,0xb6,0xbe,0xae,0x05,0xd4,0x71,0x4d,0xe7,0x90,0x2e,0xef,0x4a,0x24,0x0f,0x0a,0x3f,0x5e,0x71,0xf7,0xf1,0xed,0xdb,0x8f,0xef,0x2e,0x7d,0x2c,0x82,0xec,0x73,0xe6,0xdd,0x0c,0x0c,0x5f,0x54,0x74,0x74,0xd4,0xbe,0x00,0x15,0x31,0x23,0x07,0x89,0x2f,0x28,0xec,0x97,0x2d,0x5b,0x06,0x12,0x81,0xe8,0x60,0x81,0xe8,0x60,0xcc,0x04,0xda,0xef,0xc5,0xf0,0x5a,0x1f,0x64,0x35,0x92,0x8e,0x99,0x9b,0x3f,0xce,0x65,0x62,0x5a,0xbf,0xde,0x88,0x69,0x2e,0xdb,0xe6,0x99,0x0c,0x10,0x19,0xec,0x71,0xce,0x84,0x2b,0x31,0xb0,0x01,0x7d,0xc2,0x8c,0x35,0xf9,0x00,0x00,0xef,0xe7,0x64,0xa8,0x47,0x95,0xcf,0xf8,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x08,0x03,0x00,0x00,0x00,0x44,0xa4,0x8a,0xc6,0x00,0x00,0x01,0x41,0x50,0x4c,0x54,0x45,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x32,0x52,0x5a,0x56,0xba,0xd6,0x5f,0xd4,0xf4,0x55,0xb7,0xd1,0x3d,0x72,0x80,0x24,0x28,0x29,0x27,0x32,0x35,0x5d,0xce,0xed,0x43,0x83,0x95,0x30,0x4c,0x53,0x3c,0x6f,0x7d,0x58,0xc0,0xdc,0x58,0xbf,0xdb,0x30,0x4a,0x51,0x3d,0x70,0x7e,0x44,0x84,0x96,0x3c,0x6e,0x7b,0x56,0xba,0xd5,0x45,0x87,0x99,0x38,0x64,0x6f,0x5f,0xd4,0xf3,0x45,0x88,0x9a,0x46,0x8b,0x9e,0x48,0x91,0xa5,0x39,0x64,0x70,0x5f,0xd5,0xf5,0x48,0x90,0xa4,0x49,0x93,0xa8,0x46,0x8c,0x9f,0x36,0x5b,0x65,0x60,0xd6,0xf7,0x60,0xd7,0xf8,0x4c,0x9d,0xb3,0x2f,0x47,0x4d,0x5f,0xd3,0xf2,0x55,0xb8,0xd3,0x27,0x30,0x32,0x50,0xa9,0xc1,0x2f,0x49,0x50,0x50,0xaa,0xc2,0x58,0xbf,0xdc,0x26,0x2f,0x31,0x3b,0x6c,0x79,0x33,0x52,0x5b,0x60,0xd8,0xf8,0x47,0x8e,0xa1,0x54,0xb3,0xcd,0x5c,0xcc,0xea,0x61,0xda,0xfb,0x31,0x4f,0x57,0x22,0x23,0x23,0x51,0xab,0xc4,0x61,0xd9,0xfa,0x52,0xae,0xc7,0x3d,0x71,0x80,0x60,0xd6,0xf6,0x2e,0x45,0x4c,0x2b,0x3d,0x41,0x54,0xb5,0xd0,0x2d,0x43,0x49,0x4b,0x98,0xae,0x23,0x26,0x27,0x43,0x82,0x93,0x5e,0xd0,0xef,0x49,0x94,0xa8,0x26,0x2e,0x30,0x34,0x55,0x5e,0x5e,0xd1,0xf0,0x40,0x79,0x88,0x5a,0xc7,0xe4,0x24,0x28,0x2a,0x5b,0xc9,0xe7,0x5e,0xd1,0xf1,0x2c,0x3f,0x44,0x52,0xaf,0xc9,0x22,0x23,0x24,0x31,0x4e,0x56,0x31,0x4d,0x54,0x44,0x85,0x97,0x3e,0x75,0x84,0x3b,0x6b,0x78,0x47,0x8d,0xa0,0x52,0xaf,0xc8,0x2f,0x48,0x4e,0x26,0x2d,0x2f,0x40,0x79,0x89,0x3e,0x73,0x81,0x3e,0x74,0x82,0x40,0x7a,0x8a,0x5d,0xcd,0xec,0x50,0xa8,0xc0,0x24,0x27,0x28,0x44,0x86,0x97,0x5d,0xcf,0xee,0x3c,0x6e,0x7c,0x30,0x4a,0x52,0x55,0xb7,0xd2,0x0e,0xd7,0x5c,0xbc,0x00,0x00,0x00,0x09,0x74,0x52,0x4e,0x53,0x00,0x25,0xad,0xf1,0x27,0xef,0xf3,0x28,0xf2,0x7e,0xd1,0xdd,0xe8,0x00,0x00,0x01,0x9e,0x49,0x44,0x41,0x54,0x78,0x01,0x8d,0x93,0x03,0x9a,0x43,0x31,0x14,0x46,0x5f,0xdd,0xbf,0x4d,0x6d,0xdb,0xb6,0x34,0xb6,0x6d,0x7b,0xff,0x0b,0x98,0xa4,0x6e,0x86,0xe7,0xe1,0xd3,0x09,0xae,0x04,0x41,0x24,0x96,0xe0,0x07,0x24,0x62,0x91,0x20,0x48,0x65,0xf8,0x05,0x99,0x54,0x10,0xe3,0x57,0xc4,0xc2,0x68,0x7f,0x95,0x9a,0x68,0xb4,0x3a,0x50,0x74,0x5a,0x0d,0x51,0xab,0x30,0x40,0x2e,0x60,0x80,0xde,0x60,0x34,0x99,0x2d,0x56,0x1b,0x60,0xb3,0x5a,0xec,0x26,0x87,0x41,0x8f,0x01,0x23,0xc1,0xe9,0x62,0x6b,0xdd,0xc4,0xe3,0xf1,0xfa,0xd8,0x3e,0x2e,0x27,0x27,0xf8,0x03,0x60,0x04,0x43,0x24,0x08,0x46,0xd8,0xcf,0x09,0x91,0x28,0x18,0xb1,0x78,0x22,0x36,0x58,0x10,0xe1,0x04,0x63,0x12,0x94,0x54,0xda,0xe9,0x4c,0xa7,0x40,0x49,0x1a,0xf9,0x3b,0x64,0x00,0x64,0x2d,0xb9,0x7c,0xbe,0x50,0x2c,0x01,0xc8,0x94,0x39,0xa1,0x52,0xad,0xd5,0x1b,0xcd,0x66,0x33,0x14,0xa2,0xbf,0x46,0xbd,0x56,0x6d,0x4d,0x0b,0xed,0x58,0xa7,0xda,0xed,0xcd,0x19,0xe7,0x17,0x40,0x59,0x98,0x37,0xce,0xf5,0xba,0xd5,0x4e,0xac,0x3d,0x12,0x16,0x97,0x0c,0x8e,0xe5,0xc8,0xca,0xaa,0x75,0x0d,0x7d,0xd6,0xac,0xab,0x2b,0x91,0x65,0x87,0x61,0x69,0x71,0x20,0xa4,0xd6,0x37,0x36,0x81,0xad,0xed,0x9d,0xdd,0x3d,0x68,0x0d,0xfb,0x5a,0xec,0xed,0xee,0x1c,0x6c,0x01,0x9b,0x1b,0xeb,0x87,0x7d,0xe1,0xa8,0x06,0xca,0xb1,0xa5,0x5b,0x46,0xab,0x49,0x39,0x41,0xb9,0x6b,0x39,0x06,0xa5,0xd6,0xeb,0x0b,0xe4,0x14,0x8c,0x33,0xa2,0xc3,0x39,0x13,0xce,0xa1,0xf3,0x9e,0x81,0x71,0x42,0x7e,0xd8,0xe1,0x62,0xb8,0xc3,0xe5,0x55,0x5f,0xb8,0x5e,0x8f,0xdc,0x00,0x5b,0x07,0xb7,0xf4,0x0e,0x77,0x86,0xfd,0x7b,0x7a,0x87,0x07,0x76,0x87,0x1b,0x7a,0x87,0xd9,0x28,0x8a,0xa3,0x28,0x8a,0xa3,0x28,0xfe,0x9b,0x07,0x86,0x8a,0x66,0xf2,0x71,0x94,0xc9,0x47,0x96,0xc9,0xef,0x6b,0xf1,0x94,0xcf,0xe7,0x8a,0x59,0xbe,0x16,0xff,0xaa,0x66,0xe4,0xf2,0xc7,0x7e,0xe0,0x3a,0x2a,0x34,0xd3,0x51,0x5c,0x4f,0x3e,0x9f,0x91,0xa0,0x87,0xbc,0x3c,0x7f,0xd7,0x93,0xfa,0x57,0xa3,0xe9,0xcd,0x5a,0x7c,0x07,0xde,0x8b,0xc5,0x37,0x93,0xf1,0x95,0xef,0x6a,0x54,0xd4,0xe4,0xe3,0x6e,0x0f,0x94,0xbd,0xbb,0x0f,0xa2,0xae,0x60,0x24,0x48,0xf0,0x2b,0xf2,0xbf,0x47,0x4f,0xf1,0xfb,0xf0,0x2a,0xe8,0x78,0x8b,0x95,0xf8,0x01,0xa5,0x58,0x2a,0x7c,0x02,0x94,0x18,0x5e,0xff,0x05,0x0f,0x64,0x0f,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x08,0x03,0x00,0x00,0x00,0x9d,0xb7,0x81,0xec,0x00,0x00,0x02,0x3a,0x50,0x4c,0x54,0x45,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x25,0x2b,0x2d,0x40,0x79,0x89,0x57,0xbc,0xd7,0x60,0xd7,0xf8,0x5e,0xd1,0xf1,0x53,0xb2,0xcc,0x43,0x82,0x93,0x2c,0x3e,0x43,0x2a,0x38,0x3c,0x58,0xc1,0xdd,0x61,0xda,0xfb,0x61,0xd9,0xf9,0x4d,0x9f,0xb5,0x2b,0x3c,0x41,0x61,0xd9,0xfa,0x58,0xc0,0xdc,0x23,0x25,0x25,0x54,0xb5,0xd0,0x4c,0x9e,0xb4,0x3d,0x71,0x7f,0x3e,0x75,0x84,0x4b,0x9b,0xb0,0x60,0xd6,0xf6,0x41,0x7d,0x8d,0x4c,0x9b,0xb1,0x38,0x64,0x6f,0x3d,0x72,0x80,0x25,0x2b,0x2c,0x40,0x79,0x88,0x5e,0xd0,0xef,0x53,0xb2,0xcb,0x29,0x35,0x39,0x3d,0x71,0x80,0x50,0xa9,0xc1,0x55,0xb7,0xd2,0x22,0x23,0x24,0x50,0xaa,0xc2,0x5c,0xca,0xe8,0x30,0x4a,0x51,0x51,0xaa,0xc3,0x22,0x23,0x23,0x55,0xb7,0xd1,0x23,0x26,0x26,0x5f,0xd4,0xf4,0x3e,0x74,0x82,0x3e,0x73,0x81,0x60,0xd8,0xf8,0x5f,0xd4,0xf3,0x35,0x59,0x63,0x31,0x4f,0x57,0x35,0x5a,0x64,0x31,0x4e,0x56,0x2b,0x3d,0x42,0x31,0x4d,0x55,0x2b,0x3b,0x40,0x2f,0x47,0x4d,0x5c,0xcc,0xea,0x2a,0x3b,0x3f,0x33,0x53,0x5c,0x29,0x38,0x3c,0x32,0x52,0x5a,0x5f,0xd5,0xf5,0x2b,0x3d,0x41,0x5d,0xcf,0xee,0x2c,0x40,0x46,0x2c,0x40,0x45,0x26,0x2d,0x2f,0x30,0x4b,0x53,0x37,0x61,0x6c,0x4f,0xa6,0xbe,0x39,0x64,0x70,0x38,0x61,0x6d,0x42,0x7e,0x8f,0x45,0x88,0x9a,0x50,0xa8,0xc0,0x4e,0xa2,0xb9,0x27,0x30,0x32,0x33,0x54,0x5d,0x5d,0xce,0xed,0x3f,0x78,0x87,0x33,0x55,0x5e,0x43,0x83,0x95,0x36,0x5c,0x67,0x55,0xb8,0xd3,0x26,0x2e,0x30,0x44,0x84,0x96,0x37,0x5f,0x69,0x52,0xad,0xc6,0x48,0x91,0xa5,0x49,0x94,0xa8,0x4d,0xa0,0xb6,0x24,0x28,0x2a,0x3f,0x76,0x85,0x5a,0xc6,0xe3,0x58,0xbf,0xdc,0x2d,0x41,0x47,0x23,0x24,0x25,0x5b,0xc9,0xe7,0x38,0x63,0x6f,0x5b,0xc8,0xe6,0x57,0xbd,0xd9,0x43,0x81,0x92,0x27,0x32,0x35,0x3f,0x76,0x86,0x38,0x62,0x6e,0x25,0x2a,0x2b,0x4c,0x9c,0xb2,0x4e,0xa3,0xba,0x32,0x50,0x58,0x29,0x37,0x3b,0x3d,0x70,0x7e,0x28,0x35,0x38,0x5e,0xd2,0xf2,0x50,0xa7,0xbf,0x34,0x57,0x61,0x51,0xab,0xc4,0x54,0xb4,0xcf,0x30,0x4a,0x52,0x51,0xac,0xc5,0x54,0xb4,0xce,0x49,0x93,0xa8,0x36,0x5d,0x68,0x52,0xaf,0xc9,0x54,0xb3,0xcd,0x30,0x4c,0x53,0x46,0x8b,0x9d,0x39,0x65,0x71,0x45,0x88,0x9b,0x45,0x89,0x9c,0x39,0x67,0x73,0x46,0x8a,0x9d,0x43,0x83,0x94,0x23,0x26,0x27,0x5c,0xcb,0xe9,0x60,0xd6,0xf7,0x26,0x2f,0x31,0x36,0x5c,0x66,0x42,0x81,0x91,0x41,0x7b,0x8c,0x52,0xae,0xc7,0x5d,0xcd,0xec,0x28,0x34,0x37,0x25,0x2c,0x2e,0x2a,0x3a,0x3e,0x2a,0x39,0x3d,0x39,0x66,0x72,0x3a,0x67,0x74,0x37,0x5e,0x69,0x55,0xb6,0xd0,0x3f,0x77,0x86,0x5a,0xc7,0xe4,0x58,0xbf,0xdb,0x5e,0xd1,0xf0,0x51,0xad,0xc5,0x48,0x90,0xa3,0x29,0x36,0x3a,0x56,0xb9,0xd4,0x27,0x30,0x33,0x34,0x55,0x5e,0x45,0x87,0x99,0x2e,0x45,0x4c,0x2e,0x46,0x4d,0x4b,0x99,0xae,0x40,0x7a,0x8a,0x53,0xd7,0x1c,0x0e,0x00,0x00,0x00,0x19,0x74,0x52,0x4e,0x53,0x00,0x2a,0x8e,0xd7,0xf8,0xd6,0x06,0x94,0xfd,0x98,0x09,0xbb,0xbd,0x95,0x2b,0xfc,0x8f,0xf9,0xf3,0xd4,0x90,0x2c,0xd8,0xfa,0xf4,0xc0,0x3d,0x56,0x8f,0x00,0x00,0x04,0x0c,0x49,0x44,0x41,0x54,0x78,0x01,0xa4,0xcb,0xb5,0x01,0x43,0x21,0x00,0x04,0xd0,0xef,0x8a,0x96,0x87,0x43,0x7c,0xff,0x05,0xe3,0xda,0x05,0x5e,0x79,0x52,0x5d,0xd5,0x4d,0xdb,0xe1,0x4f,0x5d,0xdf,0xd4,0xd5,0xdd,0x30,0x4e,0xc8,0x32,0xcd,0xcb,0xed,0xbf,0x22,0x1b,0x19,0xaa,0xaa,0xa2,0x28,0x30,0x56,0x15,0xe3,0x28,0xc0,0x59,0x25,0x50,0x44,0x54,0x2d,0x7e,0x28,0x6d,0xac,0xf3,0x21,0xe2,0x4b,0x0c,0xde,0x59,0xa3,0x15,0x7e,0xb4,0x95,0xfc,0x49,0xd2,0x66,0x7b,0xb3,0xdb,0x1f,0xde,0xe1,0x61,0x7f,0xbc,0xa7,0xa7,0xf4,0x33,0x97,0xd5,0x4f,0x70,0x26,0x94,0x1c,0xd0,0xa4,0x89,0xa1,0x00,0x78,0x8e,0xf7,0x23,0x9f,0x6a,0xad,0xf4,0xda,0xb6,0x6d,0x8d,0x6d,0xe9,0xf2,0x63,0x29,0x5d,0x6d,0xa4,0x92,0x87,0xc9,0x29,0xc6,0xa7,0x67,0x66,0xe7,0x14,0x68,0x6b,0xb2,0xf1,0xce,0xd2,0xa0,0xe6,0x67,0x67,0xa6,0xc7,0x99,0x9a,0xec,0x19,0xd0,0x2b,0x58,0x80,0xc5,0xea,0x75,0x69,0x79,0x05,0x56,0xd7,0xaa,0xb7,0x6b,0xab,0xb0,0xb2,0x5c,0x5b,0xfc,0x3a,0x2c,0xd8,0x08,0x36,0xd8,0xdc,0x6a,0xc4,0xb2,0x0d,0x3b,0xbb,0x22,0xbb,0x3b,0xb0,0xd7,0x58,0xf9,0xfe,0x01,0xdb,0x66,0xc1,0xe1,0x11,0xc7,0xcd,0xfb,0xfd,0x93,0x53,0xce,0xce,0xcf,0xcf,0x38,0x3d,0xde,0x6f,0xbe,0x3b,0xe6,0xe8,0xd0,0x28,0x18,0x83,0x8b,0xf6,0xd3,0xa5,0x42,0x6b,0xd4,0x65,0xfb,0xcd,0x15,0x5c,0x1b,0x05,0x37,0x70,0x2b,0x6d,0xee,0xee,0xe1,0xfe,0x4e,0xda,0x3c,0xc0,0x8d,0x51,0xf0,0x08,0x4f,0xd2,0xe6,0xf9,0x05,0xf4,0xb3,0xb4,0x79,0x82,0x67,0xbb,0x15,0x74,0x74,0xd0,0xeb,0x1b,0x6f,0x95,0xfd,0xbd,0xa3,0x9f,0xec,0x56,0xf0,0x01,0xbb,0xd2,0xe4,0x73,0x02,0xfd,0xfc,0xac,0x99,0xf8,0x94,0x26,0x5f,0xf0,0x61,0x14,0xfc,0x81,0xef,0x56,0x15,0x7e,0xe0,0xb7,0xd6,0x19,0x3f,0xad,0x2a,0x38,0xe0,0x8f,0x51,0x20,0x3b,0x38,0xa5,0xc1,0x2c,0xb8,0xa4,0x82,0x0b,0x66,0xa5,0x81,0x93,0x1d,0x31,0x0b,0xdc,0x78,0xa4,0x86,0xd7,0xa7,0xf1,0x9f,0x04,0x2a,0x9c,0xf8,0xd1,0x41,0xaf,0xd4,0xf0,0xb0,0x61,0x23,0x08,0xb1,0xb3,0x16,0xb6,0xa6,0x23,0x8a,0x6e,0x50,0x91,0x69,0x2b,0xbc,0xb6,0x43,0xc8,0x2c,0x88,0xc6,0xe8,0xe4,0xcd,0x5f,0xe1,0x8d,0x4e,0x62,0xd1,0xe1,0x82,0xc3,0xb8,0xe7,0x05,0x00,0x95,0x48,0x8e,0x42,0x2a,0xda,0xd2,0xa6,0x20,0x9d,0x4c,0x28,0x00,0x5e,0x3c,0xf1,0xc3,0x81,0x82,0x4c,0x36,0x07,0x70,0x4a,0xbe,0x50,0x94,0xc9,0x08,0xa5,0x8e,0xa9,0xa2,0x25,0x22,0x93,0x52,0x2c,0xe4,0x39,0x05,0xc8,0x65,0x33,0x65,0x52,0xcb,0x61,0x31,0x90,0x28,0x0a,0xa2,0xdf,0x71,0xc7,0x38,0xd9,0x8e,0xb4,0x8a,0x6d,0x4b,0xcb,0xb1,0x6d,0xc6,0xb6,0x6d,0xdb,0xfc,0xb7,0x79,0x69,0x21,0xe8,0x0e,0xce,0xaa,0x59,0xcf,0x75,0xeb,0xa0,0xc0,0xcf,0x5f,0xc0,0xef,0x3f,0x69,0xf7,0x88,0xfd,0x2b,0xf2,0x0f,0x8a,0xc4,0x41,0x11,0x7c,0x16,0xf9,0x7b,0x91,0x98,0xb4,0x3f,0xbf,0x81,0x5f,0x45,0x6e,0x01,0x29,0x2e,0x01,0x4a,0xcb,0x44,0xa4,0x3c,0x80,0x0a,0xa9,0xac,0xa2,0x5a,0x5c,0x54,0x73,0xa9,0x52,0x2a,0x08,0x28,0x17,0x09,0xaf,0xa9,0x05,0x4a,0x8a,0x9d,0x02,0x85,0x75,0x10,0x58,0x2f,0x1a,0x0d,0x34,0x4a,0x13,0x39,0x9a,0xa1,0x35,0xb7,0x44,0x45,0xb5,0x34,0x6b,0xc7,0x34,0x87,0x26,0x69,0xa5,0x56,0x34,0xda,0x02,0xa1,0xae,0xd0,0x16,0x08,0xaf,0x86,0x76,0x73,0x66,0x3a,0xe0,0x67,0x2c,0x9d,0xa2,0xe8,0x42,0x43,0xbb,0xee,0x24,0xb6,0x08,0xba,0xcd,0xf9,0xee,0x81,0x87,0xe1,0x96,0x40,0x11,0xf4,0x8a,0x49,0x5f,0x3f,0x03,0x3c,0x1d,0x14,0x91,0x21,0x0c,0x5e,0x8a,0xc8,0xe0,0xd3,0xbd,0xc7,0xf6,0xe4,0xf5,0x42,0x91,0x25,0x10,0x4c,0xe0,0x77,0xb1,0x18,0x06,0x46,0x44,0x31,0x8a,0xc1,0xa8,0x28,0x46,0x80,0x1e,0xb1,0xf8,0x1e,0x48,0x98,0x25,0x30,0xc6,0x03,0xb1,0x19,0xbf,0xc5,0xd8,0x84,0x28,0xa2,0x30,0x88,0x12,0xc5,0xc4,0x18,0x17,0x27,0xc5,0xe6,0x01,0x97,0x4e,0x2e,0x30,0x75,0x84,0x40,0xed,0x59,0x87,0x50,0x04,0x57,0xec,0x49,0xfc,0x61,0x4e,0xe2,0x4b,0x0c,0x9a,0x0f,0x99,0xc4,0x3f,0xf0,0xd3,0xb5,0x8c,0x3d,0x8e,0x65,0x9c,0x76,0x2f,0x63,0x97,0xb1,0x8c,0xd3,0x30,0x63,0x16,0x30,0xf7,0x32,0xca,0xeb,0x3a,0x88,0x30,0x36,0x52,0x2d,0x75,0xd2,0xc4,0xad,0x5c,0x51,0xcc,0xb6,0xe4,0xe4,0xb4,0xbc,0xb5,0x36,0x52,0x23,0x0d,0xc6,0x46,0x9a,0xb3,0x36,0xd2,0xf1,0xb7,0x72,0xd5,0x81,0xad,0xec,0x75,0x98,0xe6,0x8d,0x6d,0xe2,0xf0,0xc2,0x7f,0x9e,0x87,0x49,0xf1,0x69,0x7e,0x01,0x20,0x96,0xc5,0xfc,0xa0,0xc3,0x8f,0x73,0x50,0xfe,0x22,0xb1,0x00,0x0b,0xf3,0x9f,0xbc,0x0d,0x65,0x69,0x79,0xe5,0xa3,0xcb,0x50,0x9a,0xe0,0xe3,0xca,0xf2,0x92,0xa7,0xa1,0x9c,0xdd,0xd2,0x2c,0x53,0x5d,0x55,0xa6,0xba,0x56,0x85,0x1b,0xaa,0xd6,0x94,0xa9,0xae,0x5a,0xa6,0xea,0x6f,0xeb,0xeb,0x1b,0xb7,0x78,0x7a,0xe3,0x99,0xe2,0xc6,0x53,0x6e,0x6d,0xac,0x7b,0xda,0xba,0x77,0x61,0xd9,0x84,0xcf,0x1e,0x85,0xc5,0xbb,0xb4,0xdd,0xf5,0x28,0x6d,0x67,0x2f,0xae,0xfe,0xe5,0xbd,0xc0,0xbf,0xbc,0xfb,0x05,0x8c,0x5b,0xa7,0x08,0x18,0x19,0x62,0xb3,0xb5,0x17,0x71,0xb6,0xc5,0x26,0xd5,0xaf,0x07,0xb9,0x90,0x24,0x16,0xf1,0x7a,0xc8,0x8a,0x17,0x8b,0x04,0x48,0x3e,0x61,0xcc,0x4b,0x54,0x31,0x2f,0xe6,0xf8,0x31,0x4f,0x82,0x89,0x30,0xbe,0x2e,0x7f,0x68,0x07,0xcd,0x87,0x59,0xfe,0x41,0xd3,0xf6,0xa3,0x0a,0x2d,0xea,0x3e,0xdb,0x8b,0xba,0xab,0xa2,0x58,0xd5,0xa2,0xee,0x7d,0xdf,0xa8,0xeb,0x0c,0xdb,0xd1,0x3b,0x07,0xc3,0xf6,0x4e,0xb4,0x7f,0xd8,0x76,0xc5,0xfd,0x8f,0xce,0xb8,0xff,0x31,0x00,0x8d,0xeb,0xd7,0xc4,0x4f,0x40,0x26,0x76,0x2f,0xc4,0xfe,0x5f,0x97,0xf6,0x5c,0xf4,0x0e,0xc7,0x5c,0xed,0x2e,0x0f,0x99,0xbd,0x2b,0x30,0x94,0x03,0x3b,0x1c,0x14,0x01,0x21,0x06,0x66,0xca,0x0c,0x10,0xa6,0xb4,0xd3,0x25,0xc2,0x20,0x4a,0x59,0xb7,0x4f,0x94,0xc2,0x8e,0x27,0x2f,0xc5,0x5d,0x5f,0x8a,0x3b,0xdf,0x10,0xc0,0x27,0x22,0x26,0x4e,0xaa,0x6e,0x09,0x61,0x11,0x51,0x90,0x5e,0x00,0x19,0x94,0x63,0x78,0xa6,0x41,0xe1,0xd2,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
+
+static const unsigned char FILE_1[] = {0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x08,0x03,0x00,0x00,0x00,0x65,0x02,0x9c,0x35,0x00,0x00,0x00,0x87,0x50,0x4c,0x54,0x45,0x00,0x00,0x00,0x64,0xda,0xfb,0x61,0xda,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfb,0x61,0xdb,0xfc,0x61,0xda,0xfb,0x61,0xda,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfb,0x61,0xda,0xfb,0x61,0xda,0xfb,0x61,0xda,0xfc,0x60,0xda,0xfb,0x61,0xda,0xfb,0x61,0xdb,0xfb,0x61,0xda,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfc,0x61,0xda,0xfb,0x60,0xda,0xfb,0x61,0xda,0xfb,0x61,0xdb,0xfc,0x61,0xda,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfb,0x61,0xdb,0xfc,0x61,0xda,0xfb,0x61,0xda,0xfb,0x61,0xdb,0xfb,0x61,0xda,0xfb,0x61,0xda,0xfb,0x66,0xe8,0xff,0x61,0xdc,0xfe,0x63,0xdf,0xff,0x65,0xe3,0xff,0x68,0xeb,0xff,0x48,0xd5,0xc6,0x94,0x00,0x00,0x00,0x27,0x74,0x52,0x4e,0x53,0x00,0x08,0xfb,0x23,0xf6,0x0f,0x2c,0xe0,0xd8,0xeb,0x5f,0x93,0x80,0xac,0xf1,0x9c,0x45,0xc0,0xd0,0x4c,0x1c,0x17,0x6e,0x3f,0x58,0xe5,0xb3,0x34,0x51,0x67,0xb9,0x79,0x74,0xca,0x3a,0xa4,0xc5,0x87,0x8c,0x8c,0x8d,0x21,0xcd,0x00,0x00,0x13,0xe4,0x49,0x44,0x41,0x54,0x78,0xda,0xec,0x5b,0xe9,0x72,0x9b,0x30,0x10,0x2e,0x02,0x1b,0x6c,0x2e,0x1b,0x3b,0x3e,0xf0,0x15,0xc7,0x69,0xd0,0xc1,0xfb,0x3f,0x5f,0x2d,0x2c,0xf1,0x29,0x95,0xb1,0xc8,0x14,0xb7,0xfd,0x91,0xcd,0x4c,0x27,0x01,0xa4,0xd5,0xde,0xab,0xdd,0xed,0x8f,0x6f,0xf8,0x86,0x6f,0xf8,0x86,0x6f,0xf8,0x86,0x6f,0xf8,0x86,0x6f,0xf8,0x2a,0x78,0x2d,0xfc,0xe9,0x46,0x3f,0xe4,0x1e,0xb7,0x9f,0xbf,0x07,0x26,0xae,0x3f,0x42,0xed,0x59,0x7f,0x3e,0x15,0x80,0xc5,0xdb,0x4d,0x4f,0x1f,0x71,0x9c,0x1c,0x16,0xbe,0xe7,0xc0,0xec,0x38,0xfc,0x72,0xb6,0x8a,0xd3,0xe3,0x31,0xcd,0x4f,0x8b,0x97,0x27,0x93,0x00,0xbc,0xeb,0x3c,0xac,0xe8,0x0d,0x78,0x10,0xe5,0x9b,0xe5,0x97,0x68,0xc0,0x3e,0xde,0x5b,0xf2,0x9e,0x71,0xaa,0x40,0x4c,0xd2,0xc5,0x13,0x29,0x00,0xda,0xdd,0x91,0xd7,0xbc,0x22,0x37,0xa8,0x98,0xa8,0xe9,0x24,0xdd,0x8c,0x80,0xba,0x2f,0xf7,0xc7,0x49,0xc4,0x6b,0xca,0x2a,0xa2,0xb7,0xe2,0x54,0xcc,0x77,0xcf,0xa2,0x00,0x88,0x4f,0x8c,0x56,0xa4,0x02,0x10,0x42,0x38,0xa5,0xe1,0x4f,0x5f,0xbe,0xee,0x7f,0xfc,0x59,0x49,0xa8,0xb8,0x2e,0xae,0x0c,0x20,0x15,0x65,0xaf,0xcf,0x11,0x02,0x30,0xe7,0x35,0x53,0x48,0x01,0x0d,0xf7,0x82,0x7c,0x0c,0xdc,0xae,0xe3,0x2f,0xde,0x05,0x65,0x38,0x3d,0x76,0x62,0x75,0xfc,0x5c,0x35,0xba,0xd4,0x1a,0xab,0x8d,0xba,0xca,0x7d,0x37,0x72,0xf9,0xc1,0x6c,0x2e,0x68,0xd5,0xb5,0x4f,0x1d,0x0f,0x4f,0x00,0x70,0x27,0x38,0x3f,0x69,0xe0,0x33,0x09,0xc1,0x4f,0x87,0x2d,0xc8,0x97,0xe3,0x94,0x9b,0xc7,0xd7,0x36,0x00,0x0a,0x0e,0x43,0x53,0x00,0xe4,0x33,0x0e,0x75,0x15,0xd2,0x71,0x48,0x63,0x36,0x49,0xa0,0xdb,0x29,0x28,0xb8,0x1f,0xb6,0x12,0xa2,0x8e,0x0f,0xed,0x6b,0xa0,0xd5,0x4c,0x56,0x8d,0x07,0xa6,0x00,0xc8,0x23,0xa1,0xb1,0xd4,0x2c,0x3c,0xcf,0xe7,0xd1,0x84,0xd7,0x9f,0x74,0x99,0x70,0x7a,0x84,0x1e,0xdd,0xd3,0x9e,0xa8,0xb1,0x21,0xb0,0xa1,0x16,0x59,0x51,0xe6,0x79,0x5a,0x10,0xca,0xd4,0x43,0x3a,0xc7,0x92,0x61,0x09,0x78,0xa5,0x44,0x1d,0x93,0xc5,0xbb,0x91,0x7c,0xb4,0x5c,0xbf,0x1e,0x03,0xe9,0x4d,0xc0,0x51,0x1a,0xac,0x34,0x05,0x36,0x07,0x62,0x2e,0x8c,0x4f,0x39,0xe5,0x51,0xbc,0x58,0xde,0xde,0xfa,0x1f,0x8c,0xab,0x77,0x74,0x33,0xa4,0x08,0x80,0x7e,0x14,0xde,0x30,0x10,0x9e,0xcd,0x8c,0x17,0xfe,0xea,0xcc,0xa5,0x02,0x40,0x8f,0x8e,0x4b,0x1c,0xc0,0x64,0xff,0x5b,0x54,0x1b,0xa4,0x72,0x9a,0xe5,0x6b,0xcf,0x08,0xca,0xb3,0x40,0xed,0x4f,0xcf,0x58,0x36,0x24,0x01,0x07,0x4a,0x94,0x92,0xae,0x9b,0x0c,0x0c,0x89,0xd0,0x2c,0x35,0x83,0x03,0xa1,0xd9,0x46,0xbe,0xb1,0x23,0x88,0x30,0x8e,0x5f,0x6f,0x93,0xa5,0x99,0x49,0x79,0x86,0x89,0x89,0xd9,0x53,0xac,0xe0,0x9d,0x2a,0x06,0x9d,0x3e,0x6d,0xdf,0x90,0xb2,0x4b,0x39,0x25,0x04,0xcc,0x6d,0xbd,0x39,0xe4,0x57,0xd6,0x8c,0xb0,0x56,0x4a,0x93,0xa4,0x75,0x58,0xf8,0xe6,0x43,0x63,0xb8,0xe0,0xd5,0x70,0x02,0x18,0x2b,0xe4,0x22,0xf2,0xee,0xc5,0xa6,0xf5,0x9c,0xf2,0x96,0x82,0xaa,0x3e,0xfb,0xf2,0x29,0x3e,0x78,0x0b,0xa9,0x21,0x22,0x16,0x23,0x73,0x33,0x89,0xdc,0xde,0x64,0xc0,0x27,0xf2,0xf5,0xd0,0x04,0x9c,0x34,0x7b,0x94,0x9f,0xb6,0x48,0x98,0x6e,0xa1,0xe2,0x84,0x66,0x50,0x03,0xef,0xfa,0x8e,0x09,0x02,0x23,0x99,0xef,0xe4,0xc3,0xee,0x38,0x43,0x9e,0x62,0xc6,0xf3,0x86,0x00,0x22,0xb9,0xe3,0xdd,0xf7,0x91,0xa3,0x5c,0x40,0x08,0x9c,0xcb,0xb4,0x46,0xbd,0xf9,0xa0,0x50,0x9f,0xc6,0x4d,0x75,0x6c,0xe1,0x13,0x76,0xfb,0x26,0x1f,0x8a,0x00,0xec,0xfd,0x32,0xe1,0xb7,0xbd,0xd3,0x07,0x6e,0x7e,0x11,0xd6,0x50,0x23,0x9a,0xcb,0x67,0xd2,0x4c,0xcb,0x9a,0x10,0xb0,0x1f,0x81,0xa2,0x93,0x4b,0xa2,0xc0,0x37,0x43,0x11,0xb0,0xe6,0xca,0x49,0x4f,0xcd,0xad,0x2d,0x2d,0xbe,0xc0,0xa3,0x92,0xfa,0xe8,0x49,0x13,0x7f,0x29,0x40,0x95,0x60,0x27,0xf9,0x99,0x4b,0x4f,0x59,0x00,0x13,0x1a,0xd8,0x89,0x32,0x72,0x3f,0xd0,0x43,0xdb,0x03,0x0a,0x43,0x28,0xae,0xc6,0x38,0xde,0x1a,0x0f,0xc2,0x37,0xf9,0x91,0x9b,0x4d,0x7c,0x36,0x38,0x01,0xf1,0x8d,0x8d,0xd2,0x07,0x79,0x8f,0xbd,0x15,0x18,0x1e,0xd0,0xad,0xbf,0xcb,0x44,0xd0,0x2a,0x55,0x3a,0x52,0x8b,0x9d,0x8a,0xba,0x1a,0xdc,0x8a,0x8f,0x37,0xed,0xa4,0x47,0xc7,0xce,0x57,0xfa,0x2e,0x6d,0x54,0x23,0x74,0x92,0x09,0xfd,0x3b,0x17,0x89,0x5b,0xb3,0xcf,0x82,0x3c,0x29,0xa9,0x8e,0x14,0x01,0xae,0x9d,0xe5,0xeb,0x57,0xce,0xdb,0x53,0x33,0xfd,0x9b,0x08,0xf6,0x3f,0xdc,0x6b,0x53,0x85,0x26,0x1d,0xec,0xe0,0x88,0x31,0xc4,0x29,0x5b,0x78,0xa3,0xa0,0x75,0xfb,0x50,0x7f,0x47,0x96,0x8c,0x60,0x3c,0x64,0x3a,0x04,0x0f,0x9d,0xf1,0xfe,0x21,0xc6,0x6b,0x2d,0x17,0xe7,0x3f,0xbf,0xf4,0x5a,0xb8,0x52,0x7e,0x34,0x84,0xa9,0x0d,0x95,0x48,0xb0,0x2f,0xb8,0x07,0xe5,0x3b,0x01,0x75,0xe9,0xf5,0x5b,0x37,0x55,0xe1,0x72,0x3b,0x1a,0x98,0x80,0x9d,0xce,0x14,0x5d,0x85,0x0f,0x24,0x6f,0x1c,0xe7,0xe7,0x71,0xdf,0x0b,0xff,0x42,0xdc,0x4c,0x67,0xb2,0x1c,0x98,0x80,0xb5,0xa8,0x10,0x06,0x7a,0xad,0xd8,0x0b,0x10,0xc0,0xd6,0x58,0xe5,0xbc,0xb5,0x0e,0x1a,0xc9,0xb0,0x31,0xc5,0xc6,0xfd,0x16,0x54,0xcc,0x90,0x40,0xd0,0x57,0x70,0x6b,0xa6,0xf0,0x8c,0xff,0x0d,0x01,0xb0,0x99,0x80,0x9b,0xd7,0x7d,0x31,0xe9,0xb9,0xee,0xed,0xbf,0x20,0xe0,0xea,0xb4,0x26,0xa6,0x1f,0x6d,0xdc,0xca,0x55,0xa9,0xff,0x07,0x02,0x88,0x24,0xc0,0xed,0x83,0x42,0x4a,0xa0,0x41,0xcd,0x3a,0x1a,0xc1,0xaf,0x0c,0xa3,0x42,0xc3,0x1b,0x31,0x92,0x89,0x33,0x0d,0xf4,0xf5,0x56,0xb4,0x79,0xd1,0x5c,0xbe,0xea,0x69,0xc4,0x3c,0xf3,0x87,0x76,0xa3,0x4c,0xb1,0xe6,0xad,0xc7,0xc6,0xa9,0x8e,0x01,0xa4,0x4e,0x2e,0xf8,0x3d,0xff,0x8a,0x1b,0x7d,0x19,0x3a,0x90,0x11,0x04,0x32,0x67,0x3a,0x80,0x33,0xc7,0x32,0x0b,0x0c,0x74,0x34,0x4e,0xb0,0x76,0x80,0x40,0x36,0x7c,0x2a,0x81,0x9b,0x83,0x3e,0xff,0x45,0xea,0x93,0xac,0x66,0xe0,0x32,0xf4,0x6f,0x52,0x09,0x24,0x73,0xb8,0xd2,0x77,0x6b,0x71,0x7b,0xfb,0x3d,0xde,0x96,0x46,0xba,0xa2,0xc7,0xd8,0x9b,0x6b,0x75,0x82,0x64,0x6e,0x50,0x50,0x75,0x51,0xa8,0x41,0xe7,0x09,0x96,0x13,0x4e,0xf4,0x7d,0x4c,0x72,0xb1,0x79,0x24,0x88,0x0e,0x07,0x2f,0x8e,0xe5,0xb9,0x22,0xa0,0xc4,0xc3,0x41,0xcb,0x5a,0xa8,0x17,0x74,0x3b,0x20,0x7d,0xd8,0x50,0x1d,0x16,0x51,0x8d,0xc9,0xc2,0xed,0xe3,0xf5,0xa5,0x81,0x66,0x58,0x48,0xfb,0xdc,0xc8,0xbc,0xb6,0x03,0x42,0x38,0x1c,0xee,0xd5,0xb7,0xf0,0x7e,0xfd,0x0b,0xdc,0xc8,0x3e,0x06,0x25,0x00,0xae,0x85,0xe0,0x4e,0xdc,0x5d,0xc0,0x6e,0x80,0xef,0xf5,0x77,0xb0,0x4d,0x18,0x51,0x77,0x01,0xf9,0x39,0x77,0x62,0x1c,0x01,0x0e,0xba,0xa3,0xa8,0xa0,0xcf,0xf9,0x8a,0xcf,0x50,0x13,0xb8,0x02,0x63,0xbb,0x07,0x1b,0xf8,0xda,0x5b,0x2f,0x06,0x27,0x60,0xcf,0x81,0xbf,0x9b,0x7f,0x82,0xc0,0x81,0xe2,0x47,0xae,0x38,0xd6,0xad,0x6d,0xc0,0xc5,0x77,0x05,0xe2,0xe1,0xbb,0x34,0xb8,0x92,0x89,0xae,0x40,0xe0,0x29,0x3b,0xe9,0xf0,0x82,0x5e,0xd4,0x12,0x87,0xda,0x5e,0x2f,0x39,0x0f,0x55,0x5a,0xdc,0xf2,0x1b,0x7a,0xdb,0x8f,0x7a,0x5e,0xc3,0x63,0x18,0x00,0x9f,0x8c,0xbd,0xa5,0x3f,0x96,0xb0,0xdb,0xc9,0x7f,0xfd,0xe5,0xd2,0x5b,0x07,0x0c,0xea,0xa5,0xa6,0x3c,0x3c,0xbb,0xfa,0xa4,0x4b,0x8b,0xc3,0xc3,0x59,0xa0,0xe0,0x01,0xaf,0x69,0x50,0xb1,0x68,0xaf,0x30,0x6c,0x12,0x4d,0x26,0x59,0x40,0x88,0x54,0xb9,0x8a,0x90,0x20,0xc8,0x26,0x93,0x28,0x6b,0x5f,0x57,0x0b,0x1c,0x1d,0x7b,0xa0,0x36,0x8a,0x02,0xec,0x90,0x22,0xb8,0xd0,0xd6,0x0d,0x01,0xef,0xad,0x51,0x36,0x3d,0xc5,0x65,0x11,0x1a,0x57,0x30,0x2e,0x38,0xe7,0x0c,0xc0,0xaf,0x20,0xf0,0x9a,0x55,0x61,0x71,0xcc,0x93,0xe9,0x7a,0xf9,0x1b,0x1d,0xa3,0xd0,0x11,0x2e,0x07,0x68,0xf1,0x71,0x79,0xa5,0x51,0xfd,0x25,0x7f,0xb6,0x8a,0x8f,0x57,0xce,0xd2,0x5b,0xcb,0xd5,0x00,0xd5,0xf8,0xc5,0xdf,0xea,0x01,0x28,0x94,0x6b,0x58,0x16,0x1d,0xe3,0xd5,0xcc,0xf7,0x74,0xab,0x67,0x57,0xb1,0x67,0xf5,0x07,0x10,0x8c,0xe8,0xa2,0x69,0xed,0xed,0x93,0x34,0xca,0x04,0xad,0xa9,0x50,0xf3,0x1a,0xd5,0x57,0x40,0x2d,0x61,0xcd,0x06,0x59,0x94,0x26,0xfb,0x86,0x8a,0x0d,0x2a,0xc8,0xc3,0x13,0xb0,0xcc,0x14,0x77,0x3e,0xfc,0x43,0x5e,0x04,0xa2,0x61,0xba,0xfb,0xe0,0x6e,0x42,0xa4,0x38,0x6a,0x11,0x44,0x97,0x95,0x9f,0x2b,0x29,0x87,0xcf,0xe8,0xf1,0x79,0x85,0x50,0xec,0xa9,0xa8,0x66,0x7b,0xa3,0xcf,0x7f,0x04,0x72,0xb9,0x16,0x06,0xad,0x74,0x83,0xa6,0x1c,0xbe,0x41,0x73,0x05,0x1d,0x4c,0x19,0x7b,0xc4,0x77,0x02,0xb0,0x9f,0x3a,0x16,0x2a,0x6e,0x90,0xfa,0x75,0xb0,0xe1,0x2d,0x38,0x88,0xe5,0xb4,0xe0,0x77,0x59,0xc8,0x2a,0xdb,0x3a,0x1b,0x10,0x82,0x2b,0x10,0xc6,0x43,0x6e,0x09,0xc0,0x06,0xfe,0x3e,0xf5,0x15,0xea,0x81,0x98,0xbf,0x3c,0x94,0x19,0xe5,0x0e,0xc6,0xdd,0xb4,0xb7,0x78,0x2f,0x2f,0xf1,0xcf,0xd3,0x61,0xba,0xd9,0x2f,0x66,0xb3,0xd9,0x7a,0x7d,0xfd,0x67,0xb1,0xdf,0x4c,0x0f,0xaf,0x49,0x9c,0xa7,0xf3,0x73,0x88,0x6d,0x58,0xa7,0x09,0x09,0x9a,0x95,0x87,0xe5,0x1f,0x52,0x80,0xe6,0xe3,0xfe,0x92,0x61,0x9a,0xc4,0x00,0x79,0x74,0x4e,0xeb,0x9a,0xa3,0x85,0x54,0x7a,0xce,0xc2,0x43,0x49,0x8d,0x86,0x78,0x4d,0xf9,0x5d,0x32,0x08,0xa3,0x34,0x4b,0x37,0x23,0x27,0x0d,0x6e,0xe6,0x8f,0x7f,0x86,0x82,0xf2,0xdf,0x50,0x68,0xab,0x13,0x24,0x3c,0xe6,0x87,0x43,0xc0,0x2a,0x34,0xa8,0x6f,0xd9,0x5b,0x03,0x48,0xe6,0x1a,0x50,0xd2,0x9c,0x70,0x25,0x80,0x60,0x3a,0xcd,0x8f,0x61,0xe3,0xcf,0x40,0x85,0x39,0x0b,0x22,0xb6,0xf1,0xd8,0x41,0x82,0x6b,0xae,0x70,0x5f,0x56,0x54,0x0f,0x05,0x01,0x98,0x68,0xe6,0x15,0xd3,0xd3,0x7e,0x2c,0x37,0xcf,0x69,0xdf,0x31,0x13,0x14,0x1e,0x54,0xb7,0x47,0x46,0xc3,0xc5,0x29,0x2d,0x32,0xd1,0x04,0x14,0x7b,0x92,0xad,0x3a,0x6e,0x3c,0xd0,0xf0,0x55,0xdd,0x39,0x14,0x02,0xaa,0x63,0xc0,0x95,0xef,0xc9,0xc2,0xf7,0x74,0xa2,0x4d,0xd5,0x53,0x64,0x30,0xae,0x36,0x92,0x26,0xb8,0xbd,0xf4,0xf8,0x8b,0xa4,0xdc,0xde,0xc3,0x54,0x51,0x1a,0xad,0x30,0x56,0xf1,0xa5,0xe3,0x9f,0x42,0xfa,0xfb,0x80,0xa2,0x9e,0x96,0x18,0xa9,0x8f,0x9a,0x1f,0x99,0xbf,0x20,0x07,0xee,0xdb,0x33,0x47,0xf1,0x44,0xa7,0x55,0xcb,0x2d,0x27,0xc8,0x43,0x80,0x54,0xd0,0x6d,0x82,0xd1,0x8a,0xde,0xc7,0x7f,0x0d,0x3f,0x6b,0x3e,0x91,0x76,0xa5,0x95,0xd7,0x37,0xe6,0x6d,0x3e,0xb4,0x46,0xa0,0xea,0xd3,0x5f,0x89,0xd4,0xd5,0xb7,0x69,0x88,0xbf,0x69,0xff,0x44,0x35,0x66,0x58,0xc3,0xe4,0xd4,0x4f,0x0a,0x68,0x57,0x87,0x94,0xff,0x7e,0x7a,0x92,0x5e,0x14,0xe7,0x6a,0x79,0x63,0xc5,0x45,0x07,0x55,0x20,0x27,0xa0,0xf6,0x80,0x9b,0x97,0x7e,0xf8,0x53,0xdf,0x3a,0xe3,0x34,0xa0,0x7a,0x92,0x0d,0xe3,0x45,0x07,0x08,0xc1,0x3d,0x5b,0xfc,0x4e,0x05,0x31,0x35,0x47,0x50,0x32,0x5f,0xf9,0x3f,0x46,0x99,0x1d,0xea,0x8f,0x94,0xa0,0x6e,0xdd,0xbb,0xce,0x17,0x30,0x62,0x51,0x7d,0x16,0x2a,0x11,0xba,0x9a,0xc4,0xf4,0xa8,0xe7,0x62,0xe1,0x72,0xcf,0x33,0x45,0x81,0xb3,0x08,0x17,0x73,0xf1,0x79,0x29,0x2f,0x4e,0xbe,0x7c,0xa5,0x4f,0xcb,0xb2,0xa5,0x16,0xbd,0xcc,0x1f,0x71,0x53,0xfb,0x6a,0x6e,0x8e,0xc4,0x19,0xf3,0x48,0x75,0xde,0x3c,0xf1,0x5f,0xcf,0xbc,0x51,0x25,0xd8,0x82,0xc8,0x5f,0x5c,0x24,0xc8,0xd7,0xfb,0xb0,0xae,0x8c,0x65,0xbc,0xce,0xf2,0xb5,0x36,0xd9,0xd5,0x6f,0x33,0x43,0xca,0x82,0xbb,0xcb,0x2d,0xea,0xa1,0x8d,0xa5,0x50,0xeb,0x78,0xa8,0x1d,0x42,0xa2,0xf7,0xde,0xeb,0x55,0xeb,0x7c,0x52,0x0b,0x83,0x84,0xaa,0x9e,0x6c,0x9c,0x73,0xa9,0x5e,0x6c,0x28,0xbf,0xd4,0x9d,0xf0,0xa4,0x86,0xd3,0x55,0x8d,0x1a,0x3a,0x04,0xac,0xaa,0x6a,0x6d,0x6f,0x86,0x5f,0xba,0x0a,0x30,0xa4,0xfe,0xa9,0xde,0x9e,0x05,0xe6,0x91,0x34,0xc6,0xe5,0x6b,0x44,0xc5,0xa7,0x41,0xc1,0x1c,0x9b,0x75,0x4d,0x6a,0x60,0xea,0x8a,0x50,0x5a,0x4c,0x3d,0x1c,0x00,0x73,0x73,0x5c,0xea,0x10,0xee,0x08,0x77,0x42,0x80,0x96,0xd0,0x68,0xa4,0x4e,0x63,0x15,0x41,0x6b,0x02,0x97,0x06,0x67,0x80,0x3b,0xb7,0x62,0xda,0xb4,0x10,0x94,0xe0,0x48,0x75,0xb4,0x7b,0x54,0x18,0x5b,0x04,0xd4,0x24,0xb7,0xd8,0x00,0xb9,0x3d,0x77,0x86,0x53,0x10,0x8e,0xd6,0x19,0x70,0xfb,0x87,0xfc,0x3d,0xdc,0x6e,0xc3,0xf7,0x7c,0xda,0x58,0x90,0x15,0x0c,0x30,0xe1,0xd7,0xca,0x12,0xce,0x18,0xfb,0x6c,0x0a,0x53,0x29,0x44,0x65,0x0d,0x07,0xe3,0xdb,0x15,0xe7,0xc6,0x64,0x5b,0x38,0xb5,0xd0,0x42,0x87,0xe6,0x68,0xdb,0xe0,0x12,0x6e,0xee,0x35,0x2b,0x83,0x26,0x7b,0x6e,0xf2,0xeb,0xa0,0x84,0x07,0xb1,0xaa,0x8d,0x7c,0x2d,0x29,0x28,0xec,0x8a,0x10,0xa6,0xf1,0xc2,0x36,0x21,0x60,0x84,0xd1,0xce,0x99,0xa9,0x84,0x56,0xc6,0x64,0x5b,0x72,0x37,0x07,0x99,0xb7,0xb7,0x56,0xb8,0x73,0x58,0x30,0x08,0x3d,0xca,0x24,0xa4,0x05,0x46,0x45,0x09,0x19,0xc1,0x8e,0x35,0x33,0x9a,0x28,0x06,0x5d,0xb4,0x73,0xb2,0x04,0xaa,0x41,0x2a,0xfa,0xa1,0x0e,0x66,0x8f,0x0c,0x42,0x7b,0x4a,0x4c,0xb6,0x59,0x7c,0x53,0x5e,0xf3,0xc7,0x4c,0x54,0xd5,0x7d,0xb1,0x1f,0xda,0x09,0x6f,0x60,0x25,0x10,0x3d,0xda,0x61,0xca,0xef,0xa8,0xeb,0x1e,0xdc,0xaa,0x45,0x82,0x5f,0x2a,0x3d,0x42,0xed,0xda,0x76,0xcd,0xc6,0xe8,0x2d,0x90,0xd9,0x21,0x48,0x33,0x5d,0x4b,0xc3,0x9e,0xd6,0xfe,0x30,0x53,0x40,0x30,0xe5,0xe7,0xfd,0x78,0x4c,0x44,0x61,0x4c,0x8c,0x8e,0x3a,0x93,0x83,0x0c,0x42,0x40,0xd0,0xb9,0x3b,0xda,0x80,0xc1,0xc2,0x07,0x59,0x00,0xdd,0xad,0x3f,0x29,0x31,0x40,0x72,0x53,0xab,0x22,0x80,0x91,0xd6,0x63,0x5a,0x59,0x48,0xbd,0x98,0x51,0x82,0x28,0xd6,0x41,0xc1,0x72,0x5e,0x57,0x1a,0x20,0x28,0x70,0x96,0x13,0x6d,0xbd,0x0f,0x46,0x4b,0x10,0x7a,0x69,0xda,0x08,0x00,0x6a,0x0b,0x2d,0xab,0x2d,0xf6,0xdf,0xed,0x0d,0x78,0xd0,0x9b,0xf3,0x5c,0x38,0x87,0xfd,0x3c,0x43,0xb2,0x04,0x95,0x23,0x18,0xa7,0x7e,0xc5,0x0f,0x38,0x7f,0x47,0x09,0x1d,0xb7,0x79,0xab,0x14,0x0e,0xd7,0x64,0x03,0xf9,0xfd,0x53,0x3f,0xd3,0x7b,0xe8,0xfc,0xba,0xf0,0x1e,0xe7,0x98,0x8c,0xa1,0xfe,0x7d,0xb7,0x35,0x4a,0x38,0x7b,0x30,0xd9,0x06,0xb6,0x01,0xd0,0xce,0x42,0xac,0xeb,0xa0,0x80,0xc1,0x5a,0x74,0x02,0x8a,0xb0,0x83,0xb9,0xf2,0x87,0xe5,0xc1,0x8a,0x13,0x5d,0x7a,0x31,0x3f,0x1d,0xb5,0xf7,0x54,0xe6,0x68,0x8d,0x98,0x1c,0x46,0x24,0xb5,0x73,0x7d,0x1b,0x90,0xe8,0xe0,0x63,0x85,0xd7,0xde,0xab,0x9b,0x02,0x85,0x1d,0x01,0x03,0x01,0x56,0x82,0xe8,0x71,0x29,0x79,0x57,0x3a,0x64,0x75,0xed,0x90,0xd2,0x74,0x81,0x25,0x82,0x93,0x16,0xa7,0xab,0x22,0x07,0x06,0x09,0xf4,0xfd,0x91,0x6b,0x45,0xf2,0xa9,0x73,0xa8,0x12,0xea,0x06,0x9c,0x4d,0x56,0x64,0x8d,0xcb,0x74,0x02,0xc3,0xc8,0x1a,0xfa,0xe7,0x48,0x13,0x20,0x1f,0xc7,0x5c,0xa3,0x2a,0xa0,0x7a,0xe8,0x4c,0x19,0x11,0xd5,0x05,0xda,0x67,0xdb,0x31,0x05,0x29,0x8d,0x09,0x9d,0x5a,0x0e,0xd9,0x03,0xbd,0x0b,0xbc,0xb6,0x46,0x5b,0x09,0xad,0xed,0xb0,0x25,0xd1,0xa7,0x2c,0x8f,0xbb,0x1f,0xae,0x36,0x80,0xb9,0x8b,0x80,0xf2,0xde,0xff,0x79,0x80,0x5d,0xf6,0x1a,0x68,0xb1,0x78,0x57,0x52,0x57,0x0f,0xd8,0xce,0xe8,0xa0,0x73,0x96,0x93,0xed,0x02,0xe0,0xb0,0x44,0x00,0x6d,0x74,0x00,0x92,0x28,0xd8,0x13,0xe6,0x20,0xe2,0x7e,0x93,0x79,0x98,0x07,0xc2,0x45,0x18,0x43,0x2d,0x0f,0x08,0xc0,0x3c,0xa5,0xed,0x88,0x10,0x85,0xdd,0x1a,0x60,0x4e,0xb4,0x80,0x6d,0x08,0x94,0xee,0xb1,0x2a,0x66,0x0b,0x00,0xc2,0xe9,0x06,0x78,0x4a,0x5b,0x04,0xb0,0xef,0xfe,0xc3,0xb1,0x2f,0x06,0x01,0x7d,0x0b,0x3b,0xc8,0xe8,0x40,0xf2,0x1f,0x10,0x00,0xa7,0xd6,0xaf,0xaf,0x84,0x6c,0x06,0x97,0x4f,0xaf,0xef,0x28,0x8d,0xed,0x6a,0xe0,0x37,0x4c,0xd2,0xdc,0x2a,0xd4,0xd1,0x00,0x8f,0xbf,0x82,0x1e,0x2d,0x7f,0x74,0x67,0xc5,0xaf,0xf6,0xce,0x74,0x3b,0x6d,0x18,0x88,0xc2,0x45,0x98,0xc5,0xec,0x4b,0xd8,0x12,0x92,0xb0,0xc6,0x92,0xec,0xf7,0x7f,0xbe,0xd6,0x58,0xf0,0x19,0x84,0x91,0x69,0x44,0x97,0x73,0x98,0x1f,0x6d,0x12,0xb0,0x2d,0x59,0x9a,0xd1,0xe8,0xce,0x9d,0xd1,0xce,0x71,0xad,0xa5,0xa9,0x0c,0x9a,0x6d,0xd7,0x6d,0xe1,0xa9,0xf6,0x00,0x94,0xe7,0xc9,0x11,0x4c,0x5e,0xe3,0xde,0x48,0x01,0xa3,0xaf,0x3c,0x32,0x48,0xb6,0x0e,0xb2,0x76,0x99,0xd1,0x61,0x61,0x82,0x29,0x14,0x15,0xa7,0x2f,0x83,0x13,0x66,0x26,0x55,0x7c,0x17,0x3a,0x88,0xad,0x67,0xe9,0xc0,0xd5,0x73,0x74,0x80,0x3d,0x01,0x2f,0x83,0xb7,0x51,0x16,0x97,0x84,0x81,0x87,0x29,0x2b,0x69,0x87,0x00,0x61,0x0d,0xaf,0xcc,0x5a,0x65,0x8a,0xc5,0x76,0xf8,0x19,0x00,0xd6,0x56,0xf7,0xf8,0xe3,0xcd,0x59,0x73,0x48,0x38,0x4d,0x59,0x85,0x78,0x86,0xbd,0x89,0x4d,0xc1,0x76,0x5d,0x7e,0x1d,0xa3,0x35,0xec,0xe8,0x9d,0x13,0x48,0x28,0xdc,0x78,0xcb,0xfa,0x09,0x0d,0x49,0xdb,0x85,0xee,0x33,0xee,0x96,0x59,0x2f,0x14,0x78,0x50,0x0c,0xc0,0x7d,0xee,0xf4,0xcb,0xe2,0x74,0x05,0x56,0x97,0xa9,0x9b,0x5a,0x09,0xee,0xe1,0x52,0xe1,0x6b,0xd3,0xae,0xc8,0x0e,0x11,0xd1,0xb0,0x31,0x0e,0xbb,0x7f,0xc5,0xed,0x6f,0xc8,0x73,0xa3,0x8b,0x65,0x84,0x19,0xc9,0x2c,0xba,0xa9,0xc2,0xda,0x0c,0x1a,0x6e,0x2d,0xcb,0x4c,0xd9,0xfd,0x4c,0x43,0xb3,0xa5,0x44,0xa3,0x6e,0xa5,0xe6,0xc4,0xc2,0xb6,0xb9,0x28,0x9f,0xa1,0x1b,0x02,0x01,0xdf,0x4a,0xa6,0x69,0x2c,0x34,0xaf,0xed,0x1c,0xf5,0x0c,0xa2,0xab,0x12,0xf0,0xd6,0x98,0x6e,0x99,0x66,0xac,0x35,0x00,0xc7,0x0d,0xe0,0x9c,0xe4,0x28,0x5e,0x05,0xb0,0x16,0x09,0x6b,0x5f,0x60,0x72,0x45,0xbe,0xb4,0x48,0x5a,0x07,0xf4,0x81,0x97,0x81,0x1e,0x0f,0x93,0xe0,0x7a,0xfb,0x21,0x8d,0x02,0x8f,0x66,0xf7,0x1a,0x27,0xc0,0x2a,0x85,0xed,0xdf,0xc7,0x5a,0xdc,0x80,0xb6,0xa0,0x9c,0x47,0x72,0x5d,0x50,0xa5,0x03,0xb5,0x53,0xc1,0xa4,0x12,0xea,0xeb,0x9b,0x9a,0xda,0x2e,0xb9,0x12,0xba,0x16,0xc9,0xb0,0x62,0xaf,0x19,0x46,0x33,0x6a,0xa1,0x13,0xd8,0xaa,0xef,0x48,0x10,0x4c,0x5e,0xaf,0x7d,0xe3,0xe3,0xf4,0xe2,0x84,0x8c,0x3e,0x2b,0x74,0xc1,0xc2,0xf5,0x0d,0x0a,0xbe,0xb2,0xdc,0x30,0x92,0x11,0xd1,0x64,0xa0,0x7d,0xee,0x78,0x6e,0xfa,0x64,0xab,0x18,0x5a,0x24,0x3b,0x50,0x48,0xc1,0x50,0xf2,0x2a,0xce,0x87,0x3e,0x87,0x4d,0x8f,0x2e,0xf1,0x64,0x56,0x0c,0xb3,0xe6,0xa4,0x36,0x1f,0x68,0xeb,0x02,0xc0,0x09,0xb3,0x0a,0x38,0x27,0x4a,0x90,0x0c,0x41,0x2b,0x09,0x17,0x1b,0x43,0xec,0x04,0x77,0x7f,0xcc,0x46,0xa0,0x95,0x0c,0xa5,0x4d,0x9b,0x4c,0x04,0x16,0x4f,0x77,0x09,0xf3,0xe7,0xed,0x06,0x3e,0x19,0x16,0x55,0x8f,0x2d,0xf8,0x7f,0xbf,0x48,0xc1,0xf5,0x23,0x81,0x65,0x41,0x0d,0x00,0x28,0xa2,0xe8,0x23,0xf0,0x3a,0xde,0xea,0x79,0x35,0x93,0x98,0x96,0x91,0x54,0x67,0xf7,0xa0,0x9d,0xf6,0x13,0x3c,0x99,0x6a,0x2f,0x18,0x2b,0x76,0x32,0x04,0x6c,0x40,0xd4,0xf2,0x91,0xe6,0x79,0xbf,0xd9,0x53,0x71,0xac,0x7a,0xcd,0x2d,0xf5,0x87,0x90,0x91,0x24,0x50,0x79,0x33,0xc0,0x51,0x6d,0x83,0x75,0x17,0x21,0x9f,0x0c,0xbd,0x88,0x45,0xbe,0xda,0x4b,0xbf,0x6e,0x3e,0xc0,0x8d,0xc0,0xdc,0x19,0x8d,0xb0,0xf6,0xe3,0xc4,0x87,0xaa,0x6f,0xb3,0xd9,0x1b,0x55,0xac,0x2e,0x11,0x54,0x5c,0xe0,0x7c,0xf8,0xed,0xa2,0x8e,0x52,0x3b,0x90,0x2a,0x1f,0xa0,0x99,0xde,0x44,0x3e,0x4d,0x90,0x8c,0xee,0x8a,0xee,0x2c,0xfd,0x80,0xf5,0x8e,0xb4,0x68,0xe6,0x31,0xe8,0x84,0x1d,0xe3,0xe3,0x47,0xdb,0x21,0xa1,0x86,0x04,0xfc,0xfe,0x74,0x0e,0xd1,0xe3,0xcd,0x56,0xe4,0x9b,0x1f,0x59,0x21,0xb2,0xc2,0xfa,0x27,0x74,0x41,0x0f,0xdf,0x53,0xd3,0xc6,0x1b,0x67,0x06,0xb1,0x03,0x43,0xf9,0x10,0xd8,0x14,0x05,0x1e,0x21,0xee,0x8f,0x59,0xd5,0xb0,0x43,0x19,0x8b,0xb4,0x35,0xd4,0x52,0xe5,0x81,0xaf,0x98,0x20,0xe5,0xad,0x38,0xfd,0x45,0x05,0x1a,0x29,0x17,0xfd,0x19,0xab,0x18,0x0b,0x26,0xeb,0x1f,0xae,0xf0,0x9d,0x85,0x7e,0x44,0x72,0x00,0xba,0xb0,0xaa,0x0c,0xc9,0xa6,0xbd,0xc8,0xc8,0x26,0xcc,0xe8,0x86,0xa3,0x8a,0x18,0x35,0x80,0x82,0xb3,0x2b,0xb3,0x58,0x7d,0x3d,0x55,0x3c,0x66,0x50,0x7e,0x61,0xc3,0x51,0x2e,0xcf,0x80,0xe4,0xaa,0xcb,0x10,0xee,0x22,0x9d,0xc9,0x9d,0x91,0x92,0x3a,0x3a,0x7b,0x8f,0x62,0x5f,0x29,0x5d,0x04,0xab,0xba,0xd5,0xa6,0x0b,0x14,0x02,0x12,0xbb,0xe9,0x5c,0x28,0x16,0x7c,0x22,0x3b,0x44,0xac,0xef,0xae,0x14,0x05,0x1a,0xca,0x1f,0xf5,0x74,0xba,0x8e,0x92,0xf8,0xfc,0xf9,0x32,0xee,0xe2,0x1d,0x94,0xe9,0xc2,0xe6,0xf5,0xd4,0x05,0xf8,0x2a,0x79,0xcb,0x5d,0xb1,0xe8,0x4b,0xee,0x1d,0xb5,0xbd,0x06,0xbf,0x52,0xdc,0x06,0xdc,0x5e,0x9f,0xb8,0x2a,0x34,0x7f,0xe8,0x64,0x7a,0xd8,0x8b,0xdf,0xc7,0x41,0x83,0x10,0x01,0x7c,0x70,0xd4,0x6a,0xf4,0xf8,0xae,0x72,0x1c,0xc3,0xbc,0x06,0x63,0xa4,0xb2,0xd9,0xc8,0x93,0xb0,0x23,0x3b,0x6b,0xf2,0x97,0x1b,0x85,0xad,0x48,0xe0,0x8b,0x20,0x2a,0x78,0xed,0x0c,0x5e,0x4e,0x6f,0x6e,0x95,0x94,0x25,0xac,0xb0,0x8d,0x41,0x83,0xcd,0x15,0x2f,0x83,0xcf,0x6e,0x4f,0xf1,0x0c,0x06,0x3e,0x51,0xaf,0x83,0xbb,0x59,0x73,0xac,0x22,0x21,0xb4,0x1d,0x24,0x9d,0x4d,0xe1,0xba,0xff,0xbe,0x99,0x54,0x78,0xa1,0x25,0xc1,0x41,0xe2,0x89,0x42,0x66,0x38,0xd4,0x64,0xf6,0xde,0x5f,0x87,0xe9,0xbc,0xe1,0x09,0x10,0x95,0x7a,0xfd,0x37,0x9a,0xff,0x5b,0xc4,0xbf,0x9d,0x42,0xa1,0xb8,0xf5,0xc1,0xc3,0x51,0xbd,0x51,0xb7,0x33,0xaf,0x2e,0x23,0xc5,0x86,0x0a,0xbe,0xa5,0xbd,0x24,0x64,0x9f,0xd0,0xdf,0x65,0x75,0xde,0xd9,0xae,0x7b,0xea,0xa2,0x5e,0x1a,0x4c,0x1f,0x3d,0x5a,0xfd,0x3e,0xfd,0x95,0xd5,0xf0,0xab,0x19,0xa7,0xbe,0xe5,0x55,0xde,0x79,0x22,0xa5,0x5a,0x04,0x0a,0xd4,0xc7,0x25,0x24,0xaa,0xa8,0x60,0xa1,0xa4,0x4c,0xe0,0xc0,0x9f,0xb7,0x3e,0x5d,0x7e,0x98,0x3b,0xdf,0xac,0xce,0x39,0xde,0x86,0xb1,0xd4,0x05,0x54,0x6f,0xa5,0x15,0x71,0xc8,0x7e,0x67,0xda,0x1a,0x0f,0xde,0xea,0xd5,0x49,0xad,0x56,0x39,0x49,0xad,0x36,0xa9,0xd6,0x37,0x83,0x65,0x6b,0xd5,0xe9,0x07,0x7c,0x5b,0xab,0x02,0x3a,0xb8,0x92,0xa6,0x02,0xe5,0x77,0xdb,0xcf,0x30,0xd4,0x96,0xfd,0x85,0x2a,0xa2,0xcf,0x47,0x88,0x21,0x78,0x8b,0xa0,0xd7,0x0b,0x1b,0x8d,0x46,0xf3,0x97,0xfc,0xfa,0x2f,0xec,0xf5,0x02,0xa1,0x4c,0xda,0x06,0x5f,0x2e,0xa2,0xef,0xab,0xb0,0xdb,0x32,0x1c,0x60,0x8f,0xfc,0x75,0x30,0x10,0x17,0xfb,0xfe,0x10,0xae,0x55,0x86,0xb7,0x6e,0x38,0xec,0x4a,0x1d,0xba,0xea,0xb8,0x14,0x80,0xcb,0x47,0xeb,0x6d,0x8e,0x55,0xb6,0xfe,0x68,0xb8,0xce,0x3e,0x44,0xc1,0xc5,0x3e,0x8e,0x4e,0xdc,0x4c,0xd5,0xdd,0xb7,0x10,0x9a,0x6a,0x75,0x9b,0xe2,0x90,0x3c,0x23,0xbe,0xdb,0x0b,0xda,0x9e,0xc4,0xc1,0x68,0x3b,0xdf,0x1e,0xd9,0x48,0xd5,0x07,0xe6,0xd0,0x24,0xe9,0x8e,0xa2,0xde,0xfa,0xfa,0x68,0x1c,0x7a,0x91,0x29,0xa2,0xf8,0x9d,0x96,0x1b,0xfa,0xbe,0x94,0xa2,0xf1,0xba,0x3f,0x64,0x01,0x8d,0x8f,0x3b,0x3c,0xef,0x59,0x4c,0x78,0xc0,0xe0,0xcb,0x95,0xfa,0xb2,0xd3,0x1d,0x85,0xa6,0xee,0xa5,0x8a,0xee,0xe9,0x84,0xca,0x34,0x3a,0x16,0xe1,0x6e,0xdb,0x19,0xd7,0x2b,0xa7,0x72,0x1a,0xca,0x02,0xe1,0x7d,0xa6,0xb3,0x12,0x0c,0x45,0xc3,0x6a,0x6f,0xcb,0x55,0xff,0x63,0xd4,0x08,0x74,0x4c,0xfb,0x8e,0x1a,0x8b,0x9c,0xe7,0xaa,0xc4,0x2a,0x68,0x8c,0x5e,0xdb,0xd3,0x71,0xbd,0x86,0x9d,0x20,0xdc,0xe1,0x39,0x0b,0x08,0x40,0x05,0xf8,0x92,0x67,0x1a,0xa9,0x55,0xdf,0x3a,0x9a,0xe5,0x40,0x49,0x4b,0x14,0xf1,0xbf,0xb8,0x53,0xaf,0xd6,0xae,0xde,0xa6,0x6b,0x45,0xac,0x7d,0x09,0x91,0xa9,0x2d,0x7f,0xba,0x68,0x40,0x3f,0x39,0x25,0x83,0x8e,0x37,0x69,0xde,0x4c,0xeb,0x7d,0xfa,0x4b,0xde,0xdf,0x5b,0xad,0xe5,0x78,0x36,0xcb,0x50,0x24,0x6e,0xc1,0x85,0xd6,0x46,0x81,0x98,0xb7,0x17,0x01,0x11,0xc2,0xe5,0xb4,0x7b,0x01,0xb6,0x43,0x2f,0xf3,0xd2,0xce,0x87,0x36,0x2d,0x33,0x49,0xb0,0x8b,0x3d,0xab,0x4f,0xc1,0xed,0xc7,0x40,0x5c,0xf7,0x33,0x81,0x4b,0xc9,0xa1,0xc9,0x9c,0xee,0x3c,0x61,0xc5,0x45,0x46,0x92,0x2d,0xff,0x95,0xfe,0xc8,0xe8,0x76,0x13,0xea,0x68,0x01,0x36,0xcc,0x11,0x8b,0x04,0x6d,0x61,0x9c,0xfd,0x08,0x44,0xa3,0xe2,0xd9,0x69,0x47,0x7a,0x94,0x32,0x93,0x00,0x0e,0x05,0xc9,0xea,0x2e,0x2e,0x8d,0xff,0xb2,0x0c,0x70,0xab,0x1c,0x55,0x0d,0x20,0x0f,0x12,0x6d,0x33,0xc5,0x3d,0x54,0xbe,0x5a,0x06,0x82,0x90,0xa1,0xe0,0xb5,0x70,0x30,0xef,0xd6,0x7d,0x67,0xb0,0xbb,0x7c,0x41,0xa1,0x0a,0x69,0x1e,0x82,0xb2,0x3b,0x8e,0xca,0x1e,0x4d,0xef,0x56,0xb4,0x5b,0x2a,0x59,0xdc,0xe4,0x34,0x53,0x50,0x08,0xfb,0x0a,0x8c,0x5d,0x9a,0x07,0xe1,0x55,0x86,0x94,0x2a,0x74,0x05,0xa2,0x4f,0x38,0x78,0x37,0xfd,0x1d,0xc0,0x07,0x0c,0xd8,0x41,0xc8,0xb3,0x46,0xca,0x53,0xad,0x45,0x27,0xb3,0x13,0xfc,0x91,0x50,0x68,0xea,0x83,0x44,0x6e,0x4a,0x13,0x38,0x99,0xf0,0x5a,0x58,0x02,0xf3,0x50,0x86,0x14,0x45,0x9c,0x04,0x6a,0x64,0x66,0xbe,0x48,0x3a,0x28,0xeb,0x32,0x6e,0x1e,0x55,0x5f,0x68,0x5e,0x02,0x1e,0xa6,0x24,0x52,0x32,0x1d,0x1f,0xeb,0x5d,0xa2,0xd5,0xb7,0x55,0x28,0x13,0xe9,0xb5,0x62,0x2a,0x65,0x83,0x00,0x33,0xdd,0xa6,0xc8,0xb8,0xa5,0x3a,0x2a,0xc1,0x62,0xb0,0x53,0x44,0x96,0xfe,0x4b,0x54,0xb1,0x1b,0x70,0x37,0x03,0xee,0x9f,0x3a,0x11,0xbf,0x37,0xe5,0x50,0x2f,0x45,0xa4,0xc9,0x77,0x07,0xf0,0xb2,0xdc,0x8e,0x47,0x46,0xd2,0x46,0x94,0x5e,0x96,0xba,0xf0,0xe5,0x9f,0xe8,0x40,0x46,0xd2,0x3e,0xf6,0x00,0x52,0xf6,0x3f,0xd1,0x81,0x41,0x69,0x6e,0xa4,0x8a,0x90,0xc3,0x02,0xf0,0x3f,0x75,0x20,0xed,0x41,0x7e,0x0b,0x89,0x73,0xf9,0xb7,0x74,0x60,0x52,0xd2,0x0a,0x61,0x4b,0xe7,0x11,0xa2,0x49,0x9c,0xfa,0x3b,0x56,0xa8,0x3c,0x39,0x96,0xa4,0xba,0xf8,0x6c,0x0a,0x75,0x4b,0xf5,0x00,0xfa,0xbe,0x1c,0x3c,0x6a,0x25,0x5e,0x95,0x23,0x68,0xef,0xa5,0xba,0xa0,0x5b,0xd6,0x4a,0x52,0xd3,0xfd,0xaf,0xc4,0x10,0x42,0x49,0x22,0x77,0x7b,0x13,0x11,0x42,0xd9,0xe6,0x72,0x9c,0x54,0xca,0x75,0xfe,0x61,0x77,0x1a,0x85,0x39,0xd1,0x5f,0x41,0x9f,0x83,0xb8,0x47,0xa0,0xcb,0xe9,0x4e,0x7b,0x2f,0xb2,0x45,0xf5,0xab,0x75,0x89,0x79,0x1c,0x9e,0xda,0xaf,0x74,0x44,0x11,0x70,0x4d,0x16,0x67,0xa9,0x3a,0x52,0x7e,0x3b,0xb0,0x72,0xd5,0x1f,0x43,0x7d,0x95,0x86,0xfb,0xf5,0xb9,0x39,0x2b,0x1e,0xef,0xc4,0xab,0xd6,0xb1,0x80,0x43,0xec,0x51,0xd0,0x2e,0xb5,0x71,0x14,0x5b,0xec,0x9f,0x82,0xb3,0x42,0xc5,0xd3,0x8b,0xf2,0xfd,0x4d,0x0e,0xaf,0x28,0x40,0x90,0xb5,0xff,0x13,0x99,0x58,0x61,0x6e,0x98,0x21,0xce,0x9a,0xa1,0xb9,0x3a,0x9a,0xa7,0x1b,0x9a,0x97,0xfc,0x01,0x0a,0x11,0xe7,0x75,0x15,0xbc,0x26,0xc8,0xa8,0x9e,0x04,0x9a,0xb9,0x9d,0xc5,0x73,0xeb,0xac,0x99,0x40,0x86,0x9b,0x2b,0x47,0x58,0x70,0xd6,0x51,0x81,0xa6,0x01,0x7e,0x79,0x12,0xd4,0x0b,0x74,0xba,0x90,0x58,0x98,0x67,0xb6,0x35,0x53,0xff,0x1f,0x26,0x18,0xa9,0xd6,0x24,0x6b,0x16,0x71,0x22,0xb5,0xf7,0x3d,0x3d,0x16,0x1a,0x64,0xcd,0x4e,0xbb,0x8e,0xa4,0x80,0x9a,0x84,0xc2,0x5e,0x1c,0xe3,0xa2,0xe5,0x90,0xd8,0x75,0xc1,0x0c,0xda,0x3e,0x2e,0x42,0x63,0x5b,0x38,0xd3,0x98,0x65,0x53,0x2a,0x1a,0xa9,0x3b,0x34,0xd1,0x3e,0x48,0x27,0x6a,0x53,0xe2,0xc2,0x82,0xb5,0xbc,0xd7,0x99,0x23,0xf1,0x80,0x21,0xb0,0x9a,0xbf,0xf9,0x88,0xe3,0x5c,0x0b,0x43,0x16,0xad,0xe2,0xa3,0x8c,0xf8,0x0a,0x03,0x00,0xfd,0xd5,0xb7,0x80,0xdc,0xaa,0x5e,0xf5,0x92,0x0e,0x37,0x3b,0x90,0x73,0x98,0x3e,0xc3,0x97,0xfb,0x0e,0x93,0xe2,0xb8,0x2d,0xe0,0x17,0x8f,0x62,0x93,0xb3,0x26,0xc4,0x27,0x0c,0xb5,0x2d,0xa2,0x6d,0xb1,0x62,0xfa,0x9c,0x1f,0x08,0x79,0xf5,0x38,0x2f,0x0a,0x2d,0x9e,0x1c,0x10,0xe5,0xd7,0x06,0xd9,0x34,0x99,0x78,0xb1,0x3c,0xfe,0x75,0x32,0xee,0x1b,0x6a,0x1b,0xc4,0x42,0xce,0x9a,0x71,0x1f,0xa8,0xb6,0x1f,0x4c,0xcc,0xa7,0x4b,0xa3,0x25,0x0e,0x7f,0xcb,0xcb,0x91,0x76,0x42,0xc7,0xa3,0xf6,0xb4,0xd5,0x5a,0xb5,0x87,0xa1,0x3c,0xa3,0x14,0x09,0xa9,0xf6,0x95,0xfb,0x8e,0xb4,0x0b,0x77,0xdb,0xf6,0xfe,0xab,0xdb,0x8c,0xb5,0x78,0xf8,0xa1,0x7c,0x83,0x38,0xf7,0x64,0x19,0x4b,0x99,0x48,0x7d,0xc1,0x0e,0xdc,0xbd,0xdd,0x5c,0x69,0xaf,0x1f,0x2a,0x98,0x24,0xc9,0xa9,0x06,0x8c,0xb2,0x82,0x1b,0xde,0x5d,0x52,0x88,0x0d,0x42,0x38,0xca,0x30,0x95,0x3d,0xd6,0x91,0x1b,0x29,0x43,0x83,0x7a,0x94,0x40,0xd1,0x47,0x20,0x2a,0x7f,0xdd,0x2c,0x84,0xc5,0x3c,0xda,0x15,0x1f,0xac,0x19,0x48,0x93,0xe2,0xe9,0x5d,0xa0,0xe8,0xf3,0xe8,0xb3,0xc9,0x13,0xb4,0xab,0x65,0x77,0xee,0xc5,0x47,0x9b,0x0a,0xb9,0xb0,0x00,0x48,0xcf,0x3d,0xe8,0x52,0x99,0x30,0xcf,0xc8,0x5c,0xec,0xab,0xdf,0x38,0x5c,0x96,0x49,0xb8,0x63,0x05,0xf1,0x2c,0x14,0x7e,0xb9,0xc8,0x6d,0x50,0x32,0x11,0xc3,0x16,0xeb,0x6a,0x69,0x42,0xe1,0x9e,0xe3,0x7d,0x0f,0x12,0xe9,0x24,0xb0,0x57,0x90,0x07,0xf4,0x60,0xd2,0x69,0x1c,0xca,0xbd,0xea,0x8c,0xaf,0xd1,0x1b,0x7e,0x92,0x29,0x71,0x1f,0x93,0x6d,0xb6,0x5f,0x07,0xf1,0x81,0xe3,0x95,0xfe,0xab,0x1b,0x8c,0xe2,0x63,0x04,0x2a,0xe3,0x78,0xff,0x31,0x6a,0x2c,0x1a,0xcd,0x5d,0xb7,0x33,0x7e,0xf9,0x8d,0xca,0xa0,0x5c,0x52,0x1d,0x7f,0xf6,0x3f,0x76,0xeb,0xf5,0x70,0xbb,0x9a,0x51,0xd0,0xe8,0x91,0x42,0xf5,0xac,0x49,0x0d,0x77,0xd9,0xc3,0x19,0xe3,0x7f,0xa6,0xf5,0x28,0x33,0x3f,0x7d,0xfb,0x4e,0x14,0xb2,0xfe,0x53,0xc2,0x93,0x9f,0xf2,0x94,0xa7,0x3c,0xe5,0x29,0x4f,0x79,0xca,0x53,0xfe,0x6b,0xf9,0x09,0xcb,0xff,0x32,0xca,0x24,0xa7,0x19,0x80,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
+
+static const unsigned char FILE_2[] = {0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x08,0x03,0x00,0x00,0x00,0xc3,0xa6,0x24,0xc8,0x00,0x00,0x00,0x78,0x50,0x4c,0x54,0x45,0x00,0x00,0x00,0x61,0xda,0xfb,0x61,0xda,0xfb,0x61,0xda,0xfb,0x5e,0xdf,0xff,0x61,0xdb,0xfb,0x61,0xda,0xfb,0x60,0xdb,0xfc,0x62,0xdb,0xff,0x61,0xda,0xfb,0x61,0xdb,0xfc,0x61,0xdb,0xfb,0x61,0xdb,0xfa,0x60,0xdb,0xfc,0x61,0xdb,0xfb,0x61,0xda,0xfb,0x63,0xda,0xff,0x61,0xda,0xfa,0x61,0xda,0xfb,0x61,0xdb,0xfa,0x61,0xda,0xfb,0x61,0xda,0xfe,0x61,0xda,0xfb,0x5f,0xdb,0xff,0x62,0xdb,0xf8,0x61,0xdb,0xfc,0x61,0xda,0xfb,0x61,0xdb,0xfb,0x61,0xda,0xfa,0x61,0xda,0xfb,0x61,0xdb,0xfb,0x61,0xdb,0xfa,0x60,0xd9,0xf9,0x61,0xda,0xfc,0x61,0xda,0xfa,0x61,0xdb,0xfb,0x61,0xda,0xfb,0x61,0xdb,0xfc,0x61,0xdb,0xfc,0x61,0xda,0xfb,0xb3,0x39,0x98,0xc6,0x00,0x00,0x00,0x27,0x74,0x52,0x4e,0x53,0x00,0xf6,0xe8,0xc3,0x09,0xd3,0xaa,0x9b,0x16,0xb4,0x4c,0x8e,0x2b,0x55,0x79,0xe0,0x0d,0x65,0x3a,0x33,0xee,0x1d,0x81,0x11,0x22,0xdb,0xcb,0xbb,0xa2,0x87,0x40,0x6f,0x26,0x5f,0x6a,0x44,0x74,0x5a,0x94,0x59,0x4d,0xfd,0x75,0x00,0x00,0x24,0xd0,0x49,0x44,0x41,0x54,0x78,0xda,0xec,0xc1,0x81,0x00,0x00,0x00,0x00,0x80,0xa0,0xfd,0xa9,0x17,0xa9,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x5d,0x7b,0x5d,0x4e,0x10,0x06,0xa2,0x00,0xbc,0x21,0x28,0x04,0x22,0x17,0x05,0xaa,0x80,0x20,0x6d,0xf5,0xbc,0xff,0x1b,0xb6,0x9d,0xf1,0x4f,0x3b,0x5a,0x6f,0x09,0xe2,0x64,0xbf,0x47,0xc8,0x9e,0x99,0x4d,0xce,0x84,0x31,0xc6,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63,0xec,0x32,0x5f,0x7f,0xec,0xfb,0xa4,0x8a,0x83,0xc3,0x36,0xf9,0x1c,0xba,0x35,0xbd,0x20,0x7f,0x15,0xf5,0xb1,0xaa,0x37,0x5e,0x01,0x14,0xe9,0x46,0xaa,0x20,0x59,0xac,0x88,0x5d,0x92,0x45,0x95,0x4a,0xf1,0x57,0x2a,0xe3,0x41,0xd3,0xab,0xf0,0x97,0x7d,0x3b,0xc3,0x29,0x42,0xc6,0x91,0x4f,0xec,0x9c,0x5d,0x22,0x71,0x74,0xe6,0xf4,0x32,0x9a,0xba,0x65,0x22,0xf1,0x2f,0xa1,0xf6,0x9c,0x81,0x53,0xb2,0xbe,0xc6,0x65,0xb2,0x5a,0xd2,0x64,0x85,0xf9,0xbc,0xc0,0x15,0x44,0xb0,0x23,0xf6,0x5b,0x19,0x0b,0x5c,0xc9,0x0b,0x3e,0x68,0x82,0xc2,0xbc,0xc1,0xf5,0xd4,0xeb,0x6c,0xb4,0x31,0x84,0xc7,0xf1,0xbf,0x6c,0x06,0xfc,0xa1,0xc1,0x8d,0xe6,0x25,0xb1,0xa3,0xf7,0x02,0x37,0x4b,0xab,0xe9,0x3c,0x0e,0xf4,0xa1,0xc0,0xed,0x44,0x4f,0xec,0x87,0x96,0xb8,0x8f,0x5a,0xd0,0x04,0x64,0x79,0x8d,0x3b,0xd5,0x7c,0x15,0xf8,0x96,0x0b,0xdc,0xcd,0xab,0x42,0x7a,0xae,0x70,0x5b,0xe0,0x7e,0x62,0x4f,0xae,0xf3,0x5b,0x3c,0x44,0x04,0x9a,0x9e,0x47,0x07,0x02,0x8f,0x89,0xc9,0x6d,0xa1,0xc4,0xc3,0x54,0x47,0xcf,0xd1,0x29,0x3c,0x4e,0x39,0x5d,0x0a,0xac,0x37,0x30,0xa1,0x8e,0x68,0x7c,0x4b,0x09,0x23,0xe4,0xf4,0xcb,0x2d,0x6b,0xca,0x14,0x86,0xc8,0xb1,0x23,0xa0,0xe7,0x00,0x38,0x01,0x53,0x99,0xff,0x37,0xd9,0xd1,0x78,0xb4,0x82,0x41,0xd2,0xd1,0x2d,0xf0,0x36,0x83,0x51,0xcd,0x8a,0xc6,0x51,0xb6,0x30,0x6b,0x4e,0x4e,0x6a,0x60,0x5a,0x5b,0x92,0x7d,0x59,0x25,0x60,0xda,0x96,0x1c,0x74,0x80,0x79,0xa2,0xca,0xc8,0xb2,0xdc,0x83,0x05,0x11,0x39,0x67,0x01,0x2b,0xbc,0x9c,0x6c,0xea,0x66,0xb0,0xa2,0x98,0x4e,0xaf,0x3d,0x92,0xb5,0x80,0x25,0xf5,0x8a,0x6c,0x09,0x5b,0xd8,0x52,0x93,0x63,0x24,0xec,0x69,0xdf,0xc8,0x8a,0xc1,0x83,0x3d,0x09,0x39,0xe5,0x1d,0x36,0x79,0x03,0x99,0xa7,0x25,0x6c,0x12,0x4e,0x7d,0x10,0x28,0x05,0xec,0x6a,0x76,0x64,0x96,0xbf,0x85,0x65,0xf2,0x8b,0xbd,0x3b,0xdb,0x42,0x13,0x06,0xc2,0x00,0x3c,0x61,0x0f,0x22,0xa0,0x80,0x2c,0x5a,0x97,0xaa,0xfd,0xdf,0xff,0x0d,0x7b,0x7a,0xd1,0x9e,0x2e,0x89,0x04,0x24,0x81,0x12,0xbf,0x07,0xf0,0x42,0x47,0x98,0x24,0x33,0x13,0xb2,0x48,0x80,0x5e,0x4e,0xdb,0xb9,0xc1,0xd1,0xf5,0x1d,0x8c,0xc2,0x52,0x9a,0xd2,0xbe,0xc5,0x08,0x99,0x1b,0xa6,0xbb,0x67,0x1c,0xef,0x2e,0x69,0xe8,0x96,0xe8,0xb1,0x88,0xc3,0x6d,0x33,0xf6,0x78,0x89,0xf1,0xaf,0xfb,0x9a,0x7e,0xca,0x93,0x6d,0xca,0x1d,0x0c,0xd6,0x25,0x34,0x15,0x6f,0x83,0xa1,0xb2,0xe0,0xb1,0xf7,0xe8,0x0f,0x49,0xda,0xe1,0x95,0xcc,0x9e,0x0d,0x41,0x17,0x2f,0xf8,0xc2,0xa2,0xd9,0xe6,0x19,0x3a,0xe3,0x1e,0x02,0xe6,0xff,0xfe,0x8c,0x5f,0x1a,0xc9,0x27,0x71,0xbc,0x60,0x4d,0x85,0x50,0x0c,0x39,0x67,0x4b,0x52,0x45,0xda,0x0d,0x7d,0x08,0x98,0xff,0xfb,0xb3,0x53,0xec,0x91,0xdc,0x39,0x83,0x94,0x63,0xcb,0x23,0xa0,0x83,0x14,0x8f,0xe8,0xa5,0xeb,0xc1,0x37,0xbc,0xb8,0x4a,0x7c,0x0c,0xd0,0x5f,0xf3,0x5f,0x07,0x90,0x7a,0x90,0x15,0xe2,0xf7,0xea,0x63,0x8a,0x6f,0x0c,0xea,0xdc,0x8a,0xde,0xf2,0x60,0x50,0x96,0xa5,0x11,0x29,0x08,0x21,0xe3,0x90,0x15,0x8e,0xef,0xd6,0x47,0xe5,0x3b,0x1f,0xca,0xca,0x2d,0x8d,0x17,0x71,0x28,0x3b,0xc6,0xef,0x9f,0x82,0xdc,0xc8,0x02,0x09,0x64,0xbe,0x91,0xb2,0x7d,0x00,0x65,0xa7,0x9c,0x46,0x8a,0x1d,0xa8,0x1a,0x54,0x9a,0xc8,0x21,0xe1,0x93,0x05,0xc2,0x69,0x76,0x42,0xae,0x21,0x83,0xa2,0x76,0xaf,0x39,0xfb,0x63,0x9b,0x8a,0x86,0xa8,0x33,0x48,0x2c,0xb8,0xef,0x6d,0x2a,0x39,0x83,0x98,0x53,0xe9,0xeb,0x26,0x7b,0xd0,0x70,0x4d,0x07,0x35,0xec,0x4b,0x44,0x03,0x15,0x90,0x08,0x69,0xf5,0x76,0x90,0x78,0x8e,0x29,0xca,0x67,0x50,0xc3,0x6b,0x1a,0x28,0x2e,0xa1,0x26,0x8c,0x68,0xb8,0x0d,0xc4,0xd8,0xfa,0xeb,0x03,0xdd,0x49,0xb7,0xc2,0xab,0x10,0x6a,0xb2,0x62,0xe8,0x2f,0xa4,0xe6,0xd4,0xd0,0x18,0xb9,0x03,0xb1,0x1d,0xad,0x5c,0x03,0x89,0x84,0xc6,0xb9,0x06,0x50,0xc2,0xbe,0x6a,0x68,0x57,0xe0,0xc9,0xd4,0xf5,0x30,0x47,0x5a,0xb9,0x07,0xc4,0x4e,0xfa,0xab,0x74,0x82,0x5c,0xf9,0x13,0x1d,0xa8,0x68,0x63,0x1a,0xcf,0x87,0x58,0x44,0xeb,0xe6,0x42,0x2c,0x31,0x50,0xa7,0xe7,0x5f,0x55,0x83,0x54,0x45,0xf9,0xa0,0x77,0xdc,0xec,0x7c,0x07,0x54,0x7a,0x0a,0xa3,0xf3,0x0d,0x54,0x94,0xf1,0x74,0xdd,0x8a,0x61,0x44,0xef,0xc9,0x20,0xc4,0x69,0xd5,0x76,0xba,0xd6,0xbf,0x89,0x3b,0xd1,0xd9,0x40,0xd4,0x41,0x41,0x7b,0xd6,0xf5,0x32,0x64,0xeb,0x3e,0x11,0xe2,0x10,0xf2,0x8d,0x55,0xec,0x05,0x1e,0xbd,0x54,0x64,0x50,0xf0,0xc5,0xa3,0xb7,0x45,0x56,0x56,0x88,0x97,0x1a,0x8f,0xc1,0xea,0x10,0x0a,0xfc,0x86,0x5e,0x78,0x32,0xf4,0x73,0x13,0x9a,0x02,0xb7,0xb0,0x61,0x7c,0xaf,0x37,0xf5,0x8d,0x33,0xf4,0x73,0xce,0x24,0xb5,0x31,0x39,0xd9,0x65,0x6b,0xe1,0x79,0x40,0xaa,0x39,0xf1,0xc9,0x43,0xf4,0x63,0x37,0x12,0xf3,0x38,0xfa,0xb9,0x57,0x9a,0x4a,0x69,0xdf,0x42,0x90,0xf7,0x2c,0x7d,0x0c,0x3d,0x04,0x36,0x92,0xf4,0xcf,0x70,0xad,0x69,0x60,0x5f,0x12,0xc0,0x20,0x54,0xd1,0x74,0xea,0xd3,0xc8,0x54,0x30,0xc9,0xf4,0xd4,0x98,0xc9,0xdd,0xac,0x4b,0x02,0x12,0x23,0x6f,0xbd,0x6d,0x89,0x5e,0x6e,0x44,0x7f,0xb9,0x97,0xc6,0x9b,0x78,0x23,0xeb,0x1a,0x04,0x9e,0x66,0x9a,0xa3,0x2b,0x17,0xbd,0xda,0xab,0x64,0x83,0x42,0xce,0xb9,0xd3,0xc4,0x3a,0x88,0x94,0xb4,0x5a,0x1b,0x08,0xdd,0x69,0x6a,0x29,0x7a,0x95,0x67,0xfa,0xcd,0x01,0x02,0x82,0x7a,0x55,0x23,0xdf,0xc7,0x7a,0x3b,0x85,0x39,0x84,0x72,0x9a,0x5c,0xd1,0xa2,0x0f,0xdb,0xd2,0x2f,0xa1,0xce,0xec,0x4f,0x6e,0x6b,0x5b,0x16,0xe8,0x98,0x5b,0xf8,0xe6,0x01,0x7a,0xed,0xd4,0x97,0x7f,0x59,0x41,0x1a,0x44,0x96,0x35,0x0a,0x47,0x46,0xcb,0xa0,0x76,0x4c,0x31,0xa9,0xab,0x5d,0x95,0x82,0x22,0x2d,0x5a,0xbb,0x46,0x06,0x9d,0xb5,0xef,0x02,0xc8,0xb7,0xf5,0xe5,0xb1,0x17,0xf9,0xf3,0xf5,0xee,0x07,0x10,0x69,0x69,0xa5,0x2e,0x10,0x2a,0x48,0xc0,0xd0,0x6b,0x80,0x7b,0x4d,0x6b,0x2a,0xfb,0x57,0x4f,0x56,0xd7,0x5a,0x18,0x18,0x42,0xc8,0x23,0x6d,0x52,0xf4,0x71,0x9d,0x71,0xbd,0x45,0x5a,0x9b,0xa4,0xd6,0x7a,0xb9,0xd4,0xd1,0xfc,0x03,0x2f,0x2e,0xf1,0xa6,0xc0,0x23,0x7d,0x1a,0xbb,0x96,0x01,0xfe,0x0c,0x25,0x30,0x8d,0x8f,0x1f,0x96,0x3a,0xba,0x87,0x41,0xe4,0x2b,0xad,0x13,0x9b,0x63,0x48,0x62,0xce,0x31,0x5e,0x79,0x27,0xbd,0x3a,0x9b,0xe6,0x46,0xd6,0x33,0x55,0x41,0xa6,0x18,0xab,0xbd,0x92,0x66,0x01,0x44,0x4e,0xb4,0x4a,0xc9,0x5c,0x2f,0xbc,0x2d,0xc3,0x28,0x3c,0x27,0xdd,0x36,0x36,0x1d,0x07,0xc5,0x10,0xba,0x92,0x76,0x49,0x86,0x11,0x42,0xd2,0xef,0x02,0x91,0x8c,0x56,0x69,0x37,0xdf,0xa2,0x37,0xea,0x30,0xd8,0x81,0x0c,0xd8,0x42,0x84,0xd1,0x2a,0x1d,0xc6,0x1f,0x7e,0x9a,0x4f,0x05,0x59,0x4c,0x26,0x14,0x36,0x55,0x85,0x85,0xb3,0xd6,0x40,0x7e,0xc3,0x10,0x4e,0x41,0x46,0x54,0x10,0x5a,0xe7,0xd4,0xd0,0x60,0xde,0x84,0xe7,0x02,0x75,0x7e,0x45,0x66,0x78,0x36,0xcd,0x89,0xe0,0x33,0x1f,0x7d,0xc5,0x0c,0x8a,0xba,0x88,0x4c,0x61,0x10,0x59,0xd8,0xc5,0xb8,0x13,0x71,0xe7,0x9e,0x89,0x71,0x2e,0x97,0x77,0x93,0x5b,0x66,0xd1,0xd4,0x58,0x7f,0xf6,0x5d,0xaf,0x7f,0x96,0x83,0xf3,0x6f,0xc3,0xf8,0x16,0xb5,0x08,0xb7,0xf3,0x0f,0x47,0xac,0xfc,0xa5,0xdd,0xdf,0x73,0xb4,0x68,0x68,0xac,0xb3,0x80,0x60,0xaf,0x5d,0x00,0x58,0xd0,0xc0,0x5e,0x0e,0x91,0x03,0xad,0x11,0x5b,0xc2,0x6c,0xc4,0xe7,0xc2,0xee,0x6d,0x08,0x2c,0xea,0x0d,0x59,0xc2,0x94,0xfc,0x33,0x43,0x0f,0xa7,0x21,0x93,0x4e,0xb0,0x66,0x5a,0x5c,0xbe,0x80,0xe2,0x87,0x82,0xa1,0x57,0x1b,0x91,0x41,0xe1,0xfc,0x79,0xa8,0x29,0xf5,0xfc,0x01,0xd0,0x38,0x50,0xe0,0xd7,0x64,0xce,0xc6,0x9e,0x00,0xc8,0x21,0x74,0x26,0x63,0xaa,0x6c,0x79,0x77,0xf9,0x7e,0xb1,0x3e,0x00,0xf6,0xa4,0x9f,0xfc,0xae,0xe2,0xd9,0x07,0x35,0x1d,0x3e,0x01,0x40,0x86,0x78,0xee,0x12,0x6f,0x73,0xfe,0x3c,0x01,0xce,0x64,0x08,0xc7,0x00,0xdf,0x48,0xe6,0x13,0x00,0xff,0x69,0x00,0x04,0x0b,0x2c,0x07,0xf9,0x04,0x80,0xb9,0x00,0x08,0xf1,0x97,0x85,0xec,0x08,0x7e,0x02,0xe0,0x4e,0x26,0x7c,0xc1,0x60,0x37,0x92,0xfb,0x2c,0x03,0xff,0xb3,0x00,0xb8,0x2c,0xf6,0x4e,0x7f,0x8b,0x02,0xe0,0x3b,0x7b,0x77,0xb6,0xe4,0xaa,0x0d,0x84,0x01,0xb8,0x25,0x76,0xcc,0xbe,0x63,0x63,0x8c,0xd7,0x7e,0xff,0x37,0x4c,0x26,0xeb,0x49,0x65,0x04,0x42,0x48,0x02,0x9b,0xf9,0xae,0x52,0x49,0x55,0x92,0x63,0x1b,0xd4,0x52,0xff,0x92,0xcc,0xf5,0x3e,0xe6,0x70,0xbb,0xd7,0x39,0x3b,0xfb,0x59,0x0a,0x06,0xd6,0x45,0x21,0xca,0xe5,0x04,0x85,0xd0,0x12,0x94,0xeb,0x76,0xd4,0x0c,0x2a,0x56,0x6a,0x07,0x97,0x14,0x05,0x59,0x09,0xa8,0x66,0xef,0xa8,0x1d,0x1c,0xaf,0x53,0x6d,0x27,0x16,0xfe,0xcf,0x76,0x96,0x04,0xbd,0xf5,0x53,0x32,0xda,0x58,0xeb,0x1c,0x88,0x73,0xc2,0x11,0xa4,0xb7,0xd7,0xdd,0x1d,0x64,0xec,0x68,0x7b,0xb0,0xb1,0x4a,0x02,0xcb,0x99,0xa8,0xf4,0xcd,0xd3,0xaa,0xcb,0x01,0xc7,0x2d,0xa4,0x64,0x34,0x39,0xad,0xb1,0xe8,0x1a,0xe1,0x98,0x70,0xba,0x47,0xe0,0x83,0x52,0xed,0x06,0x52,0x32,0xba,0xd8,0x2b,0xf4,0x5d,0x42,0x8e,0x73,0xe2,0x92,0x23,0x8e,0x20,0x19,0xa8,0x54,0xec,0x68,0x5f,0x40,0xa7,0xff,0x9e,0xb4,0x9c,0xf0,0x9c,0xfe,0xe1,0x5a,0xeb,0x65,0xc4,0x70,0x47,0x3b,0x83,0x5e,0xf8,0x9d,0x23,0xa8,0xd3,0x50,0xbe,0xfc,0x77,0x19,0xaf,0x95,0x10,0x72,0xf7,0xb4,0x37,0xb0,0xd2,0xbd,0x17,0xbe,0xb6,0x78,0x0b,0xfc,0x81,0xe2,0x88,0x13,0x28,0x33,0xb0,0xce,0xcf,0xff,0x44,0x37,0xdd,0x7b,0xe1,0x0d,0xfe,0xcc,0x47,0x50,0xac,0x33,0x19,0xcc,0xf0,0x5b,0xf0,0x91,0x42,0xcd,0xc7,0x04,0xbe,0xe6,0xe4,0xfe,0x7a,0xb2,0xca,0x64,0xd0,0xc7,0xef,0x50,0xf8,0x48,0x99,0xde,0xd7,0x5d,0x3a,0x6f,0x5c,0x0f,0x71,0x4c,0x0f,0x6a,0xa4,0x7b,0xba,0x37,0xaa,0xd1,0x5a,0xf1,0x66,0x64,0x66,0x9b,0xe7,0x86,0x23,0x8a,0x06,0x94,0xa8,0xf6,0x74,0x83,0xb4,0xa9,0x73,0x6b,0x90,0x1b,0xcf,0x6e,0xf4,0x1e,0x70,0x84,0x65,0xc2,0xaf,0x7e,0xf6,0x85,0x88,0x20,0x1a,0x1b,0x1f,0x06,0xb2,0xb0,0xd7,0x59,0x3a,0xfd,0x41,0x61,0x6f,0x47,0xdd,0x60,0x80,0x56,0xdf,0x9f,0xd6,0x11,0x0a,0x7b,0x9d,0x70,0xc4,0x03,0x14,0xb0,0x76,0xd4,0x0c,0x04,0x30,0xb4,0x3d,0x5a,0x57,0xb1,0xe3,0x7f,0x13,0x4b,0x77,0x57,0x80,0xee,0xa8,0x17,0xa4,0xf1,0x94,0xa8,0x8c,0x08,0x4e,0xea,0xdd,0x58,0x6f,0x21,0x68,0xe2,0x8e,0x5a,0x01,0x00,0x2f,0x4d,0x4b,0x81,0x2e,0x45,0x36,0x63,0xa2,0x79,0xa0,0x35,0x20,0x34,0xec,0x69,0x25,0x18,0xe0,0xa1,0x69,0x25,0xc8,0x58,0xb0,0xf9,0xdb,0xd7,0x17,0x10,0x62,0xff,0xd7,0x6a,0xf8,0x4c,0xa1,0x9e,0xdf,0xbb,0xb3,0x28,0xe9,0xfb,0xd0,0x79,0x7b,0xc0,0x65,0x4f,0x0b,0x81,0xba,0x8e,0x0b,0xbf,0x71,0x4d,0x00,0xd9,0x5e,0x1a,0x0b,0xc1,0x03,0xa3,0x41,0xfa,0xa1,0x12,0xe6,0xfc,0x4a,0x57,0x01,0x78,0x5b,0x1a,0x22,0x2c,0x06,0xf8,0xcb,0x47,0x9c,0x9d,0xa9,0x1b,0x55,0x1f,0x0a,0xab,0x63,0x64,0x3b,0x08,0xc4,0x88,0x59,0x2b,0x82,0x1f,0x72,0x74,0xa2,0x5e,0x86,0xfa,0x95,0x6f,0x4f,0x42,0x0d,0xd7,0x50,0x5d,0xad,0x61,0xb2,0x81,0x93,0xf3,0x74,0xea,0x94,0xcf,0x03,0x1f,0x52,0x66,0x71,0x3d,0x8e,0x78,0x82,0x34,0xe5,0xea,0xa7,0xe6,0x68,0x56,0xa9,0xbe,0x32,0x22,0x27,0x72,0xb6,0xfa,0xdd,0xf4,0x6c,0x19,0xf4,0xf7,0x94,0x07,0x1a,0x59,0xa1,0xcd,0xb5,0x14,0x00,0x21,0xcc,0xe0,0x68,0x29,0x03,0x2e,0x7b,0xca,0x03,0x7d,0xc9,0x14,0xef,0xc4,0xb7,0xe5,0x1d,0xf9,0x61,0xe8,0x68,0x0c,0x3a,0xfb,0xba,0x3a,0x98,0x99,0x81,0x3d,0x68,0x38,0x05,0xc0,0x93,0xb9,0x9c,0x7c,0x55,0x5a,0x14,0x7b,0xf0,0xb9,0x0a,0xfc,0x8e,0xa7,0xbe,0x00,0x88,0x5d,0x75,0xe5,0x84,0x38,0xba,0xab,0x34,0xc0,0x17,0x43,0xe1,0x34,0x20,0x69,0x91,0x89,0xe4,0x72,0x5b,0xca,0x6d,0x22,0xe7,0x85,0xb8,0xb3,0x59,0x20,0xb3,0xb6,0x4a,0x54,0x17,0x00,0x4f,0xd9,0xa9,0xe2,0x0e,0x24,0xb8,0xef,0x69,0x5b,0xd0,0xe8,0xf4,0x2a,0x53,0xdc,0x02,0xb0,0x9b,0x3c,0xbb,0xfb,0x61,0x7a,0x8b,0xaa,0xf3,0xcb,0xb1,0xbf,0x78,0xa7,0x2f,0xc6,0xf1,0x77,0xc6,0xd7,0x5f,0x7d,0xfd,0xbd,0xce,0x71,0x9c,0x73,0x15,0x5d,0xd2,0x67,0x78,0xef,0xf3,0x60,0xb0,0x90,0x2d,0x55,0xb7,0x68,0x91,0xc0,0xe7,0xea,0x95,0xc5,0xee,0x03,0x82,0x5a,0x91,0xfc,0x1d,0xd6,0xc5,0x36,0xa7,0x56,0xb5,0xbc,0x9a,0x58,0xa8,0x59,0x9b,0xbc,0xe5,0x75,0xfa,0x6b,0xa3,0xb2,0x37,0x42,0x98,0xc3,0x3d,0xad,0x3a,0x83,0xa2,0x76,0xd4,0xe8,0xaa,0xf4,0x3e,0x98,0x20,0xca,0xdc,0xc2,0x9d,0x45,0xba,0x9d,0x64,0x85,0x82,0xcc,0xe6,0x9e,0x9e,0xbb,0x53,0x8b,0xab,0x2b,0x8e,0xf6,0x21,0x0a,0xf3,0x44,0xd6,0xb5,0xb1,0x4f,0xf8,0x64,0x87,0xc5,0x8b,0xc1,0x66,0x10,0x46,0xdd,0xb1,0xc0,0xcd,0xa1,0xc7,0x2e,0x0a,0x03,0xe0,0x97,0xee,0x2b,0x10,0xf8,0xa7,0xeb,0x82,0x9a,0xda,0xcd,0xd2,0x83,0xb7,0x81,0x47,0x7e,0x5c,0xeb,0x1d,0xd2,0xcc,0x5d,0x30,0xcd,0x34,0xe1,0x93,0xe5,0x42,0x55,0x60,0xe9,0x3f,0x1c,0x63,0x83,0x0f,0x3d,0x1b,0x35,0x9c,0x87,0x5f,0xc2,0x28,0x63,0x4f,0x1b,0x43,0x27,0x0a,0x1f,0x0b,0x58,0x86,0xf0,0x7c,0xa2,0xf8,0xa6,0xe8,0xe9,0xfc,0x1c,0x80,0x85,0xec,0x2c,0x0f,0xf6,0x27,0x8b,0x7f,0xf1,0x23,0xb8,0x1e,0x0c,0x82,0x6f,0x8f,0x58,0xdd,0x25,0x33,0xbf,0x7b,0x19,0xee,0x6a,0x5b,0xd8,0xdf,0x1c,0x9e,0x10,0x8c,0x99,0x5d,0x3a,0x0b,0x3f,0x8a,0x65,0x3f,0x7a,0x13,0x7e,0x75,0xdb,0xdf,0x42,0xf0,0x97,0x74,0x2a,0x70,0x9f,0xdc,0xab,0xd3,0x07,0x3c,0xf7,0xdf,0xb2,0x9c,0x6b,0x00,0x7f,0x73,0xf6,0x58,0x03,0x02,0x04,0x63,0xed,0xfa,0xe6,0xea,0x7c,0xd8,0x83,0xff,0x7f,0xd4,0x8b,0xfe,0x1c,0x10,0xac,0x3d,0xd6,0x80,0xcc,0xd2,0x87,0x9a,0x7d,0xe4,0xbd,0x6d,0xb1,0x37,0x17,0x31,0xce,0x7e,0x83,0x3b,0xba,0x29,0xe0,0x57,0x06,0xfe,0xf8,0xd3,0x8e,0x8e,0x89,0xfe,0xd5,0x19,0x7f,0x8c,0xc8,0xe1,0xd3,0x85,0xf8,0x83,0x8d,0xc0,0xc7,0x2b,0xf1,0x07,0x9b,0x01,0x9f,0x6f,0x37,0xa5,0xde,0x84,0xdd,0x05,0x42,0xff,0xe6,0xe1,0x8f,0x2f,0xbb,0x3a,0x1d,0xe8,0x5f,0x77,0xe7,0xad,0x9a,0x3a,0xba,0x51,0xc7,0x87,0x0f,0x96,0x1d,0x7e,0xde,0xff,0x93,0x0a,0xfb,0xfa,0x91,0xb1,0x50,0xd3,0xef,0xd6,0x7f,0xf6,0x49,0x11,0xb7,0xd6,0xf1,0x2b,0x04,0xfc,0x07,0xe7,0x2f,0xf6,0x1f,0x4e,0xa7,0xd3,0xf1,0xd8,0xb6,0xc5,0x06,0xfe,0x37,0xed,0xf0,0xc3,0x7e,0x03,0x66,0x68,0x13,0xd4,0x8e,0x5a,0x86,0xd7,0x39,0xe7,0xe8,0x76,0xf5,0xfb,0xbc,0x71,0x6b,0xe0,0x56,0xd7,0x4d,0x90,0xf9,0x61,0xfa,0xa8,0x0e,0x8e,0xed,0x1d,0xe3,0x02,0x75,0x23,0xde,0x07,0xbd,0x07,0x7a,0x87,0xa0,0x46,0xf1,0xe1,0x71,0xf5,0xb3,0xc1,0x05,0x99,0xdc,0x20,0xf3,0xaf,0x8f,0x18,0x35,0x22,0xdd,0x47,0xd4,0x03,0x43,0xd5,0xa2,0x5e,0x3d,0x28,0xd3,0xa3,0x5e,0xd4,0x79,0xf3,0xee,0x70,0x9d,0x1a,0xc8,0xe5,0x5d,0xa6,0xd2,0x07,0xd4,0xcd,0xaa,0x1a,0x78,0x57,0xbe,0x47,0x50,0x09,0x42,0xd5,0x1e,0xdf,0xc0,0x66,0xb6,0xc8,0x44,0x51,0x91,0xd3,0xf5,0x1d,0x43,0x02,0x6e,0x14,0xa3,0x7c,0xc5,0xd1,0xae,0xc2,0x00,0xbc,0xd5,0xba,0x29,0x19,0x32,0x39,0xd0,0xdc,0x2f,0x8e,0x92,0x14,0x5b,0xe1,0xbc,0x5b,0x58,0xdc,0xf7,0x50,0xb2,0xc2,0x78,0xa5,0xbd,0x3b,0xd9,0x50,0xaa,0x40,0xb1,0xf3,0x64,0xf1,0x51,0xde,0x6f,0x0a,0x7e,0x06,0xa7,0x37,0xba,0x4d,0xb4,0xbe,0xb4,0x28,0x13,0xf5,0xbe,0x9e,0xfa,0x7f,0x25,0x14,0x59,0x2c,0x50,0xce,0x42,0x96,0xd6,0x84,0x7f,0xb9,0x7e,0x24,0x39,0xd7,0x48,0xcf,0xef,0x51,0x0d,0x64,0x32,0xa7,0xfc,0x47,0x27,0xcd,0x4d,0xfe,0x8d,0xfb,0x24,0x00,0xe5,0x02,0xc2,0xff,0xfa,0x31,0xb3,0x9b,0xd4,0x90,0x9b,0xb7,0xfd,0x89,0xa1,0x7f,0x44,0x49,0x18,0x69,0x6a,0x46,0x9e,0x5a,0x63,0xa6,0x3a,0x9a,0xfb,0xfb,0x0b,0xae,0x87,0x23,0x4a,0xd2,0x5e,0xb6,0x5c,0x10,0x26,0x97,0x18,0x65,0x88,0xed,0xaf,0xef,0x9e,0xc5,0x5a,0xbb,0x9b,0x7e,0x14,0xf8,0x1f,0x48,0xfa,0x87,0xa4,0xcc,0x23,0x8d,0xb6,0x7a,0x9a,0xbc,0x5b,0x51,0x39,0xd1,0xe9,0x46,0xf0,0x30,0x50,0x12,0x80,0x16,0x03,0x11,0x8c,0xf4,0xb9,0xa1,0x94,0x57,0x01,0xe9,0x06,0xd8,0x9e,0x41,0xc2,0x7a,0xaf,0x15,0x65,0x26,0x4c,0x68,0x08,0xb2,0x44,0xa0,0x49,0x85,0x2c,0x85,0x0b,0x13,0x6a,0xff,0x4c,0x70,0x31,0x7b,0x6b,0xd9,0xc1,0xdc,0xd6,0x15,0x88,0xf2,0x90,0xc5,0x02,0x6d,0xac,0x25,0x87,0x48,0xba,0x28,0x83,0xb1,0xa5,0x13,0x85,0x03,0x1b,0xe5,0x28,0xf9,0x32,0xa5,0xab,0x6f,0xaa,0x0a,0x96,0x5c,0x29,0x91,0x22,0x7e,0xd6,0x4f,0xa0,0x71,0x50,0x96,0x14,0x26,0x24,0x74,0x1b,0x71,0xba,0x33,0xb2,0xd0,0x44,0x5f,0x26,0xee,0xb4,0x85,0x81,0xa0,0xe9,0x50,0x1e,0x4f,0xfc,0xec,0xbe,0xd6,0x04,0x8d,0xcc,0x56,0xf8,0x87,0x68,0x12,0x94,0xc7,0x0b,0x60,0x5d,0xe5,0x81,0xa0,0x44,0xc4,0xe4,0x38,0x5f,0x62,0x13,0x77,0xed,0x65,0xc8,0x14,0xc0,0x28,0x1f,0xa5,0xf2,0x72,0x58,0x4f,0x22,0xfc,0xf5,0x5b,0x62,0x23,0xa8,0x81,0x88,0x1b,0xd9,0x53,0xf7,0x42,0x16,0x43,0x68,0x83,0x7c,0x6c,0xa1,0x20,0xc7,0x85,0x95,0xa4,0x54,0xb4,0xc5,0x1d,0x80,0x25,0xf2,0x3d,0x3e,0x91,0x85,0xd6,0xa0,0x59,0x12,0x0b,0x66,0xbb,0x29,0x6b,0x0e,0x3b,0x44,0x47,0x14,0x42,0x1e,0x26,0xac,0xa0,0xb7,0x50,0x44,0x5b,0x05,0x23,0x53,0x69,0x2a,0x58,0x01,0x86,0xa0,0x9d,0x2f,0x56,0x07,0xe6,0x63,0x03,0x47,0x79,0x31,0x50,0x44,0x1b,0x82,0x6e,0x65,0x27,0x16,0xd7,0xcb,0x26,0x3e,0x87,0x4c,0x28,0x8e,0x73,0x82,0x15,0xd8,0x42,0x75,0x60,0x85,0xec,0x5b,0x22,0x16,0xfc,0x06,0x8c,0x00,0x74,0x32,0x2b,0x22,0xf2,0xed,0xe7,0xf0,0xaf,0x18,0xbf,0x75,0x16,0x59,0x81,0x25,0x0d,0xac,0xc0,0x25,0x22,0x75,0xa0,0x35,0xfd,0x9b,0x19,0x2a,0x6b,0xe3,0xa5,0x80,0x1f,0xe3,0x5c,0xf4,0x90,0x71,0x3d,0xce,0xad,0xc8,0xfc,0xb9,0x82,0x55,0xdc,0x04,0xea,0xc0,0x86,0x2f,0xc9,0x9a,0x0b,0x6c,0xa1,0xa1,0x4f,0xd0,0xa3,0x76,0x64,0xc4,0x59,0xfa,0xb9,0x91,0x2e,0x7f,0x23,0x4b,0x00,0x5c,0x93,0x92,0xe7,0xcc,0x5e,0x72,0x01,0xff,0x73,0x9f,0x9f,0xab,0xf0,0x4a,0xd0,0xc0,0xa7,0xb3,0x5b,0x3c,0x2e,0x7c,0x83,0xce,0x1b,0x03,0xcc,0x78,0x2b,0x4b,0x00,0x3c,0x2b,0xc2,0x34,0x99,0xd7,0x4a,0xee,0xe4,0x64,0xaa,0x49,0x04,0xaa,0xb9,0x1e,0xce,0x42,0x9c,0x7c,0xd6,0x69,0xf9,0xd8,0xce,0xee,0xc0,0x75,0xb0,0x9a,0xc3,0xdc,0x3a,0xb0,0x99,0x39,0x8b,0xc9,0xe7,0xf6,0x58,0x8d,0x01,0x94,0x4a,0x0b,0x9c,0xc3,0xba,0xd4,0xc0,0x12,0xce,0x1a,0x03,0x4a,0x22,0xd0,0x81,0x65,0xd0,0xb2,0x18,0x10,0xcc,0x09,0x33,0x90,0x04,0x58,0x92,0x9b,0xb5,0x9d,0x97,0xc0,0xcc,0xc7,0xdf,0xee,0x61,0x44,0x42,0xe6,0x8c,0x01,0xf6,0x36,0x8f,0x55,0xf2,0x67,0xce,0x4c,0x0d,0x91,0x1e,0x48,0xd6,0x11,0x9c,0xc1,0x68,0x40,0x91,0x9e,0x22,0xbf,0xe2,0x5c,0x8a,0x75,0xc5,0x5a,0xe6,0xd2,0xfb,0x16,0x2f,0xdb,0xf7,0x66,0xf5,0x85,0x4b,0xd6,0x8f,0x58,0x6a,0xd8,0xaa,0x08,0x41,0x89,0x08,0xf9,0xb5,0x51,0x02,0x53,0xd2,0x19,0x63,0x80,0xb1,0xd5,0x63,0xb5,0xd8,0x43,0x53,0x3b,0x23,0xce,0x56,0xc2,0xa4,0xab,0x85,0xfc,0x3a,0x13,0xa4,0x73,0x0d,0xe4,0x66,0xf8,0xc0,0xc1,0x45,0xee,0x31,0xe0,0xb9,0x9d,0x26,0x10,0x7f,0x71,0x7a,0xe1,0xfe,0x1d,0x1f,0x81,0xc7,0xfd,0x84,0xdc,0xac,0x00,0x18,0x34,0x4c,0xfe,0xbc,0x0c,0xf8,0x18,0xbc,0x8f,0x8e,0x19,0x6f,0xb1,0x02,0x9c,0x4a,0x06,0x14,0x35,0xef,0x08,0x10,0x01,0x9f,0xdc,0x43,0x5e,0x24,0x05,0xa9,0x2a,0x15,0x71,0xc5,0x07,0x6f,0x3f,0xe0,0x31,0xf6,0x94,0x89,0x2b,0x87,0xfc,0xee,0xfb,0x7d,0x3e,0x94,0x6a,0xea,0xc0,0x03,0xef,0x20,0x1a,0x08,0x84,0xef,0xb4,0x0e,0x03,0xa6,0x8d,0x9c,0xba,0x40,0xc2,0x91,0x81,0x2f,0xf8,0x2f,0xb7,0x90,0x9d,0x03,0x75,0xc3,0xb3,0x6d,0x11,0xfc,0x07,0xb1,0xec,0xca,0xaf,0xa5,0xd7,0x81,0x03,0x5f,0x1f,0xc0,0x9a,0x97,0xbe,0x46,0x4e,0x86,0x0b,0x92,0xb8,0x47,0xe4,0x63,0x07,0x52,0x96,0x52,0x29,0x77,0xf6,0xa2,0x17,0x3a,0xac,0xe8,0x65,0x31,0x86,0xe2,0x83,0x0f,0x02,0x1a,0xc2,0x99,0x70,0x0b,0xe4,0xc4,0xd9,0x07,0x1b,0xf9,0xd0,0x0c,0xa4,0x08,0x62,0x55,0x11,0xc5,0x1b,0xd7,0x0c,0x6a,0x58,0x7c,0x91,0x3f,0x7f,0x97,0xa5,0x70,0x32,0x99,0xe3,0xe3,0x9d,0x2b,0x49,0xda,0xa8,0x4a,0x61,0x93,0x10,0x24,0xf0,0x09,0xf2,0x30,0x32,0x69,0xd7,0x67,0xa3,0xcd,0xf7,0x8a,0x25,0x25,0xcc,0x63,0xf2,0x6c,0x5b,0xb6,0xae,0x30,0x93,0x19,0xf3,0x0d,0x51,0xb1,0xbc,0x0d,0x6d,0x99,0x81,0x5c,0x2e,0xb0,0xd8,0x05,0x79,0xc4,0x21,0x88,0xf0,0x38,0x56,0x46,0x7b,0x59,0x3b,0x81,0x92,0x0b,0x45,0x2e,0xf1,0xdc,0x0d,0x98,0x21,0x57,0xce,0xbd,0x97,0xfa,0x25,0x85,0x31,0xf2,0x38,0x68,0x29,0xff,0x49,0x64,0x82,0x90,0x2b,0xc7,0xe7,0x66,0x21,0x43,0x6c,0xc2,0x1c,0xb7,0x42,0x5d,0x6b,0xfd,0xc4,0xd3,0x15,0x64,0x55,0x6f,0x2e,0x08,0x31,0x23,0x82,0x1c,0x1c,0x58,0xe4,0xa0,0x36,0x8b,0x92,0x90,0xc9,0xb7,0xe2,0x55,0x4e,0x0e,0x30,0x37,0x54,0x46,0xac,0x02,0x9e,0xac,0x4a,0x21,0x7b,0x4b,0xb3,0xeb,0x20,0x07,0x1b,0x16,0x70,0x70,0x9a,0x95,0x29,0xc8,0xd5,0x95,0x8c,0x81,0x53,0xf0,0x83,0x33,0x5f,0x38,0x17,0xa9,0xa4,0x7c,0x50,0xc4,0x9d,0x5a,0x2f,0x48,0x41,0x5c,0x7e,0xc4,0x69,0x9e,0x84,0xec,0x3b,0x1b,0xb9,0x28,0xe9,0xa6,0x45,0xd3,0xb1,0xab,0x0c,0xb8,0x0d,0x16,0x0a,0x38,0x36,0x32,0xf2,0x81,0x87,0x89,0xdf,0x3a,0xa9,0x61,0x89,0x0b,0x51,0xf8,0x0e,0x38,0x6b,0x08,0x21,0x15,0xe3,0xcb,0xc1,0x26,0x95,0xf0,0xa7,0xba,0x12,0x14,0x42,0x7d,0xe0,0x16,0x4d,0x05,0x56,0x6b,0xc2,0x7a,0x3e,0x97,0x71,0x3b,0x9c,0x64,0xab,0xaa,0xff,0x68,0xa8,0xea,0x22,0x49,0xec,0xa7,0x3e,0xd7,0x52,0xc7,0xe1,0x8e,0x0f,0x09,0x53,0x41,0x67,0x7c,0x36,0xf5,0xd4,0xd1,0xa6,0x71,0x40,0x40,0x8a,0x53,0x3c,0x17,0x16,0xbb,0x8f,0xe6,0xbc,0xea,0x02,0x19,0xce,0xc0,0xcb,0xd1,0x73,0xec,0x68,0x38,0x91,0x0d,0xb2,0x98,0x33,0xde,0xc5,0xea,0x0e,0xa7,0x54,0xc2,0xa3,0x33,0x5b,0xf1,0x04,0x19,0xe8,0xd8,0x07,0x73,0xe6,0x0c,0x5d,0xb2,0x99,0x1e,0x2e,0xd2,0x01,0x2f,0x63,0xf4,0x05,0x9c,0x33,0xff,0xa1,0x0c,0x21,0xc5,0x09,0xa9,0xe0,0x61,0x68,0x6c,0x27,0x57,0x6d,0xae,0xf2,0x36,0x5a,0x5a,0xdd,0x80,0x8f,0x69,0xe0,0x42,0x36,0x70,0xca,0x91,0x25,0x1f,0xf9,0x63,0xfa,0x20,0x85,0x7b,0x92,0x7c,0x84,0xb6,0x1b,0x0b,0xbc,0x53,0x84,0xe4,0x23,0x51,0xaf,0xd7,0xe2,0x2e,0xa0,0x8d,0x8b,0x39,0xc0,0xa9,0x43,0x86,0x13,0xbb,0x98,0x2d,0x4c,0x5d,0x79,0x2d,0xda,0xc8,0xbc,0xdf,0x93,0xf6,0x20,0x8d,0xc5,0x1c,0x3a,0x1b,0x82,0x0b,0x9f,0x1b,0x07,0x25,0xa8,0x16,0xa7,0xc3,0x7a,0x08,0x99,0x9d,0x6f,0x69,0xb2,0x18,0x19,0x04,0x4e,0xd1,0x3e,0x6b,0x79,0xfd,0x8f,0x97,0xc7,0x2f,0xe8,0x96,0xae,0x01,0x45,0x28,0xc5,0x75,0xe9,0x74,0xc3,0x00,0x4f,0x43,0xa2,0xb1,0xf6,0xa4,0x4d,0x05,0x7a,0x81,0x7f,0x93,0x20,0xf6,0x04,0xb9,0x08,0x90,0x25,0xd3,0x7b,0xbd,0x03,0x09,0x80,0x0b,0x7b,0xce,0x92,0xb2,0x9e,0x4a,0xad,0xb9,0xad,0x27,0x70,0x72,0xa9,0xc6,0xb4,0x19,0x7b,0x9c,0x5e,0xba,0x06,0xe4,0x52,0x14,0x22,0xfe,0xf6,0x8c,0xd6,0xbe,0x2a,0xfa,0x49,0x70,0x04,0x69,0x64,0x54,0x4e,0xb4,0x07,0xc9,0xee,0x38,0x53,0x20,0xd0,0x6b,0xd6,0x52,0x08,0x9a,0x14,0x67,0x21,0x35,0x48,0x96,0x53,0x1c,0x61,0x48,0x58,0x01,0x88,0x07,0x90,0x2e,0x56,0xf2,0x6d,0x5c,0x51,0x22,0x1f,0xb8,0xa4,0x02,0x53,0x4c,0xb9,0xca,0x76,0xf1,0x1b,0x27,0xa1,0xc8,0x66,0x95,0x20,0x5f,0x85,0x4c,0xe2,0x8b,0xc0,0x35,0x45,0x89,0x5a,0x53,0x7c,0x4a,0xa3,0xf7,0x64,0x33,0xf7,0xb8,0xf4,0xb3,0x3b,0x20,0xdb,0xd1,0x05,0x05,0x4a,0x15,0xab,0xb3,0x0e,0x4a,0x15,0x29,0xb8,0x1c,0x3f,0x06,0x15,0x92,0xd3,0xb2,0x85,0xcd,0x81,0x20,0x93,0x61,0x82,0x12,0x1e,0xf2,0x2b,0x6a,0xe0,0x91,0xa3,0x98,0xa5,0xcd,0xa7,0x23,0xf2,0xab,0x40,0x09,0xf3,0x84,0x6c,0xd9,0x92,0x2f,0xe3,0x98,0x80,0x1a,0xa1,0xfc,0x47,0xd1,0x43,0xc9,0x5e,0xf2,0xa7,0x9e,0x25,0x88,0x12,0x5f,0xff,0x36,0x16,0x3c,0x39,0x56,0x0d,0xaa,0x50,0xe4,0x45,0x4d,0xce,0x8c,0x96,0x6c,0xc4,0x15,0x8d,0x07,0xea,0x3f,0xda,0x2c,0x31,0x90,0xc9,0x17,0x7e,0x72,0x62,0x17,0x94,0x39,0x20,0xaf,0x8b,0x9e,0x1e,0x80,0x78,0xed,0x91,0x21,0xaf,0x10,0x94,0xa9,0x2d,0xd1,0xed,0xf4,0xc1,0x3a,0xd7,0x71,0x04,0x92,0x5f,0x00,0x0d,0xca,0x47,0x6a,0xb9,0x83,0x0f,0x35,0x41,0x9d,0xe6,0x37,0xf6,0xee,0x6b,0xc9,0x75,0x1b,0x06,0x00,0x28,0x48,0xf5,0x6a,0x35,0xab,0x5a,0xee,0x5e,0xfc,0xff,0x1f,0x26,0x99,0x64,0x26,0x93,0x64,0x69,0x91,0x14,0x48,0xc9,0x7b,0x73,0x9e,0x6f,0x76,0x1c,0xcb,0x62,0x01,0x40,0x82,0x6b,0x0e,0x01,0x81,0xd4,0x7f,0x47,0xcf,0xa1,0x1d,0x00,0x5a,0x34,0xa0,0x04,0x29,0xf5,0x1e,0x5a,0xdc,0x42,0xc5,0xb4,0x6a,0x44,0x3b,0xb6,0x51,0x3b,0x96,0x12,0x05,0xf4,0x8e,0x02,0x0c,0x68,0x80,0x43,0xbb,0xa7,0x49,0xc1,0xa8,0x12,0x45,0x7a,0x9d,0x86,0x4c,0x13,0x98,0x55,0x34,0x94,0xb1,0xf3,0x33,0x1a,0x71,0xa5,0x9c,0xcf,0x1c,0x30,0xcc,0x47,0x81,0x59,0x63,0x17,0xdb,0x1c,0xc1,0xb0,0x84,0x72,0x00,0x08,0xd0,0x88,0x96,0xb2,0x0a,0x25,0x03,0xc3,0xba,0x83,0x7a,0xfc,0xa9,0x17,0x27,0x12,0x4d,0xeb,0x09,0x67,0x61,0xe0,0x68,0x84,0x43,0xb8,0xa4,0xe5,0x60,0xdc,0x43,0x3d,0x18,0x94,0x6f,0x78,0x19,0x77,0x44,0x17,0x3a,0xbd,0xa2,0x21,0x1d,0xdd,0x10,0xd0,0x82,0x79,0xbe,0xf2,0xf2,0xd3,0xd9,0xf0,0x26,0xae,0x98,0x6e,0x00,0xb8,0xa3,0x21,0x31,0xdd,0x2f,0x30,0x04,0x02,0x9a,0x35,0x6a,0x9e,0x6a,0x3b,0xa3,0x00,0x6c,0xf0,0x70,0xc1,0xa0,0xf8,0xcb,0xa7,0x97,0x90,0x7d,0x02,0x1f,0x6c,0x98,0x15,0x63,0xd0,0x0f,0xe1,0xbf,0xb7,0xe1,0x4e,0x56,0xda,0x7e,0x40,0x43,0x1c,0xb2,0xc0,0x56,0x05,0x36,0x74,0x4c,0x6d,0x49,0x97,0x8b,0x22,0x07,0x56,0x14,0x0d,0x51,0xe4,0xcc,0x45,0x53,0x1a,0xc5,0xe9,0x77,0xf3,0x26,0xa7,0x81,0xda,0x48,0xe6,0x8b,0x66,0x3e,0x3b,0x12,0xa2,0x73,0x7a,0x35,0x1a,0x13,0x12,0x7d,0x86,0x1b,0xd8,0x51,0xab,0x8d,0x64,0x9e,0xa1,0x0d,0x0b,0xc9,0xd2,0x89,0x17,0xca,0xc9,0x65,0x7a,0x15,0xc8,0x8a,0x2c,0xa7,0x01,0x48,0x1e,0x29,0x13,0xac,0x57,0x6c,0x89,0x68,0xf6,0x4d,0x39,0x1a,0x53,0xaa,0x35,0x96,0xd4,0x3c,0xd9,0x6a,0x7e,0x54,0x2d,0xe0,0x3b,0x9d,0xe8,0x7f,0xda,0x96,0x98,0xa6,0x80,0x36,0x41,0x63,0x9e,0x34,0xe9,0xad,0x1e,0x6c,0xc9,0x54,0xf2,0x10,0xa9,0xe8,0x1f,0x5b,0x33,0x90,0xe4,0xce,0x02,0x34,0xa6,0x25,0x29,0x76,0x8f,0xc0,0x9a,0x50,0xe5,0xa4,0x68,0x2d,0x5a,0xf8,0x58,0x73,0x79,0x5b,0x8f,0xb3,0x79,0x18,0x00,0x31,0x21,0xc9,0x70,0x9f,0xc1,0x1e,0xfc,0x56,0xac,0x92,0x43,0x03,0x7b,0x0a,0x86,0x04,0x87,0x28,0x23,0x34,0x26,0xa0,0x98,0xd0,0x3c,0xb0,0x88,0xe3,0x77,0x32,0x85,0x41,0x8b,0x81,0x45,0x3e,0x45,0xf2,0x7c,0x42,0x63,0x4e,0x20,0x2f,0xdc,0xc1,0x0c,0x20,0x9a,0x55,0x6f,0x2a,0x0b,0x57,0x17,0xac,0x71,0x39,0x0a,0x3c,0x3f,0x6f,0x04,0x48,0x50,0xe4,0x0a,0xf6,0x34,0x0a,0x23,0x40,0x4d,0x16,0x08,0xa6,0xaf,0x62,0xe1,0xee,0xa7,0xad,0x01,0x3a,0xa6,0xfe,0x57,0xe8,0xb9,0x2a,0x6b,0x80,0x9e,0x2e,0x6c,0x4d,0x9f,0x0f,0xba,0x7f,0xda,0x2e,0xa0,0x45,0xa1,0xa6,0x00,0x5b,0x52,0x95,0x67,0xea,0x9a,0xaf,0x06,0xd4,0xaf,0xe4,0x3a,0xc0,0x1e,0xe2,0x00,0x17,0xa5,0xcc,0xc6,0x0e,0x3a,0xdd,0xdd,0x95,0x46,0x75,0xbe,0x71,0x6b,0x76,0x9f,0x26,0x7c,0xfe,0x44,0x63,0x32,0x90,0x95,0xef,0x21,0x17,0x24,0xfc,0x4a,0x95,0x76,0xae,0xac,0x00,0x3b,0x8e,0x34,0xd5,0x00,0x10,0xa3,0x31,0xa9,0xda,0x72,0x76,0xf3,0x6e,0xc7,0x6e,0xa3,0x34,0x9c,0x06,0xdb,0x0e,0x58,0x2d,0xd1,0xdb,0x77,0x45,0x63,0x0a,0xa5,0x90,0xd6,0xf6,0xb1,0xc0,0x9b,0x5a,0x39,0xca,0x7d,0xdb,0x01,0x8b,0x53,0xe5,0xd0,0x19,0x1a,0x72,0x50,0x1b,0x00,0xb6,0xcf,0x06,0x8c,0x6a,0xcb,0xba,0x7a,0xd3,0xd0,0xe5,0x8b,0xaa,0x22,0x0f,0x3c,0x34,0x64,0x22,0x3b,0xe7,0x92,0x80,0x0d,0x95,0xea,0x37,0xc9,0xb7,0x6c,0xcf,0xeb,0xe0,0x82,0x11,0x24,0x7d,0xa1,0x21,0x39,0x59,0x51,0x5a,0xe3,0x82,0x80,0x85,0xaf,0x94,0xb9,0xaa,0xcb,0xf0,0x17,0x98,0x57,0xd3,0x15,0xe5,0x66,0x68,0x48,0x45,0x77,0xd0,0xad,0x04,0xf3,0x62,0xe5,0xd2,0xc6,0x9b,0xf8,0x44,0x8e,0x71,0x27,0x44,0xaa,0x21,0xa0,0x43,0x33,0x98,0xd2,0x00,0xb0,0x7d,0x55,0xe0,0xa0,0x3c,0x90,0x75,0x4c,0x98,0x8c,0x33,0x2d,0x64,0xb8,0x2c,0xde,0x76,0x11,0x10,0x51,0x9e,0x4b,0x38,0x83,0x69,0xb3,0xc6,0x0a,0x34,0xd2,0xfb,0xea,0x6d,0xf5,0xa6,0xf7,0x54,0x36,0x94,0xf4,0x4a,0x95,0x01,0x60,0xf3,0x93,0x01,0x15,0x0a,0x38,0x3a,0xb3,0x27,0xef,0xc0,0xac,0x03,0x65,0x24,0xae,0x47,0x13,0x58,0xa7,0x3f,0x00,0xd8,0x4f,0xb2,0x15,0x07,0xad,0x40,0x34,0xdf,0x28,0x74,0x11,0x23,0x52,0x0e,0x01,0x0e,0x1a,0xe0,0xab,0xc4,0x00,0x36,0x3f,0x1d,0x18,0x21,0xea,0xf4,0x28,0xc9,0x37,0xda,0xb9,0x46,0xb4,0xc1,0xf8,0x12,0x0d,0x88,0x75,0x82,0x80,0x62,0x07,0x30,0x69,0xd6,0x7c,0x90,0x21,0xdb,0x64,0xe3,0x12,0xa2,0x24,0x4f,0x3a,0x17,0x47,0x6e,0xd0,0x1f,0x00,0xec,0xaf,0xab,0x5e,0xda,0xd7,0x5c,0x24,0x9b,0x7c,0xe0,0x1c,0x65,0xdd,0x36,0x5b,0x06,0x96,0xda,0x03,0x80,0xfd,0x65,0xe0,0x99,0xa1,0xc8,0x49,0x7f,0x3b,0xc6,0xce,0x60,0x8a,0x47,0xfd,0x1e,0x76,0x0c,0x89,0x1d,0x5c,0xea,0x0b,0xc3,0x59,0x08,0x86,0x54,0x0c,0x85,0xae,0x2b,0x9a,0x85,0xb0,0x0a,0xcc,0xa8,0xe8,0x5f,0xc4,0x04,0x89,0x5d,0xe8,0x8f,0x25,0x5d,0xc0,0x8c,0xba,0x41,0xa1,0x60,0xd5,0x65,0xe1,0x4d,0x05,0x46,0x04,0x88,0xd4,0x57,0x85,0x86,0x0d,0x92,0x1a,0x5c,0xcd,0xa6,0x21,0xf6,0xa3,0x81,0x29,0x5f,0x37,0xea,0xdc,0x50,0x8c,0xc5,0x60,0x40,0xc1,0x0c,0x64,0x64,0xee,0x48,0x2a,0x36,0x31,0xf0,0x54,0x60,0x40,0xd5,0xa0,0xd8,0x73,0xed,0x26,0x9a,0x65,0x40,0xaf,0x44,0x15,0x4d,0xb7,0x41,0x2c,0xc0,0x5f,0xd9,0x38,0xcc,0xde,0xd5,0x2b,0x31,0x5b,0xdd,0xfb,0xe6,0xca,0x28,0xdb,0xdc,0xd0,0x3f,0xaa,0xc4,0xfe,0x35,0x01,0xec,0x48,0x30,0x97,0x59,0xa9,0xb6,0xbb,0x51,0x0c,0x39,0x4f,0xbb,0x3f,0xdb,0xab,0xa1,0xa7,0xd1,0x5a,0xdf,0x02,0x5e,0x49,0xff,0x2e,0xfd,0x7e,0x3a,0xa1,0x79,0x25,0xa7,0x0e,0x48,0x25,0xaa,0x5d,0xc3,0x02,0xdb,0x67,0xc4,0xfc,0xb5,0x65,0xcd,0xbe,0x9d,0xeb,0x42,0x8b,0x88,0xa8,0x75,0xe4,0x91,0xe3,0x3b,0x43,0x0a,0x94,0x44,0x5d,0x55,0x6b,0x14,0x49,0xed,0xf6,0x8d,0x1b,0x8a,0x95,0x93,0x0e,0x77,0x3d,0x1b,0x17,0x06,0xf7,0xde,0x42,0xfb,0x43,0xb2,0xdc,0x4c,0x93,0x01,0x9d,0x58,0xf8,0x9e,0x07,0x6b,0x33,0x53,0x67,0x86,0x04,0x9a,0x74,0xed,0x88,0x73,0x87,0xbb,0x85,0x0c,0x4b,0xdc,0x10,0xce,0x37,0x33,0xbe,0x17,0xb8,0x40,0x45,0xdc,0x55,0xb5,0x67,0x28,0x50,0x59,0x3c,0x22,0xc0,0x1e,0x6b,0xaf,0x84,0x38,0x88,0x23,0x93,0x9c,0x7a,0x26,0x15,0x0b,0x68,0xd3,0x73,0xde,0xd5,0x70,0x1e,0xc8,0x03,0x80,0x64,0x75,0x7d,0xe8,0xdd,0xe2,0x69,0x20,0xef,0x5d,0xfe,0xe2,0x64,0x38,0xc1,0xd2,0x8f,0x28,0xa0,0xd9,0xf0,0xab,0xf0,0xf0,0x3d,0x56,0x9a,0xbd,0x1f,0xf2,0xf9,0x36,0x31,0xf1,0x02,0x49,0xad,0xb5,0x7b,0xa1,0xca,0xb7,0x01,0xbf,0xb3,0xd9,0x8c,0xd0,0xab,0xc1,0xf7,0x0e,0xa1,0x6e,0xd3,0x11,0xb1,0xe8,0x68,0x32,0x08,0x10,0x0a,0x1e,0x9f,0xea,0x71,0xf1,0x0b,0xae,0xc1,0x5e,0x20,0xa9,0xe0,0xef,0x87,0x90,0xc1,0x60,0x28,0x20,0xf4,0xf5,0xfb,0x5f,0x8b,0xa5,0x0d,0x2e,0x68,0x4a,0x73,0x07,0x02,0xa3,0x85,0x6f,0x35,0xa7,0x3b,0x70,0x42,0x13,0xfa,0x6e,0x17,0xa6,0xab,0xdc,0x5c,0xc9,0x7d,0xcc,0xcd,0xf4,0x28,0x7d,0x30,0x5c,0x12,0x85,0xb0,0x52,0xfe,0x7e,0x6e,0x7c,0x12,0xe4,0x52,0x1f,0x0d,0x6a,0xe2,0x35,0x41,0x55,0xf3,0x63,0xe9,0x97,0xbe,0x52,0xe7,0x1b,0xeb,0x4e,0x11,0x33,0x5c,0xd2,0x5c,0x60,0x1d,0xef,0xfd,0xea,0xd8,0x3d,0x10,0x2c,0x6a,0x8f,0x0e,0x6a,0x99,0x42,0x82,0x84,0xa6,0xb3,0xb4,0xac,0x0e,0x61,0x95,0x1b,0x37,0x18,0x70,0xcc,0x70,0xd9,0x58,0x9b,0xe8,0x17,0x97,0x2c,0x2f,0xe3,0x6b,0xfd,0x83,0xc7,0xf4,0x55,0x9b,0xe9,0x72,0xf8,0x3d,0x33,0x91,0x5c,0x49,0x1d,0xb3,0x01,0xe7,0x0c,0x25,0x24,0x05,0x68,0x6b,0x17,0x9f,0xee,0x40,0xd2,0x75,0x29,0x1e,0x50,0x91,0x57,0x81,0x82,0x69,0x39,0x66,0xe5,0x36,0xe4,0xe1,0x60,0x77,0x66,0xb8,0xec,0x4e,0x94,0x5c,0x14,0xe3,0x25,0xf5,0xe9,0x25,0x4f,0x66,0x0d,0x17,0x83,0x8a,0x9c,0xa1,0x02,0x96,0x13,0x55,0xb5,0xa7,0xcb,0xb3,0xc4,0x11,0x34,0xbd,0x0e,0x04,0x55,0x94,0x34,0xd1,0x54,0xef,0x4c,0x7b,0x22,0x34,0x97,0xc9,0x4c,0x0d,0x2e,0xa8,0xe8,0x7d,0x94,0x16,0x84,0x44,0x35,0x8d,0x81,0xc4,0x15,0x48,0x4f,0xd0,0x52,0x39,0x76,0x1a,0xd4,0xd6,0x1c,0x65,0x44,0x3d,0x65,0xf8,0xb2,0x97,0x2a,0x18,0xcc,0x41,0x4d,0x1f,0xa0,0x0c,0x76,0xea,0x41,0x96,0xd2,0x5e,0xe5,0x40,0x58,0x19,0x76,0xf4,0x51,0x46,0xf3,0xa0,0xc8,0x31,0xd1,0xbe,0x35,0x12,0x5f,0x89,0x23,0x97,0x64,0x65,0x3d,0x28,0xea,0x13,0x8e,0x0b,0x0e,0x6d,0x08,0x8a,0xc2,0x46,0x6e,0x1d,0x39,0x93,0xa5,0x04,0xbb,0x99,0xa1,0x8c,0x43,0x0a,0x04,0x3a,0x07,0xa5,0xb0,0xa4,0x03,0x35,0x95,0xd4,0xb2,0xa5,0x67,0x94,0x95,0xf5,0x8f,0x13,0x7b,0xf7,0xf2,0xc7,0xa0,0xee,0x24,0xd9,0xe4,0x22,0x25,0x3a,0x24,0xd6,0xb5,0x0c,0xa5,0x38,0xa1,0xe5,0xaa,0x5d,0x36,0x17,0x24,0x7f,0x37,0x94,0x4d,0x4d,0xc6,0xa0,0xc1,0xad,0xf2,0x89,0xe1,0x7f,0x8d,0xf3,0xc3,0xa5,0x2d,0x6a,0x2f,0xe5,0xae,0xec,0x19,0x40,0x85,0x7b,0xe1,0x28,0xc7,0x77,0x81,0xca,0x05,0x25,0xf1,0xbc,0x5b,0x5f,0x0a,0x12,0x49,0x87,0xd9,0x3d,0xd0,0x54,0xd4,0xb7,0xd9,0x1f,0x07,0xce,0x10,0x1b,0x3e,0x38,0x7e,0xfb,0xaa,0x5d,0xd0,0x34,0x4a,0x7f,0xba,0xcb,0xfa,0x90,0x46,0x91,0x73,0xf9,0x38,0x06,0xa1,0x33,0x47,0x49,0x6c,0x0e,0xd7,0xf6,0x54,0x78,0xc9,0x97,0x0d,0x3f,0x61,0x73,0xa5,0xfc,0xf8,0x14,0xae,0x2d,0x0b,0xe9,0xda,0x06,0x05,0x4c,0xd7,0x6f,0x87,0x13,0xca,0x62,0x49,0x08,0x52,0xbe,0xa4,0xef,0x30,0xf2,0x64,0x53,0x02,0xf6,0x75,0x5c,0xe1,0x4e,0xb1,0x69,0xd5,0x1c,0x10,0x26,0x0c,0x65,0x79,0x57,0xa0,0x96,0xa3,0x34,0x16,0xa4,0x2b,0xf6,0x00,0xbe,0x4a,0xff,0x15,0x1f,0x36,0xf6,0xa5,0x52,0xb9,0x58,0xae,0xd8,0x07,0xa4,0x01,0x43,0x69,0x5f,0x2e,0xd0,0xab,0x07,0x94,0xe7,0xc4,0xb0,0xa4,0x56,0x08,0x5d,0x44,0xbb,0xe8,0xbf,0xf2,0x8d,0x54,0xa9,0x04,0x2b,0xd4,0x8e,0x68,0x54,0x11,0xca,0x63,0x19,0x18,0xd1,0x45,0xa8,0xc0,0x2b,0x5d,0x78,0xab,0x55,0xb8,0xc5,0xee,0xba,0x83,0x8b,0x97,0xbf,0xe5,0xa8,0x9d,0x5e,0x98,0xb4,0x4a,0xdc,0xdc,0xd2,0x43,0x05,0xce,0x11,0x4c,0xb9,0x33,0x54,0xd0,0x24,0x57,0x8d,0xf8,0xa9,0xaf,0x58,0xf2,0x98,0xc3,0x86,0x4a,0xc5,0x35,0x78,0xa9,0x91,0x0f,0xb8,0x26,0x0d,0xaa,0x98,0xc1,0xa0,0x7e,0x42,0x25,0xe3,0x4d,0xb9,0x16,0x28,0x53,0xac,0xb8,0x62,0x3d,0x6c,0xa6,0xe3,0x8a,0xd7,0x09,0x84,0xca,0x19,0xbb,0x47,0x44,0x90,0xc5,0xa4,0x54,0x32,0x54,0xc2,0xdb,0x5e,0x30,0x9a,0xa8,0x15,0xc9,0xdd,0x36,0xbf,0x7a,0xfb,0x1b,0x81,0x72,0x0e,0x66,0x52,0xba,0x85,0xb8,0x6f,0x39,0x2a,0x61,0x2d,0x18,0x17,0xfa,0xa8,0x68,0x2c,0x0b,0xf9,0xaf,0xc2,0x57,0x3f,0xaf,0x96,0xc1,0x46,0x2a,0x14,0x99,0x54,0xe7,0x8c,0x0e,0xfe,0xc3,0xcd,0x26,0x54,0xe4,0xd5,0x60,0x43,0xc6,0x51,0x11,0xf3,0x1f,0xb2,0x97,0x02,0xbc,0xd4,0xd7,0xdb,0xbc,0x03,0x2b,0x14,0xc2,0x13,0x57,0x10,0x08,0x65,0x83,0x5f,0x75,0xc0,0x50,0x11,0xcb,0xc1,0x92,0xf0,0x84,0xca,0x86,0xf6,0x2a,0x53,0x6c,0xc4,0x0a,0x8d,0xa3,0x2f,0x5f,0x60,0x94,0xfe,0x9d,0x7a,0xba,0x03,0x5f,0xda,0x0e,0xa8,0xcc,0xe9,0xc1,0x9e,0x6a,0x44,0x75,0xe3,0xf3,0xb8,0x98,0xe4,0x8d,0x16,0x2a,0xef,0x37,0xef,0x6c,0x26,0x93,0xa5,0xe4,0x05,0x08,0xdd,0x17,0x37,0xbf,0x7d,0xee,0xa1,0xba,0x43,0x06,0x76,0xdd,0x38,0x6a,0x70,0xca,0x10,0xfe,0xd4,0xa8,0x17,0x30,0xde,0xf6,0x15,0x0c,0x88,0x50,0xe7,0xdc,0xd2,0xf1,0x7d,0xe2,0xe0,0x78,0x71,0x50,0x03,0xcb,0x5d,0xb0,0xad,0x98,0x19,0xea,0x98,0xee,0x21,0x00,0x3c,0x74,0x8a,0xa4,0x9d,0x3d,0x25,0x85,0x32,0x14,0x71,0x74,0x92,0x87,0x81,0xe0,0xe9,0x4b,0x39,0x85,0xb0,0x85,0xde,0x47,0x3d,0xce,0xe5,0xf8,0xa5,0x13,0x12,0x4b,0x71,0x3f,0xc1,0x80,0x37,0x13,0x52,0xaa,0x13,0x00,0xe5,0xfd,0xd3,0x41,0x3d,0x4e,0x05,0x5b,0x39,0x8f,0xa8,0x89,0x69,0xe5,0xb0,0x13,0x14,0x99,0xc0,0xb2,0x40,0x77,0x49,0x5a,0x23,0xad,0xc3,0x0b,0xb6,0xf4,0x18,0x91,0x52,0xad,0xfd,0xda,0x95,0x60,0xd5,0x19,0x45,0x9a,0x70,0x31,0x09,0x4a,0x88,0xe7,0x2e,0x6c,0x2c,0xf3,0x90,0xcc,0x41,0xff,0xa4,0x67,0x73,0x04,0x8b,0xdc,0x01,0x45,0x4a,0x8b,0x3d,0xad,0xf8,0x65,0xf3,0xc7,0xff,0x87,0x6c,0x40,0x22,0x5f,0xb0,0x24,0xda,0x47,0x44,0x78,0x46,0xfd,0x03,0x4b,0x0f,0x24,0xd2,0xb4,0x05,0xec,0x04,0xd5,0x4f,0x20,0x5e,0x73,0x15,0xe3,0x0b,0xac,0x49,0x57,0x1d,0xc4,0x6f,0x90,0x02,0x9b,0x3b,0xd8,0x91,0x72,0xc0,0xf5,0x98,0xbb,0xe6,0x12,0x43,0x1e,0x82,0x2d,0xde,0xaa,0x4a,0x4c,0x1f,0xd7,0xe3,0xed,0xae,0x1e,0xff,0x1f,0xe2,0x09,0x57,0x1b,0x4e,0x65,0x0a,0x0b,0xbc,0xed,0xcb,0xc3,0x72,0xfd,0x3b,0xa5,0xfb,0x5b,0xe0,0xe1,0x6a,0x87,0x7d,0xcc,0xfd,0xff,0x56,0x9f,0x90,0x00,0x8f,0xda,0x87,0xab,0xb7,0x8d,0xca,0xc0,0x8a,0x2b,0xd3,0xbb,0x89,0xa3,0xbe,0xf8,0x1c,0x09,0x78,0x37,0xd8,0xab,0x6b,0xc0,0x90,0x02,0x73,0x92,0xac,0x07,0x81,0x64,0xeb,0xb4,0xa0,0xa3,0xde,0x8e,0x23,0xbd,0x7d,0x39,0x48,0x23,0x3a,0xc3,0x9e,0x85,0x2d,0x47,0x22,0xcd,0x34,0x67,0x47,0x41,0x43,0xb4,0x2d,0x27,0x81,0xa7,0x5a,0x08,0xa0,0xcf,0x12,0x87,0x21,0x11,0x16,0xa4,0xb0,0x77,0xee,0xcb,0x41,0x3a,0x3c,0x9a,0xb3,0x14,0xfe,0x29,0xde,0x74,0x12,0x48,0xe5,0xfb,0x6a,0xa5,0xd9,0x1c,0x71,0xa4,0x33,0x3c,0x37,0x3f,0x06,0x21,0xe7,0x3a,0x37,0x48,0xca,0x3b,0xe5,0x71,0x28,0x58,0x46,0xdb,0xde,0x09,0x8c,0x32,0x21,0x80,0xa2,0x2a,0x13,0x87,0x21,0xa9,0x29,0x83,0xcf,0xe1,0x96,0x23,0x52,0xe3,0x53,0x72,0x3f,0x87,0x0b,0xc1,0x80,0x08,0x0c,0xcb,0x17,0x42,0x00,0x61,0x55,0x26,0xd1,0x01,0xa9,0xf1,0xf6,0x08,0x1f,0xa6,0x0e,0x18,0x1a,0xd0,0x38,0xc1,0x33,0x4e,0x08,0x6e,0x44,0x21,0x9f,0x00,0x4e,0xf1,0x33,0x70,0x38,0xfe,0xe5,0xd7,0x7d,0xf9,0xff,0x56,0xdc,0x26,0x34,0xcb,0x7e,0x4e,0x60,0x44,0xeb,0x0e,0x73,0x0f,0x1f,0xeb,0x78,0xf1,0xd0,0xb2,0x09,0x0c,0x9a,0xd1,0xb2,0xe6,0xf4,0x80,0x0f,0x97,0xce,0x1c,0xad,0xba,0x83,0x31,0x35,0xda,0x35,0xdd,0x76,0x19,0xf1,0x53,0x16,0xfb,0x0c,0xed,0x61,0x49,0x7e,0xcf,0x1e,0x75,0x5f,0x00,0x99,0x30,0x3d,0x67,0x65,0x9e,0x9c,0x0e,0x68,0xd1,0x78,0xf9,0x90,0x4d,0x9f,0x8c,0xe2,0xe5,0x33,0xb4,0x8e,0x7b,0xce,0xe4,0x07,0x49,0xfb,0x2c,0x5f,0xf1,0xb9,0xbe,0xf6,0x61,0x07,0xcb,0xdc,0x2e,0xec,0xd3,0xfa,0x1c,0xbf,0xee,0xf9,0xfc,0x75,0x8a,0xa6,0x71,0x60,0x68,0x9f,0xf3,0xfc,0xe0,0x89,0xff,0x7b,0x6e,0xe6,0x33,0xdc,0x1e,0x6b,0xf8,0xe0,0x8d,0xbf,0x73,0xa6,0x3f,0x44,0xfe,0xf4,0x07,0x67,0xfc,0x9d,0x37,0x1c,0x9a,0x3d,0x7c,0x44,0x74,0x2e,0x1f,0xb7,0xe7,0x93,0xe3,0x3e,0x12,0x8e,0xff,0xfb,0x45,0x9f,0xfe,0x5f,0x62,0x1f,0xff,0x27,0xc4,0xca,0x1f,0x34,0xef,0x0b,0x64,0xf8,0x3f,0xb1,0xdd,0x95,0x79,0xd0,0x4b,0xf0,0x7f,0x62,0x1f,0xbf,0xeb,0x5f,0xe6,0xe0,0xff,0x70,0x9f,0xf7,0x9d,0xd8,0xb1,0x8b,0x75,0xf6,0x6e,0x45,0xf0,0xd3,0xa5,0xf8,0xbf,0x37,0x38,0xfc,0x74,0x37,0xfc,0x96,0xf7,0x8b,0x0d,0x0c,0x83,0xe8,0xce,0xea,0x9f,0xbd,0x07,0x14,0x9f,0xa9,0xeb,0x20,0x2d,0x4f,0x07,0xfc,0x25,0x8c,0xc9,0xed,0x08,0x10,0xed,0xec,0xbe,0x1b,0x5b,0xc6,0x77,0x97,0xa5,0x86,0xf1,0xec,0xfc,0xe8,0xa1,0x80,0x4d,0xed,0xc3,0x7d,0x7b,0x4a,0x78,0x86,0x9f,0xcd,0x65,0x4b,0xd5,0x9c,0xee,0x39,0x8f,0x7e,0x64,0xbc,0xd0,0x0b,0x6e,0x57,0xf8,0x5b,0xbc,0x93,0x63,0xce,0x96,0x55,0xf8,0xad,0xcb,0x7f,0x4a,0x69,0xdb,0x9f,0xf4,0x2b,0xf0,0x82,0xcb,0xb9,0x80,0x7f,0xea,0xf0,0x5b,0x0c,0x7e,0xb6,0x8b,0xc2,0x25,0x3f,0x5d,0x75,0x39,0x79,0xf8,0xd9,0xd8,0x78,0xba,0x54,0xae,0x4a,0xc7,0xb4,0xfd,0xd7,0x7d,0xaf,0x72,0xc2,0x6f,0xb9,0x20,0xe2,0x56,0xf7,0x60,0xfc,0xc8,0x75,0x01,0x9f,0xe6,0xec,0xaa,0xfe,0x55,0xec,0xf7,0xd8,0x0f,0x09,0x4f,0xef,0x92,0xa7,0x3e,0x7e,0x06,0xce,0xc7,0xcc,0x09,0x43,0x34,0x97,0x55,0xa7,0xd9,0x38,0x3f,0x81,0x1f,0x8d,0xad,0x69,0x04,0xdc,0x55,0xe5,0x1c,0xed,0x79,0x52,0x68,0x9c,0x20,0xcf,0x52,0x90,0x53,0xfd,0x8a,0xb1,0xc0,0x2b,0x45,0x19,0xdf,0x35,0xce,0x83,0x69,0xd8,0xd5,0xb4,0xc0,0x1d,0x7f,0x2e,0xcf,0x21,0xa8,0x70,0x7f,0xc5,0x58,0x60,0x46,0x78,0xd1,0x63,0x57,0x67,0x97,0xd9,0xdf,0x76,0x7d,0xd0,0x8c,0xfe,0x5c,0xc6,0x75,0x01,0x3a,0xbc,0x5f,0x30,0x23,0xdc,0xe2,0xb7,0x0a,0x58,0x21,0xac,0xb3,0x67,0x80,0xd6,0x05,0xb7,0x73,0x0f,0xab,0x9c,0x76,0xd9,0x03,0xc5,0x2c,0x5f,0xb7,0x69,0x12,0xd5,0xcd,0x4b,0x7b,0x4a,0xdb,0x5d,0x44,0xf3,0xe1,0x0f,0xe6,0x99,0x3a,0xd5,0xed,0x8e,0x28,0xc6,0xbd,0x81,0x37,0xaa,0xb5,0xa3,0x87,0x61,0x40,0xb1,0x43,0x07,0xab,0x9d,0x77,0x75,0xf5,0xf5,0x6f,0xec,0xdd,0xe9,0xba,0xda,0x20,0x10,0x06,0xe0,0x81,0xec,0x9b,0xd1,0x44,0x63,0xe2,0x71,0xb7,0xf6,0xbb,0xff,0x3b,0x6c,0xfb,0x74,0x6f,0xb3,0x40,0x0c,0x04,0xc5,0xf7,0x77,0x4f,0xcf,0xf1,0x91,0x10,0x18,0x86,0x19,0x2d,0x5c,0x75,0x59,0x10,0xf5,0x1a,0x9d,0xf8,0x86,0xbe,0xf9,0x9e,0xef,0x7d,0x8b,0xb3,0xaf,0x56,0x5f,0x9d,0x16,0x3f,0x9d,0x56,0xdf,0xdc,0xb3,0x2c,0xbb,0x15,0xe5,0xb9,0xde,0x2e,0x07,0x53,0x57,0x0a,0x7a,0xdc,0x12,0xad,0x1c,0x7a,0x5d,0x29,0x5a,0xc5,0xaa,0x73,0x0d,0x1d,0x97,0xe4,0x05,0xca,0x13,0x77,0x1a,0xb4,0x59,0xd3,0xeb,0xba,0xa3,0x55,0xad,0x3c,0xd9,0x70,0x4f,0xd2,0x2e,0xea,0xf3,0x76,0x22,0xeb,0x52,0x02,0x0e,0x68,0xc3,0x34,0xdc,0xdc,0x3d,0x91,0xa4,0x92,0x41,0x79,0x19,0x8a,0x43,0xd7,0x84,0xf8,0xb2,0x7c,0xb4,0xd9,0xd1,0x34,0x36,0x1c,0xdd,0x8e,0x24,0x25,0xcc,0xd1,0xed,0xa8,0x36,0x3b,0xea,0x44,0x2f,0xcb,0x93,0x99,0x9f,0xe5,0xc5,0xe8,0xc6,0x6b,0x92,0xe1,0xe8,0xc8,0xdc,0x2d,0xad,0x3b,0x0d,0x60,0x8a,0x53,0xa1,0x13,0x74,0xf3,0xdc,0x89,0xfe,0x23,0x87,0xa6,0xe2,0xda,0x76,0x1a,0x10,0x2a,0x4f,0x83,0x73,0xd0,0xcd,0x97,0x5a,0xac,0x6a,0xa9,0x43,0xd5,0x98,0xd3,0x00,0x47,0x8b,0x12,0xad,0xce,0x44,0xa4,0x63,0x19,0xb0,0x90,0x5c,0x00,0xaa,0x8f,0xd4,0x46,0x96,0x25,0x05,0xdd,0xd1,0x8a,0x26,0x14,0xa3,0x47,0x36,0xc1,0x02,0x70,0x41,0x13,0x4a,0x2c,0xdb,0x07,0x2e,0x7a,0xba,0x44,0xe8,0xa8,0xe2,0xc3,0x4a,0x12,0xe0,0x3a,0xe8,0xe6,0xd0,0x94,0x4e,0x06,0x75,0xc1,0xd3,0x21,0xd0,0x11,0xfa,0xfc,0x40,0x37,0xbe,0x79,0xb0,0x9a,0x7b,0x1e,0xd2,0x94,0x62,0xcb,0xb2,0xc2,0x1c,0xb4,0x09,0x68,0x52,0xdb,0x06,0xdd,0xbc,0x25,0x0d,0xa9,0x86,0xa6,0x10,0xf5,0xf9,0x31,0x15,0xbd,0xa8,0x5c,0xcb,0x85,0xd8,0x94,0x3d,0x12,0xc4,0xcd,0xd0,0x63,0x45,0xd3,0x72,0xbb,0xf6,0x2b,0x2f,0x4a,0x53,0xab,0x97,0x0c,0x3d,0x12,0xea,0x55,0xb0,0xde,0x9f,0x9d,0x5a,0x6e,0xd5,0x79,0x60,0xad,0x6b,0xc9,0x73,0x40,0x8f,0xd5,0xe8,0x6d,0xa4,0x43,0x93,0x73,0x3a,0x96,0xc5,0xaf,0xa9,0x40,0xab,0x90,0x26,0x17,0x8d,0x2c,0xc2,0xb1,0xf4,0x94,0x2c,0x00,0xbb,0xed,0xad,0x0a,0x04,0xc4,0x68,0x45,0xd3,0xdb,0x36,0xe3,0x56,0x72,0x91,0xc8,0x8f,0x69,0x98,0xab,0x5e,0xb4,0x52,0xd4,0x55,0xdf,0x7c,0x77,0x66,0x63,0xce,0x85,0x02,0x40,0x73,0x19,0xf2,0xab,0x55,0xd7,0xc3,0x2a,0x8d,0x2b,0x9e,0x18,0x3d,0x9a,0x50,0x7e,0xe9,0x90,0x90,0x0a,0x99,0x55,0xa5,0xa2,0x3e,0xeb,0xdc,0xf3,0x54,0xe8,0xb1,0x73,0xe9,0x7f,0xab,0x19,0x6a,0x90,0x97,0x56,0x45,0x82,0x7c,0xad,0xa7,0xdf,0xbe,0x64,0x52,0x77,0x0c,0x99,0x05,0xa0,0xda,0xf3,0xd1,0x4f,0xf4,0x92,0x1c,0xad,0x1f,0x76,0xe9,0xa1,0x47,0x20,0x15,0x00,0x60,0x25,0x29,0x62,0x55,0x4a,0x48,0xa3,0x77,0xba,0x3b,0xaf,0x25,0x0a,0xf2,0x9d,0x39,0x7a,0xdc,0x49,0x15,0x6e,0x53,0x28,0x90,0x69,0x4e,0x81,0x8c,0x21,0x1c,0x10,0x0a,0x1b,0xf4,0xa8,0x48,0x19,0xcf,0xa2,0x3a,0x31,0xae,0xf6,0xb3,0xcf,0x15,0x04,0xb3,0x03,0xb6,0x1e,0x7a,0xf8,0xa4,0x8e,0x63,0x51,0x4e,0x50,0x28,0x73,0x29,0x40,0x47,0x8b,0x9f,0x58,0x28,0x03,0x00,0x8e,0x4b,0xea,0x44,0x16,0xc5,0x82,0xcf,0x33,0xdc,0x86,0xf6,0xd1,0x83,0x1d,0x45,0x22,0xc7,0x4d,0x48,0x0a,0x05,0x16,0x5d,0x0e,0x2a,0xd1,0x8a,0x54,0x10,0x7b,0xb6,0x59,0x39,0x3c,0x4a,0xd6,0x67,0x6a,0xf5,0x14,0x57,0x65,0xcc,0x72,0xd4,0x55,0x10,0x43,0x7c,0x75,0xc7,0xd3,0xa1,0x00,0x30,0x2b,0x48,0xa9,0x05,0x5a,0xbd,0x46,0xb3,0x30,0xa1,0x45,0x79,0x43,0x1d,0xb4,0x6c,0x06,0xf9,0x99,0x12,0xf4,0xb9,0x90,0x5a,0x57,0x8b,0xaa,0x84,0x64,0xf3,0x2c,0x78,0x8f,0x0c,0x3d,0xf2,0x64,0xde,0xf2,0xfd,0x17,0xb4,0x7a,0xb9,0x96,0x61,0xdd,0x9b,0xb2,0x1d,0x75,0x9b,0xbd,0x47,0x8d,0x4f,0xaa,0x65,0x16,0x1d,0x07,0x9e,0xe6,0x4a,0x7f,0xaa,0x30,0x92,0xe3,0x92,0x6a,0xb1,0x45,0x89,0xe1,0x8b,0xd9,0x2e,0xc2,0xed,0x31,0x8a,0xb7,0x25,0xe5,0x8e,0x16,0x9d,0x07,0x1f,0xe6,0x0b,0x7b,0x3b,0x18,0x81,0xd7,0xa4,0x5e,0x69,0x51,0xd7,0x80,0x04,0x6d,0xf6,0xa4,0xc1,0xd6,0x83,0x34,0x56,0x92,0x06,0xa9,0xf5,0x03,0x20,0x20,0x1d,0xc2,0x1c,0x92,0x58,0x4c,0xad,0xde,0x03,0xe0,0x29,0x07,0x00,0xd5,0x1c,0x72,0x32,0xea,0xf0,0x1e,0x00,0x4f,0x39,0x00,0x28,0x5d,0x43,0xc6,0x8a,0x3a,0xbc,0x07,0xc0,0x93,0x0e,0x00,0x2a,0x98,0x89,0xfd,0x1b,0xcf,0xef,0x01,0x40,0xba,0xdc,0x18,0x44,0x7d,0xa6,0x6e,0xef,0x01,0xf0,0xac,0x03,0x80,0xee,0x10,0xb4,0xa7,0x1e,0xef,0x01,0xf0,0xb4,0x03,0x80,0xae,0xe6,0xb5,0x6f,0x7d,0xaf,0x01,0x7c,0xd2,0xa8,0x32,0x24,0x00,0xfc,0x0e,0x04,0xcd,0x55,0x13,0x2d,0x31,0x23,0x00,0xfc,0x5b,0x61,0xd1,0x00,0xa8,0x0c,0x18,0x00,0x14,0x60,0x40,0x13,0x92,0x4e,0x37,0x8b,0xaa,0xc5,0x9e,0x8c,0x28,0x86,0x90,0xe3,0x27,0x23,0xea,0xb4,0xda,0x74,0x1a,0xa8,0x38,0x1f,0x40,0x3e,0x4b,0xd4,0x84,0x86,0x1d,0x36,0xe5,0x03,0x64,0xf3,0xa7,0xc0,0xbb,0x11,0xfe,0x64,0x40,0xfb,0xe6,0x95,0x45,0x95,0x02,0xe3,0xd9,0xbb,0xa4,0x6d,0x1d,0xd3,0xc2,0x00,0xb4,0xb0,0x28,0x27,0xb0,0x40,0x2b,0xd2,0xa6,0x6e,0x20,0x26,0x72,0x49,0x97,0x04,0xad,0xe8,0x15,0xa5,0x33,0x0f,0xf6,0x94,0x43,0x94,0xb3,0x25,0x4d,0x02,0x8b,0xee,0x05,0x6c,0xe6,0x4d,0x80,0x8d,0x19,0xc4,0x35,0x35,0xe9,0x11,0xcd,0xfe,0x5e,0xd4,0x67,0x3b,0xeb,0x8e,0x67,0x05,0x29,0xbc,0x20,0x2d,0x1c,0xb4,0x69,0xe8,0x25,0xb1,0x19,0x83,0x5e,0x15,0x24,0xb1,0x0b,0x0d,0x79,0x57,0x8a,0x94,0xd4,0xcc,0x16,0x79,0x71,0x7d,0xfc,0xc3,0x94,0xed,0xe0,0xfc,0xfb,0x10,0x8d,0x9c,0xb9,0xca,0xa1,0x6c,0x1d,0x8c,0xe1,0xbb,0xa4,0xda,0xc6,0x80,0x50,0x84,0x3e,0xfb,0x99,0x8e,0x03,0xd3,0x1c,0xe3,0x38,0x21,0x29,0x56,0x98,0x10,0x8d,0xd4,0xa6,0x9a,0x27,0x16,0x9c,0x31,0xfc,0x66,0xd8,0x52,0xf0,0x6e,0xd1,0x59,0x10,0xd1,0x4a,0xa6,0x18,0xc2,0xfc,0x17,0xc3,0x74,0x2c,0x05,0x2b,0xb4,0x2a,0xe9,0x25,0xc5,0x33,0xc4,0xbd,0x97,0x3e,0x1e,0x13,0x90,0x4a,0xbe,0x55,0xb5,0x82,0x53,0xfd,0xf3,0x5d,0xed,0xe1,0x51,0x1f,0x21,0xa9,0xe3,0x59,0x14,0x08,0x24,0x5a,0x6a,0x2f,0x8b,0x19,0x73,0x0c,0xf0,0x86,0xff,0x49,0x5e,0x90,0x32,0xcc,0xa6,0x38,0x10,0x11,0xd7,0x3c,0xc9,0x56,0x18,0xb2,0x0b,0x69,0xe3,0x61,0x00,0x3b,0x91,0x22,0xe9,0xfc,0x59,0xa9,0x5a,0x7d,0x68,0xdd,0x06,0x84,0x11,0x86,0x44,0x4b,0xb1,0x28,0x81,0xbf,0x24,0x25,0x2e,0x56,0x85,0x01,0xba,0xca,0x85,0x63,0x49,0x2a,0x94,0x39,0x86,0xf8,0xc2,0x69,0x22,0x4d,0x4a,0x2a,0x04,0x68,0x75,0xa7,0x17,0x75,0x45,0xab,0x23,0x29,0x70,0x65,0x18,0x92,0xd0,0x4f,0xfb,0x99,0xf6,0x83,0x9e,0x55,0xbb,0x40,0xa2,0x62,0xe8,0x22,0x9e,0xd6,0xdd,0x5f,0x25,0x17,0x2c,0xf0,0xb7,0x34,0xb5,0x25,0xac,0xda,0x04,0x68,0x6c,0x97,0x7e,0xcc,0x65,0x1f,0xe9,0x13,0xa0,0x7f,0x37,0x70,0x83,0x09,0x79,0xb2,0x22,0x9e,0x6c,0xdb,0x5b,0x61,0xd0,0xfa,0x38,0x22,0x5f,0xa4,0xa2,0x69,0x25,0x98,0xfd,0xb6,0x9c,0x66,0x81,0x8e,0x45,0x40,0xed,0x60,0x50,0x9e,0x8e,0x3a,0x32,0x72,0x6a,0x0d,0xcf,0x03,0x56,0xf4,0xb2,0x56,0x1a,0x1a,0x64,0x5c,0xd8,0xc8,0x63,0xbe,0x70,0x87,0x41,0x6c,0x41,0xd3,0xa9,0xd1,0xee,0x4c,0x2f,0xeb,0x0c,0xd5,0x77,0x03,0xc2,0x48,0xea,0xa0,0x5f,0xfe,0xd6,0x80,0x73,0x9e,0x70,0x53,0x64,0x51,0x42,0xe0,0x0f,0x5c,0xf1,0x98,0xbf,0xac,0x31,0x2c,0xa1,0x2e,0x09,0x86,0xb1,0x2b,0x4d,0xc4,0xb1,0xac,0x75,0x74,0xcf,0xe9,0x57,0xa5,0xf1,0xf1,0x67,0x2b,0xea,0xb6,0x62,0x18,0xf6,0x51,0xd3,0x14,0x36,0x66,0xdc,0x4e,0xd4,0x6b,0x05,0x85,0x1d,0x32,0x2e,0x1c,0xc3,0xf8,0x91,0xfa,0x14,0x1c,0xc3,0x58,0xe5,0xd2,0xe3,0x16,0xf6,0x2d,0x01,0xba,0x47,0xfd,0x8d,0x1e,0x96,0x3a,0x10,0xb0,0xdb,0x50,0xbf,0xcd,0x0e,0x02,0xbc,0x82,0x1e,0xd6,0xc0,0xa2,0x76,0x31,0xbf,0x78,0x8a,0xde,0x7b,0x6e,0xc5,0x20,0x60,0xef,0xd2,0x10,0x77,0x0f,0x11,0xc1,0x96,0x1e,0x13,0xc3,0xba,0x28,0xc0,0x37,0x07,0x28,0xb9,0x1f,0x14,0x37,0x10,0xf1,0x89,0x44,0x9c,0x20,0x62,0x7d,0xa5,0x87,0x38,0xb0,0x2a,0x1f,0xf0,0xa7,0x52,0xc5,0xb8,0x3f,0x47,0x10,0xc1,0x6f,0x24,0xe6,0xc8,0x21,0xc2,0xbb,0x3d,0x76,0x2e,0x62,0x51,0xbf,0xa8,0xe1,0x0a,0x1d,0x6c,0x43,0x63,0x2d,0x13,0x08,0xd9,0x89,0xff,0x8a,0x8d,0x03,0x21,0xd1,0x99,0xc6,0x8a,0x0c,0xb8,0x9b,0x3e,0x8b,0x64,0xea,0x29,0xe0,0xca,0x21,0xe4,0xb3,0x2b,0xf7,0x67,0x8a,0x09,0x36,0x34,0xca,0x0d,0x76,0xbe,0x01,0x88,0x52,0x74,0x28,0x68,0x8c,0xac,0x81,0x10,0x76,0x27,0x39,0xf1,0x1a,0x42,0x58,0x10,0xd2,0x08,0x1e,0x2c,0x0c,0x03,0x7e,0xb7,0xc3,0x74,0xf1,0xe0,0xd8,0x83,0x18,0x2f,0x25,0x59,0xf5,0x0e,0x62,0x58,0xb5,0x1d,0x13,0x03,0xb0,0xaa,0x6f,0xf8,0x9f,0xae,0x93,0x15,0x68,0x8e,0x77,0xe8,0x30,0x49,0x4e,0x9f,0xfb,0x19,0x82,0xd8,0x21,0x94,0x5f,0x01,0x5a,0x54,0x1d,0xea,0x6f,0x5b,0x86,0x49,0xa2,0x41,0x17,0x4f,0xf9,0xf5,0x9e,0x98,0x43,0x10,0x0b,0x6a,0xd9,0xf6,0x15,0x36,0xdd,0x0b,0x17,0x4a,0x0d,0x05,0xf8,0x86,0x44,0x2d,0xaf,0x39,0x44,0xed,0xea,0x09,0x0f,0x17,0xba,0xf9,0x37,0x12,0xe4,0x7e,0xc0,0xda,0x25,0xe0,0x37,0x67,0x74,0xc9,0x6b,0x12,0x72,0x3e,0xac,0x21,0x2c,0xa1,0x47,0xac,0x18,0x84,0x35,0x8b,0xad,0xf0,0xf7,0x6f,0x65,0x18,0xf8,0xa7,0xe8,0xa1,0x11,0xe0,0xde,0x1d,0x88,0xcb,0x8f,0xf4,0x98,0xd4,0x83,0x38,0xb6,0x8f,0x05,0x8a,0x15,0x98,0x52,0xa4,0x72,0x36,0x25,0x3a,0xf1,0x8c,0xfa,0xdd,0xf6,0x0c,0x1d,0x14,0xa5,0xf2,0xba,0x09,0x64,0xf0,0xcf,0xc5,0xe8,0x7c,0xd5,0xfc,0x25,0x7b,0x46,0xb7,0x88,0xc6,0x1d,0xb2,0xb8,0xf1,0x67,0x0e,0x19,0x3c,0xa3,0x29,0x14,0x1e,0xa4,0xf0,0xfd,0xbd,0xeb,0x43,0x6c,0x3e,0x9b,0x53,0xa5,0x76,0x46,0x25,0x7a,0xb0,0x64,0x43,0x2d,0xd2,0x6b,0xc4,0x20,0xc7,0x0f,0x69,0x1a,0x6e,0x02,0x59,0x4e,0x92,0xd5,0xf4,0xaf,0x5b,0xc0,0x80,0xf7,0x04,0x30,0x7c,0x13,0x67,0xb7,0x28,0x96,0xf4,0x8b,0x9b,0x66,0x87,0x0f,0x06,0x59,0x3c,0xa3,0xe9,0x14,0x1e,0xe4,0xf1,0x8f,0x60,0x91,0x15,0x69,0xbd,0xdd,0x6e,0xce,0xc5,0xfd,0x10,0x31,0x33,0x3a,0xd5,0x99,0x20,0x64,0x18,0x92,0x3b,0x7e,0x90,0x04,0x7e,0xe4,0x70,0x8c,0xe2,0x87,0x34,0x25,0xf7,0x80,0xa9,0x58,0x1d,0x03,0xf8,0x69,0x01,0xb5,0xf2,0x98,0xa6,0x96,0x3a,0x50,0x8a,0x59,0x10,0x04,0xfc,0xc3,0x0e,0x2a,0x25,0x4b,0x52,0xe0,0xc2,0x21,0xcb,0xc4,0x56,0x85,0x66,0x48,0x19,0x94,0x71,0x52,0x52,0x63,0x9b,0x60,0x0a,0xf3,0xf7,0x4d,0x30,0xc1,0x02,0x8a,0xf0,0x15,0x75,0x98,0x76,0x31,0xf8,0x7e,0x01,0x3c,0xe8,0x03,0x4a,0x04,0x21,0x29,0x95,0xe5,0x50,0xe1,0x42,0xd6,0x09,0x39,0x64,0x4c,0x96,0xa3,0xa5,0x26,0xff,0xd8,0xe8,0x62,0x74,0x86,0x2a,0x19,0x26,0xe6,0xc5,0xa4,0x43,0x18,0x40,0x82,0x71,0xbd,0x2a,0xcd,0x11,0x03,0x78,0x96,0x97,0xff,0xdf,0xca,0x08,0xe2,0x4c,0xeb,0x55,0x69,0x90,0x2b,0xa6,0xc3,0x4f,0x2e,0xf5,0x31,0x78,0x08,0x34,0x2f,0xd9,0x23,0x4c,0xc8,0x0a,0x13,0xe1,0x0b,0x97,0x34,0x2b,0x22,0x4c,0x23,0xaf,0xc9,0x5e,0xd7,0x89,0xbe,0xfe,0x25,0x89,0x30,0x72,0x08,0x78,0xf6,0x3e,0xff,0x1d,0xa5,0x79,0x64,0xe5,0x27,0x97,0x66,0x72,0x4e,0x18,0x1e,0xf4,0xb1,0x24,0xbb,0x95,0x1c,0x0f,0xd9,0x65,0x34,0xa7,0x50,0x30,0x3b,0xcd,0xe2,0x34,0x70,0x89,0xc4,0x4b,0x79,0xd1,0x91,0xe6,0xb6,0xbc,0x7a,0x18,0x8b,0x5b,0x91,0x04,0x3a,0xe8,0xc4,0x30,0x4a,0xbe,0x30,0xe4,0xf5,0x59,0x06,0xcc,0x84,0x23,0xeb,0xe7,0xb5,0x89,0x20,0xcf,0x37,0xe9,0xe9,0x71,0x57,0x0e,0x64,0x35,0x26,0x7d,0x80,0xb9,0xc5,0x1e,0xa4,0x38,0x57,0xe3,0x1e,0x9e,0xcd,0xc9,0x81,0x04,0x6e,0x4d,0x02,0xa0,0xa0,0x6c,0xf7,0xcc,0xdf,0xfe,0x77,0xe1,0x49,0x34,0x75,0xcd,0xbb,0xd8,0x19,0xfc,0xed,0x75,0xf4,0x19,0x06,0xe5,0xc1,0xdd,0xd0,0x6f,0xff,0x3b,0x37,0x4e,0x3c,0x91,0xcc,0xf1,0xb7,0x36,0xcb,0x8b,0xbf,0x46,0xb7,0xdc,0x3f,0x3d,0xc5,0xa9,0x79,0x18,0x57,0x11,0x47,0x07,0xef,0x30,0xff,0xc6,0xc5,0x68,0xc5,0x27,0xbf,0xc1,0xbf,0x98,0xe7,0x2f,0x6e,0xcf,0x75,0x62,0xb2,0x89,0x4f,0x49,0xe4,0xad,0xf1,0x1b,0x77,0x82,0x4f,0x47,0xdb,0xc3,0x3e,0x62,0xdc,0x34,0x5e,0x2d,0x0e,0x41,0xb0,0x0f,0x92,0x6a,0x71,0xcd,0xca,0xe7,0xfa,0xea,0xff,0xe2,0x6e,0xeb,0x73,0x59,0x94,0x65,0xfd,0xc4,0x9f,0xe1,0xed,0xed,0xed,0xed,0x4b,0x7b,0x70,0x48,0x00,0x00,0x00,0x00,0x20,0xe8,0xff,0x6b,0x5f,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x01,0x5d,0x8d,0xc7,0xed,0xe2,0x96,0xee,0xdc,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
+
+static const unsigned char FILE_3[] = {0x7b,0x0a,0x20,0x20,0x22,0x73,0x68,0x6f,0x72,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x22,0x3a,0x20,0x22,0x52,0x65,0x61,0x63,0x74,0x20,0x41,0x70,0x70,0x22,0x2c,0x0a,0x20,0x20,0x22,0x6e,0x61,0x6d,0x65,0x22,0x3a,0x20,0x22,0x43,0x72,0x65,0x61,0x74,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x41,0x70,0x70,0x20,0x53,0x61,0x6d,0x70,0x6c,0x65,0x22,0x2c,0x0a,0x20,0x20,0x22,0x69,0x63,0x6f,0x6e,0x73,0x22,0x3a,0x20,0x5b,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x72,0x63,0x22,0x3a,0x20,0x22,0x66,0x61,0x76,0x69,0x63,0x6f,0x6e,0x2e,0x69,0x63,0x6f,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x69,0x7a,0x65,0x73,0x22,0x3a,0x20,0x22,0x36,0x34,0x78,0x36,0x34,0x20,0x33,0x32,0x78,0x33,0x32,0x20,0x32,0x34,0x78,0x32,0x34,0x20,0x31,0x36,0x78,0x31,0x36,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x3a,0x20,0x22,0x69,0x6d,0x61,0x67,0x65,0x2f,0x78,0x2d,0x69,0x63,0x6f,0x6e,0x22,0x0a,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x72,0x63,0x22,0x3a,0x20,0x22,0x6c,0x6f,0x67,0x6f,0x31,0x39,0x32,0x2e,0x70,0x6e,0x67,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x3a,0x20,0x22,0x69,0x6d,0x61,0x67,0x65,0x2f,0x70,0x6e,0x67,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x69,0x7a,0x65,0x73,0x22,0x3a,0x20,0x22,0x31,0x39,0x32,0x78,0x31,0x39,0x32,0x22,0x0a,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x72,0x63,0x22,0x3a,0x20,0x22,0x6c,0x6f,0x67,0x6f,0x35,0x31,0x32,0x2e,0x70,0x6e,0x67,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x3a,0x20,0x22,0x69,0x6d,0x61,0x67,0x65,0x2f,0x70,0x6e,0x67,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x73,0x69,0x7a,0x65,0x73,0x22,0x3a,0x20,0x22,0x35,0x31,0x32,0x78,0x35,0x31,0x32,0x22,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x5d,0x2c,0x0a,0x20,0x20,0x22,0x73,0x74,0x61,0x72,0x74,0x5f,0x75,0x72,0x6c,0x22,0x3a,0x20,0x22,0x2e,0x22,0x2c,0x0a,0x20,0x20,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x22,0x3a,0x20,0x22,0x73,0x74,0x61,0x6e,0x64,0x61,0x6c,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x20,0x20,0x22,0x74,0x68,0x65,0x6d,0x65,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x22,0x3a,0x20,0x22,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x20,0x20,0x22,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x22,0x3a,0x20,0x22,0x23,0x66,0x66,0x66,0x66,0x66,0x66,0x22,0x0a,0x7d,0x0a};
+
+static const unsigned char FILE_4[] = {0x23,0x20,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x72,0x6f,0x62,0x6f,0x74,0x73,0x74,0x78,0x74,0x2e,0x6f,0x72,0x67,0x2f,0x72,0x6f,0x62,0x6f,0x74,0x73,0x74,0x78,0x74,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x55,0x73,0x65,0x72,0x2d,0x61,0x67,0x65,0x6e,0x74,0x3a,0x20,0x2a,0x0a,0x44,0x69,0x73,0x61,0x6c,0x6c,0x6f,0x77,0x3a,0x0a};
+
+static const unsigned char FILE_5[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x3c,0x68,0x65,0x61,0x64,0x3e,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x2f,0x3e,0x3c,0x6c,0x69,0x6e,0x6b,0x20,0x72,0x65,0x6c,0x3d,0x22,0x69,0x63,0x6f,0x6e,0x22,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x66,0x61,0x76,0x69,0x63,0x6f,0x6e,0x2e,0x69,0x63,0x6f,0x22,0x2f,0x3e,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x2f,0x3e,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x74,0x68,0x65,0x6d,0x65,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x22,0x2f,0x3e,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x57,0x65,0x62,0x20,0x73,0x69,0x74,0x65,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x2d,0x72,0x65,0x61,0x63,0x74,0x2d,0x61,0x70,0x70,0x22,0x2f,0x3e,0x3c,0x6c,0x69,0x6e,0x6b,0x20,0x72,0x65,0x6c,0x3d,0x22,0x61,0x70,0x70,0x6c,0x65,0x2d,0x74,0x6f,0x75,0x63,0x68,0x2d,0x69,0x63,0x6f,0x6e,0x22,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x6c,0x6f,0x67,0x6f,0x31,0x39,0x32,0x2e,0x70,0x6e,0x67,0x22,0x2f,0x3e,0x3c,0x6c,0x69,0x6e,0x6b,0x20,0x72,0x65,0x6c,0x3d,0x22,0x6d,0x61,0x6e,0x69,0x66,0x65,0x73,0x74,0x22,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x6d,0x61,0x6e,0x69,0x66,0x65,0x73,0x74,0x2e,0x6a,0x73,0x6f,0x6e,0x22,0x2f,0x3e,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x52,0x65,0x61,0x63,0x74,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x64,0x65,0x66,0x65,0x72,0x3d,0x22,0x64,0x65,0x66,0x65,0x72,0x22,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x3c,0x6c,0x69,0x6e,0x6b,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x63,0x73,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x22,0x20,0x72,0x65,0x6c,0x3d,0x22,0x73,0x74,0x79,0x6c,0x65,0x73,0x68,0x65,0x65,0x74,0x22,0x3e,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x6e,0x6f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x20,0x4a,0x61,0x76,0x61,0x53,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x6f,0x20,0x72,0x75,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x70,0x70,0x2e,0x3c,0x2f,0x6e,0x6f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x3c,0x64,0x69,0x76,0x20,0x69,0x64,0x3d,0x22,0x72,0x6f,0x6f,0x74,0x22,0x3e,0x3c,0x2f,0x64,0x69,0x76,0x3e,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e};
+
+static const unsigned char FILE_6[] = {0x7b,0x0a,0x20,0x20,0x22,0x66,0x69,0x6c,0x65,0x73,0x22,0x3a,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x22,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x73,0x73,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x63,0x73,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x6d,0x61,0x69,0x6e,0x2e,0x6a,0x73,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3a,0x20,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x2e,0x6d,0x61,0x70,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x63,0x73,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x2e,0x6d,0x61,0x70,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70,0x22,0x3a,0x20,0x22,0x2f,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70,0x22,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x22,0x65,0x6e,0x74,0x72,0x79,0x70,0x6f,0x69,0x6e,0x74,0x73,0x22,0x3a,0x20,0x5b,0x0a,0x20,0x20,0x20,0x20,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x63,0x73,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x22,0x0a,0x20,0x20,0x5d,0x0a,0x7d};
+
+static const unsigned char FILE_7[] = {0x2f,0x2a,0x21,0x20,0x46,0x6f,0x72,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x69,0x6e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x65,0x61,0x73,0x65,0x20,0x73,0x65,0x65,0x20,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x2e,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x2e,0x74,0x78,0x74,0x20,0x2a,0x2f,0x0a,0x28,0x28,0x29,0x3d,0x3e,0x7b,0x22,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x22,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x37,0x33,0x30,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x28,0x34,0x33,0x29,0x2c,0x6c,0x3d,0x74,0x28,0x38,0x35,0x33,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x72,0x65,0x61,0x63,0x74,0x6a,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x64,0x6f,0x63,0x73,0x2f,0x65,0x72,0x72,0x6f,0x72,0x2d,0x64,0x65,0x63,0x6f,0x64,0x65,0x72,0x2e,0x68,0x74,0x6d,0x6c,0x3f,0x69,0x6e,0x76,0x61,0x72,0x69,0x61,0x6e,0x74,0x3d,0x22,0x2b,0x65,0x2c,0x74,0x3d,0x31,0x3b,0x74,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x6e,0x2b,0x3d,0x22,0x26,0x61,0x72,0x67,0x73,0x5b,0x5d,0x3d,0x22,0x2b,0x65,0x6e,0x63,0x6f,0x64,0x65,0x55,0x52,0x49,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x28,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x74,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x4d,0x69,0x6e,0x69,0x66,0x69,0x65,0x64,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x23,0x22,0x2b,0x65,0x2b,0x22,0x3b,0x20,0x76,0x69,0x73,0x69,0x74,0x20,0x22,0x2b,0x6e,0x2b,0x22,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x66,0x75,0x6c,0x6c,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6f,0x72,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x6f,0x6e,0x2d,0x6d,0x69,0x6e,0x69,0x66,0x69,0x65,0x64,0x20,0x64,0x65,0x76,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x66,0x6f,0x72,0x20,0x66,0x75,0x6c,0x6c,0x20,0x65,0x72,0x72,0x6f,0x72,0x73,0x20,0x61,0x6e,0x64,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x68,0x65,0x6c,0x70,0x66,0x75,0x6c,0x20,0x77,0x61,0x72,0x6e,0x69,0x6e,0x67,0x73,0x2e,0x22,0x7d,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x2c,0x75,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x73,0x28,0x65,0x2b,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x75,0x5b,0x65,0x5d,0x3d,0x6e,0x2c,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x6f,0x2e,0x61,0x64,0x64,0x28,0x6e,0x5b,0x65,0x5d,0x29,0x7d,0x76,0x61,0x72,0x20,0x63,0x3d,0x21,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x2c,0x66,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x64,0x3d,0x2f,0x5e,0x5b,0x3a,0x41,0x2d,0x5a,0x5f,0x61,0x2d,0x7a,0x5c,0x75,0x30,0x30,0x43,0x30,0x2d,0x5c,0x75,0x30,0x30,0x44,0x36,0x5c,0x75,0x30,0x30,0x44,0x38,0x2d,0x5c,0x75,0x30,0x30,0x46,0x36,0x5c,0x75,0x30,0x30,0x46,0x38,0x2d,0x5c,0x75,0x30,0x32,0x46,0x46,0x5c,0x75,0x30,0x33,0x37,0x30,0x2d,0x5c,0x75,0x30,0x33,0x37,0x44,0x5c,0x75,0x30,0x33,0x37,0x46,0x2d,0x5c,0x75,0x31,0x46,0x46,0x46,0x5c,0x75,0x32,0x30,0x30,0x43,0x2d,0x5c,0x75,0x32,0x30,0x30,0x44,0x5c,0x75,0x32,0x30,0x37,0x30,0x2d,0x5c,0x75,0x32,0x31,0x38,0x46,0x5c,0x75,0x32,0x43,0x30,0x30,0x2d,0x5c,0x75,0x32,0x46,0x45,0x46,0x5c,0x75,0x33,0x30,0x30,0x31,0x2d,0x5c,0x75,0x44,0x37,0x46,0x46,0x5c,0x75,0x46,0x39,0x30,0x30,0x2d,0x5c,0x75,0x46,0x44,0x43,0x46,0x5c,0x75,0x46,0x44,0x46,0x30,0x2d,0x5c,0x75,0x46,0x46,0x46,0x44,0x5d,0x5b,0x3a,0x41,0x2d,0x5a,0x5f,0x61,0x2d,0x7a,0x5c,0x75,0x30,0x30,0x43,0x30,0x2d,0x5c,0x75,0x30,0x30,0x44,0x36,0x5c,0x75,0x30,0x30,0x44,0x38,0x2d,0x5c,0x75,0x30,0x30,0x46,0x36,0x5c,0x75,0x30,0x30,0x46,0x38,0x2d,0x5c,0x75,0x30,0x32,0x46,0x46,0x5c,0x75,0x30,0x33,0x37,0x30,0x2d,0x5c,0x75,0x30,0x33,0x37,0x44,0x5c,0x75,0x30,0x33,0x37,0x46,0x2d,0x5c,0x75,0x31,0x46,0x46,0x46,0x5c,0x75,0x32,0x30,0x30,0x43,0x2d,0x5c,0x75,0x32,0x30,0x30,0x44,0x5c,0x75,0x32,0x30,0x37,0x30,0x2d,0x5c,0x75,0x32,0x31,0x38,0x46,0x5c,0x75,0x32,0x43,0x30,0x30,0x2d,0x5c,0x75,0x32,0x46,0x45,0x46,0x5c,0x75,0x33,0x30,0x30,0x31,0x2d,0x5c,0x75,0x44,0x37,0x46,0x46,0x5c,0x75,0x46,0x39,0x30,0x30,0x2d,0x5c,0x75,0x46,0x44,0x43,0x46,0x5c,0x75,0x46,0x44,0x46,0x30,0x2d,0x5c,0x75,0x46,0x46,0x46,0x44,0x5c,0x2d,0x2e,0x30,0x2d,0x39,0x5c,0x75,0x30,0x30,0x42,0x37,0x5c,0x75,0x30,0x33,0x30,0x30,0x2d,0x5c,0x75,0x30,0x33,0x36,0x46,0x5c,0x75,0x32,0x30,0x33,0x46,0x2d,0x5c,0x75,0x32,0x30,0x34,0x30,0x5d,0x2a,0x24,0x2f,0x2c,0x70,0x3d,0x7b,0x7d,0x2c,0x6d,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x61,0x63,0x63,0x65,0x70,0x74,0x73,0x42,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x73,0x3d,0x32,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x3d,0x72,0x2c,0x74,0x68,0x69,0x73,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x3d,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x73,0x74,0x55,0x73,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3d,0x74,0x2c,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x3d,0x65,0x2c,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x73,0x61,0x6e,0x69,0x74,0x69,0x7a,0x65,0x55,0x52,0x4c,0x3d,0x61,0x2c,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x6d,0x70,0x74,0x79,0x53,0x74,0x72,0x69,0x6e,0x67,0x3d,0x6f,0x7d,0x76,0x61,0x72,0x20,0x76,0x3d,0x7b,0x7d,0x3b,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x20,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x20,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x20,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x20,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x20,0x73,0x74,0x79,0x6c,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x30,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x5b,0x22,0x61,0x63,0x63,0x65,0x70,0x74,0x43,0x68,0x61,0x72,0x73,0x65,0x74,0x22,0x2c,0x22,0x61,0x63,0x63,0x65,0x70,0x74,0x2d,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x22,0x5d,0x2c,0x5b,0x22,0x63,0x6c,0x61,0x73,0x73,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x63,0x6c,0x61,0x73,0x73,0x22,0x5d,0x2c,0x5b,0x22,0x68,0x74,0x6d,0x6c,0x46,0x6f,0x72,0x22,0x2c,0x22,0x66,0x6f,0x72,0x22,0x5d,0x2c,0x5b,0x22,0x68,0x74,0x74,0x70,0x45,0x71,0x75,0x69,0x76,0x22,0x2c,0x22,0x68,0x74,0x74,0x70,0x2d,0x65,0x71,0x75,0x69,0x76,0x22,0x5d,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x5b,0x30,0x5d,0x3b,0x76,0x5b,0x6e,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x6e,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x5b,0x31,0x5d,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x64,0x72,0x61,0x67,0x67,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x73,0x70,0x65,0x6c,0x6c,0x43,0x68,0x65,0x63,0x6b,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x32,0x2c,0x21,0x31,0x2c,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x61,0x75,0x74,0x6f,0x52,0x65,0x76,0x65,0x72,0x73,0x65,0x22,0x2c,0x22,0x65,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x52,0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x70,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x41,0x6c,0x70,0x68,0x61,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x32,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x22,0x61,0x6c,0x6c,0x6f,0x77,0x46,0x75,0x6c,0x6c,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x20,0x61,0x75,0x74,0x6f,0x50,0x6c,0x61,0x79,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x64,0x65,0x66,0x65,0x72,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x50,0x69,0x63,0x74,0x75,0x72,0x65,0x49,0x6e,0x50,0x69,0x63,0x74,0x75,0x72,0x65,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x52,0x65,0x6d,0x6f,0x74,0x65,0x50,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x20,0x66,0x6f,0x72,0x6d,0x4e,0x6f,0x56,0x61,0x6c,0x69,0x64,0x61,0x74,0x65,0x20,0x68,0x69,0x64,0x64,0x65,0x6e,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x6e,0x6f,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x6e,0x6f,0x56,0x61,0x6c,0x69,0x64,0x61,0x74,0x65,0x20,0x6f,0x70,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x73,0x49,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x72,0x65,0x61,0x64,0x4f,0x6e,0x6c,0x79,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x20,0x72,0x65,0x76,0x65,0x72,0x73,0x65,0x64,0x20,0x73,0x63,0x6f,0x70,0x65,0x64,0x20,0x73,0x65,0x61,0x6d,0x6c,0x65,0x73,0x73,0x20,0x69,0x74,0x65,0x6d,0x53,0x63,0x6f,0x70,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x33,0x2c,0x21,0x31,0x2c,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x2c,0x22,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x22,0x2c,0x22,0x6d,0x75,0x74,0x65,0x64,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x33,0x2c,0x21,0x30,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x2c,0x22,0x64,0x6f,0x77,0x6e,0x6c,0x6f,0x61,0x64,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x34,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x63,0x6f,0x6c,0x73,0x22,0x2c,0x22,0x72,0x6f,0x77,0x73,0x22,0x2c,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x22,0x73,0x70,0x61,0x6e,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x36,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x72,0x6f,0x77,0x53,0x70,0x61,0x6e,0x22,0x2c,0x22,0x73,0x74,0x61,0x72,0x74,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x35,0x2c,0x21,0x31,0x2c,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x2f,0x5b,0x5c,0x2d,0x3a,0x5d,0x28,0x5b,0x61,0x2d,0x7a,0x5d,0x29,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x5b,0x31,0x5d,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x76,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x29,0x3f,0x76,0x5b,0x6e,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3f,0x30,0x21,0x3d,0x3d,0x6c,0x2e,0x74,0x79,0x70,0x65,0x3a,0x72,0x7c,0x7c,0x21,0x28,0x32,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x7c,0x7c,0x22,0x6f,0x22,0x21,0x3d,0x3d,0x6e,0x5b,0x30,0x5d,0x26,0x26,0x22,0x4f,0x22,0x21,0x3d,0x3d,0x6e,0x5b,0x30,0x5d,0x7c,0x7c,0x22,0x6e,0x22,0x21,0x3d,0x3d,0x6e,0x5b,0x31,0x5d,0x26,0x26,0x22,0x4e,0x22,0x21,0x3d,0x3d,0x6e,0x5b,0x31,0x5d,0x29,0x26,0x26,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x7c,0x7c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x79,0x70,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x72,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3f,0x21,0x74,0x2e,0x61,0x63,0x63,0x65,0x70,0x74,0x73,0x42,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x73,0x3a,0x22,0x64,0x61,0x74,0x61,0x2d,0x22,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x30,0x2c,0x35,0x29,0x29,0x26,0x26,0x22,0x61,0x72,0x69,0x61,0x2d,0x22,0x21,0x3d,0x3d,0x65,0x29,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x69,0x66,0x28,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3d,0x3d,0x3d,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x73,0x4e,0x61,0x4e,0x28,0x6e,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x73,0x4e,0x61,0x4e,0x28,0x6e,0x29,0x7c,0x7c,0x31,0x3e,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x28,0x6e,0x2c,0x74,0x2c,0x6c,0x2c,0x72,0x29,0x26,0x26,0x28,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x72,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x21,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6d,0x2c,0x65,0x29,0x7c,0x7c,0x21,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x70,0x2c,0x65,0x29,0x26,0x26,0x28,0x64,0x2e,0x74,0x65,0x73,0x74,0x28,0x65,0x29,0x3f,0x6d,0x5b,0x65,0x5d,0x3d,0x21,0x30,0x3a,0x28,0x70,0x5b,0x65,0x5d,0x3d,0x21,0x30,0x2c,0x21,0x31,0x29,0x29,0x7d,0x28,0x6e,0x29,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x6e,0x29,0x3a,0x65,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x6e,0x2c,0x22,0x22,0x2b,0x74,0x29,0x29,0x3a,0x6c,0x2e,0x6d,0x75,0x73,0x74,0x55,0x73,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3f,0x65,0x5b,0x6c,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x33,0x21,0x3d,0x3d,0x6c,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x22,0x22,0x3a,0x74,0x3a,0x28,0x6e,0x3d,0x6c,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x2c,0x72,0x3d,0x6c,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x6e,0x29,0x3a,0x28,0x74,0x3d,0x33,0x3d,0x3d,0x3d,0x28,0x6c,0x3d,0x6c,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x6c,0x26,0x26,0x21,0x30,0x3d,0x3d,0x3d,0x74,0x3f,0x22,0x22,0x3a,0x22,0x22,0x2b,0x74,0x2c,0x72,0x3f,0x65,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x53,0x28,0x72,0x2c,0x6e,0x2c,0x74,0x29,0x3a,0x65,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x6e,0x2c,0x74,0x29,0x29,0x29,0x29,0x7d,0x22,0x61,0x63,0x63,0x65,0x6e,0x74,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x2d,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x20,0x61,0x72,0x61,0x62,0x69,0x63,0x2d,0x66,0x6f,0x72,0x6d,0x20,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x2d,0x73,0x68,0x69,0x66,0x74,0x20,0x63,0x61,0x70,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x20,0x63,0x6c,0x69,0x70,0x2d,0x72,0x75,0x6c,0x65,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x69,0x6e,0x74,0x65,0x72,0x70,0x6f,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x69,0x6e,0x74,0x65,0x72,0x70,0x6f,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x66,0x69,0x6c,0x74,0x65,0x72,0x73,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x64,0x6f,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x2d,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x2d,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x66,0x69,0x6c,0x6c,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x66,0x69,0x6c,0x6c,0x2d,0x72,0x75,0x6c,0x65,0x20,0x66,0x6c,0x6f,0x6f,0x64,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x66,0x6c,0x6f,0x6f,0x64,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x2d,0x61,0x64,0x6a,0x75,0x73,0x74,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74,0x79,0x6c,0x65,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x76,0x61,0x72,0x69,0x61,0x6e,0x74,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6e,0x61,0x6d,0x65,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x74,0x61,0x6c,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x20,0x68,0x6f,0x72,0x69,0x7a,0x2d,0x61,0x64,0x76,0x2d,0x78,0x20,0x68,0x6f,0x72,0x69,0x7a,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x78,0x20,0x69,0x6d,0x61,0x67,0x65,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x6c,0x65,0x74,0x74,0x65,0x72,0x2d,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x20,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x65,0x6e,0x64,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x6d,0x69,0x64,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x73,0x74,0x61,0x72,0x74,0x20,0x6f,0x76,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x76,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x70,0x61,0x69,0x6e,0x74,0x2d,0x6f,0x72,0x64,0x65,0x72,0x20,0x70,0x61,0x6e,0x6f,0x73,0x65,0x2d,0x31,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x2d,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x2d,0x69,0x6e,0x74,0x65,0x6e,0x74,0x20,0x73,0x68,0x61,0x70,0x65,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x73,0x74,0x6f,0x70,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x73,0x74,0x6f,0x70,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x73,0x74,0x72,0x69,0x6b,0x65,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x73,0x74,0x72,0x69,0x6b,0x65,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x64,0x61,0x73,0x68,0x61,0x72,0x72,0x61,0x79,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x64,0x61,0x73,0x68,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6c,0x69,0x6e,0x65,0x63,0x61,0x70,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6c,0x69,0x6e,0x65,0x6a,0x6f,0x69,0x6e,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6d,0x69,0x74,0x65,0x72,0x6c,0x69,0x6d,0x69,0x74,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x20,0x74,0x65,0x78,0x74,0x2d,0x61,0x6e,0x63,0x68,0x6f,0x72,0x20,0x74,0x65,0x78,0x74,0x2d,0x64,0x65,0x63,0x6f,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x65,0x78,0x74,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x75,0x6e,0x64,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x75,0x6e,0x64,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x75,0x6e,0x69,0x63,0x6f,0x64,0x65,0x2d,0x62,0x69,0x64,0x69,0x20,0x75,0x6e,0x69,0x63,0x6f,0x64,0x65,0x2d,0x72,0x61,0x6e,0x67,0x65,0x20,0x75,0x6e,0x69,0x74,0x73,0x2d,0x70,0x65,0x72,0x2d,0x65,0x6d,0x20,0x76,0x2d,0x61,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x20,0x76,0x2d,0x68,0x61,0x6e,0x67,0x69,0x6e,0x67,0x20,0x76,0x2d,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x20,0x76,0x2d,0x6d,0x61,0x74,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x20,0x76,0x65,0x63,0x74,0x6f,0x72,0x2d,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x76,0x65,0x72,0x74,0x2d,0x61,0x64,0x76,0x2d,0x79,0x20,0x76,0x65,0x72,0x74,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x78,0x20,0x76,0x65,0x72,0x74,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x79,0x20,0x77,0x6f,0x72,0x64,0x2d,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x20,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0x2d,0x6d,0x6f,0x64,0x65,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6c,0x69,0x6e,0x6b,0x20,0x78,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x67,0x2c,0x79,0x29,0x3b,0x76,0x5b,0x6e,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x6e,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x61,0x63,0x74,0x75,0x61,0x74,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x61,0x72,0x63,0x72,0x6f,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x72,0x6f,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x73,0x68,0x6f,0x77,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x74,0x69,0x74,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x74,0x79,0x70,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x67,0x2c,0x79,0x29,0x3b,0x76,0x5b,0x6e,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x6e,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x6c,0x69,0x6e,0x6b,0x22,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x78,0x6d,0x6c,0x3a,0x62,0x61,0x73,0x65,0x22,0x2c,0x22,0x78,0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x22,0x2c,0x22,0x78,0x6d,0x6c,0x3a,0x73,0x70,0x61,0x63,0x65,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x67,0x2c,0x79,0x29,0x3b,0x76,0x5b,0x6e,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x6e,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x58,0x4d,0x4c,0x2f,0x31,0x39,0x39,0x38,0x2f,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x22,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x5b,0x22,0x74,0x61,0x62,0x49,0x6e,0x64,0x65,0x78,0x22,0x2c,0x22,0x63,0x72,0x6f,0x73,0x73,0x4f,0x72,0x69,0x67,0x69,0x6e,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x29,0x2c,0x76,0x2e,0x78,0x6c,0x69,0x6e,0x6b,0x48,0x72,0x65,0x66,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x48,0x72,0x65,0x66,0x22,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x68,0x72,0x65,0x66,0x22,0x2c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x6c,0x69,0x6e,0x6b,0x22,0x2c,0x21,0x30,0x2c,0x21,0x31,0x29,0x2c,0x5b,0x22,0x73,0x72,0x63,0x22,0x2c,0x22,0x68,0x72,0x65,0x66,0x22,0x2c,0x22,0x61,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x66,0x6f,0x72,0x6d,0x41,0x63,0x74,0x69,0x6f,0x6e,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x5b,0x65,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x68,0x28,0x65,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x2c,0x21,0x30,0x29,0x7d,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x72,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x2c,0x77,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x53,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x6f,0x72,0x74,0x61,0x6c,0x22,0x29,0x2c,0x78,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x45,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x74,0x72,0x69,0x63,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x22,0x29,0x2c,0x43,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x22,0x29,0x2c,0x5f,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x22,0x29,0x2c,0x50,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2c,0x4e,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x5f,0x72,0x65,0x66,0x22,0x29,0x2c,0x7a,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x29,0x2c,0x54,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5f,0x6c,0x69,0x73,0x74,0x22,0x29,0x2c,0x4c,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x22,0x29,0x2c,0x52,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x61,0x7a,0x79,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x63,0x6f,0x70,0x65,0x22,0x29,0x2c,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x64,0x65,0x62,0x75,0x67,0x5f,0x74,0x72,0x61,0x63,0x65,0x5f,0x6d,0x6f,0x64,0x65,0x22,0x29,0x3b,0x76,0x61,0x72,0x20,0x46,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x65,0x67,0x61,0x63,0x79,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x29,0x2c,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x61,0x63,0x68,0x65,0x22,0x29,0x2c,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x74,0x72,0x61,0x63,0x69,0x6e,0x67,0x5f,0x6d,0x61,0x72,0x6b,0x65,0x72,0x22,0x29,0x3b,0x76,0x61,0x72,0x20,0x4f,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x65,0x3d,0x4f,0x26,0x26,0x65,0x5b,0x4f,0x5d,0x7c,0x7c,0x65,0x5b,0x22,0x40,0x40,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x22,0x5d,0x29,0x3f,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x49,0x2c,0x44,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x61,0x73,0x73,0x69,0x67,0x6e,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x49,0x29,0x74,0x72,0x79,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x74,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x74,0x72,0x69,0x6d,0x28,0x29,0x2e,0x6d,0x61,0x74,0x63,0x68,0x28,0x2f,0x5c,0x6e,0x28,0x20,0x2a,0x28,0x61,0x74,0x20,0x29,0x3f,0x29,0x2f,0x29,0x3b,0x49,0x3d,0x6e,0x26,0x26,0x6e,0x5b,0x31,0x5d,0x7c,0x7c,0x22,0x22,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x5c,0x6e,0x22,0x2b,0x49,0x2b,0x65,0x7d,0x76,0x61,0x72,0x20,0x6a,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x7c,0x7c,0x6a,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x22,0x3b,0x6a,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3b,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x6e,0x29,0x69,0x66,0x28,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x7d,0x2c,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x22,0x70,0x72,0x6f,0x70,0x73,0x22,0x2c,0x7b,0x73,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x7d,0x7d,0x29,0x2c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x26,0x26,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x29,0x7b,0x74,0x72,0x79,0x7b,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x28,0x6e,0x2c,0x5b,0x5d,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x73,0x7d,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x28,0x65,0x2c,0x5b,0x5d,0x2c,0x6e,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x74,0x72,0x79,0x7b,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x73,0x29,0x7b,0x72,0x3d,0x73,0x7d,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x74,0x72,0x79,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x73,0x29,0x7b,0x72,0x3d,0x73,0x7d,0x65,0x28,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x73,0x29,0x7b,0x69,0x66,0x28,0x73,0x26,0x26,0x72,0x26,0x26,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x2e,0x73,0x74,0x61,0x63,0x6b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6c,0x3d,0x73,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x5c,0x6e,0x22,0x29,0x2c,0x61,0x3d,0x72,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x5c,0x6e,0x22,0x29,0x2c,0x6f,0x3d,0x6c,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x2c,0x75,0x3d,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x3b,0x31,0x3c,0x3d,0x6f,0x26,0x26,0x30,0x3c,0x3d,0x75,0x26,0x26,0x6c,0x5b,0x6f,0x5d,0x21,0x3d,0x3d,0x61,0x5b,0x75,0x5d,0x3b,0x29,0x75,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x31,0x3c,0x3d,0x6f,0x26,0x26,0x30,0x3c,0x3d,0x75,0x3b,0x6f,0x2d,0x2d,0x2c,0x75,0x2d,0x2d,0x29,0x69,0x66,0x28,0x6c,0x5b,0x6f,0x5d,0x21,0x3d,0x3d,0x61,0x5b,0x75,0x5d,0x29,0x7b,0x69,0x66,0x28,0x31,0x21,0x3d,0x3d,0x6f,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x75,0x29,0x64,0x6f,0x7b,0x69,0x66,0x28,0x6f,0x2d,0x2d,0x2c,0x30,0x3e,0x2d,0x2d,0x75,0x7c,0x7c,0x6c,0x5b,0x6f,0x5d,0x21,0x3d,0x3d,0x61,0x5b,0x75,0x5d,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x22,0x5c,0x6e,0x22,0x2b,0x6c,0x5b,0x6f,0x5d,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x22,0x20,0x61,0x74,0x20,0x6e,0x65,0x77,0x20,0x22,0x2c,0x22,0x20,0x61,0x74,0x20,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x69,0x2e,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x28,0x22,0x3c,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x3e,0x22,0x29,0x26,0x26,0x28,0x69,0x3d,0x69,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x22,0x3c,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x3e,0x22,0x2c,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x29,0x29,0x2c,0x69,0x7d,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x3c,0x3d,0x6f,0x26,0x26,0x30,0x3c,0x3d,0x75,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6a,0x3d,0x21,0x31,0x2c,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3d,0x74,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x65,0x3f,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x3a,0x22,0x22,0x29,0x3f,0x55,0x28,0x65,0x29,0x3a,0x22,0x22,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x28,0x22,0x4c,0x61,0x7a,0x79,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x28,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x28,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x41,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x21,0x31,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x41,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x2c,0x21,0x31,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x41,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x21,0x30,0x29,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x22,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x78,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x53,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x50,0x6f,0x72,0x74,0x61,0x6c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x43,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x45,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x7a,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x54,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x22,0x7d,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x50,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2b,0x22,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x5f,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2b,0x22,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x4e,0x3a,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x29,0x7c,0x7c,0x28,0x65,0x3d,0x22,0x22,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6e,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x22,0x29,0x3f,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x28,0x22,0x2b,0x65,0x2b,0x22,0x29,0x22,0x3a,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x22,0x29,0x2c,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x4c,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x29,0x3f,0x6e,0x3a,0x24,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x22,0x4d,0x65,0x6d,0x6f,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x6e,0x3d,0x65,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x65,0x3d,0x65,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x24,0x28,0x65,0x28,0x6e,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x43,0x61,0x63,0x68,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2b,0x22,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2b,0x22,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x28,0x65,0x3d,0x6e,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x29,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x22,0x22,0x2c,0x6e,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x28,0x22,0x22,0x21,0x3d,0x3d,0x65,0x3f,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x28,0x22,0x2b,0x65,0x2b,0x22,0x29,0x22,0x3a,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x50,0x6f,0x72,0x74,0x61,0x6c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x52,0x6f,0x6f,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x54,0x65,0x78,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x24,0x28,0x6e,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3d,0x3d,0x3d,0x45,0x3f,0x22,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x22,0x3a,0x22,0x4d,0x6f,0x64,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x4f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x63,0x6f,0x70,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x54,0x72,0x61,0x63,0x69,0x6e,0x67,0x4d,0x61,0x72,0x6b,0x65,0x72,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x22,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x29,0x26,0x26,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x26,0x26,0x28,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x22,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x3d,0x3d,0x3d,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x28,0x65,0x29,0x7b,0x65,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x7c,0x7c,0x28,0x65,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x57,0x28,0x65,0x29,0x3f,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x3a,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x74,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x67,0x65,0x74,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x6f,0x72,0x28,0x65,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x6e,0x29,0x2c,0x72,0x3d,0x22,0x22,0x2b,0x65,0x5b,0x6e,0x5d,0x3b,0x69,0x66,0x28,0x21,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x29,0x26,0x26,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x2e,0x67,0x65,0x74,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x2e,0x73,0x65,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x2e,0x67,0x65,0x74,0x2c,0x61,0x3d,0x74,0x2e,0x73,0x65,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x2c,0x6e,0x2c,0x7b,0x63,0x6f,0x6e,0x66,0x69,0x67,0x75,0x72,0x61,0x62,0x6c,0x65,0x3a,0x21,0x30,0x2c,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x74,0x68,0x69,0x73,0x29,0x7d,0x2c,0x73,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x3d,0x22,0x22,0x2b,0x65,0x2c,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x74,0x68,0x69,0x73,0x2c,0x65,0x29,0x7d,0x7d,0x29,0x2c,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x2c,0x6e,0x2c,0x7b,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x3a,0x74,0x2e,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x7d,0x29,0x2c,0x7b,0x67,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x7d,0x2c,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x3d,0x22,0x22,0x2b,0x65,0x7d,0x2c,0x73,0x74,0x6f,0x70,0x54,0x72,0x61,0x63,0x6b,0x69,0x6e,0x67,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x65,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x65,0x5b,0x6e,0x5d,0x7d,0x7d,0x7d,0x7d,0x28,0x65,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3b,0x69,0x66,0x28,0x21,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x67,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x28,0x29,0x2c,0x72,0x3d,0x22,0x22,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x26,0x26,0x28,0x72,0x3d,0x57,0x28,0x65,0x29,0x3f,0x65,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3f,0x22,0x74,0x72,0x75,0x65,0x22,0x3a,0x22,0x66,0x61,0x6c,0x73,0x65,0x22,0x3a,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x28,0x65,0x3d,0x72,0x29,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x6e,0x2e,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x28,0x65,0x29,0x2c,0x21,0x30,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x65,0x3d,0x65,0x7c,0x7c,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3f,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x65,0x2e,0x62,0x6f,0x64,0x79,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x62,0x6f,0x64,0x79,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x28,0x7b,0x7d,0x2c,0x6e,0x2c,0x7b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x3f,0x74,0x3a,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3f,0x22,0x22,0x3a,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3f,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x74,0x3d,0x48,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3f,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x74,0x29,0x2c,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x72,0x2c,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x74,0x2c,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x64,0x3a,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x22,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x29,0x26,0x26,0x62,0x28,0x65,0x2c,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x2c,0x6e,0x2c,0x21,0x31,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x47,0x28,0x65,0x2c,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x48,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x29,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x72,0x3f,0x28,0x30,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x22,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7c,0x7c,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x21,0x3d,0x74,0x29,0x26,0x26,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x22,0x22,0x2b,0x74,0x29,0x3a,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x22,0x22,0x2b,0x74,0x26,0x26,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x22,0x22,0x2b,0x74,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x22,0x3d,0x3d,0x3d,0x72,0x7c,0x7c,0x22,0x72,0x65,0x73,0x65,0x74,0x22,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x29,0x3b,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x29,0x3f,0x65,0x65,0x28,0x65,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x29,0x3a,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x29,0x26,0x26,0x65,0x65,0x28,0x65,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x48,0x28,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x26,0x26,0x28,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3d,0x21,0x21,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x29,0x7c,0x7c,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x21,0x28,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x22,0x21,0x3d,0x3d,0x72,0x26,0x26,0x22,0x72,0x65,0x73,0x65,0x74,0x22,0x21,0x3d,0x3d,0x72,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x3d,0x22,0x22,0x2b,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x2c,0x74,0x7c,0x7c,0x6e,0x3d,0x3d,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7c,0x7c,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x29,0x2c,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x7d,0x22,0x22,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x29,0x26,0x26,0x28,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x22,0x29,0x2c,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3d,0x21,0x21,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x22,0x22,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x3d,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x4b,0x28,0x65,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x74,0x3f,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x22,0x22,0x2b,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x22,0x22,0x2b,0x74,0x26,0x26,0x28,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x22,0x22,0x2b,0x74,0x29,0x29,0x7d,0x76,0x61,0x72,0x20,0x6e,0x65,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x65,0x3d,0x65,0x2e,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x2c,0x6e,0x29,0x7b,0x6e,0x3d,0x7b,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6c,0x3d,0x30,0x3b,0x6c,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6c,0x2b,0x2b,0x29,0x6e,0x5b,0x22,0x24,0x22,0x2b,0x74,0x5b,0x6c,0x5d,0x5d,0x3d,0x21,0x30,0x3b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x6c,0x3d,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x24,0x22,0x2b,0x65,0x5b,0x74,0x5d,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x65,0x5b,0x74,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x65,0x5b,0x74,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x6c,0x29,0x2c,0x6c,0x26,0x26,0x72,0x26,0x26,0x28,0x65,0x5b,0x74,0x5d,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x22,0x22,0x2b,0x48,0x28,0x74,0x29,0x2c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x3d,0x30,0x3b,0x6c,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6c,0x2b,0x2b,0x29,0x7b,0x69,0x66,0x28,0x65,0x5b,0x6c,0x5d,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x5b,0x6c,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x2c,0x76,0x6f,0x69,0x64,0x28,0x72,0x26,0x26,0x28,0x65,0x5b,0x6c,0x5d,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x7c,0x7c,0x65,0x5b,0x6c,0x5d,0x2e,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x7c,0x7c,0x28,0x6e,0x3d,0x65,0x5b,0x6c,0x5d,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6e,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x39,0x31,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x28,0x7b,0x7d,0x2c,0x6e,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x22,0x2b,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x74,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x6e,0x3d,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x39,0x32,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x65,0x28,0x74,0x29,0x29,0x7b,0x69,0x66,0x28,0x31,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x39,0x33,0x29,0x29,0x3b,0x74,0x3d,0x74,0x5b,0x30,0x5d,0x7d,0x6e,0x3d,0x74,0x7d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6e,0x3d,0x22,0x22,0x29,0x2c,0x74,0x3d,0x6e,0x7d,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x48,0x28,0x74,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x48,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x72,0x3d,0x48,0x28,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x26,0x26,0x28,0x28,0x74,0x3d,0x22,0x22,0x2b,0x74,0x29,0x21,0x3d,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x74,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x72,0x26,0x26,0x28,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x22,0x22,0x2b,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x65,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3b,0x6e,0x3d,0x3d,0x3d,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x22,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x65,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x73,0x76,0x67,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3b,0x63,0x61,0x73,0x65,0x22,0x6d,0x61,0x74,0x68,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x38,0x2f,0x4d,0x61,0x74,0x68,0x2f,0x4d,0x61,0x74,0x68,0x4d,0x4c,0x22,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x22,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x3f,0x75,0x65,0x28,0x6e,0x29,0x3a,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x22,0x66,0x6f,0x72,0x65,0x69,0x67,0x6e,0x4f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x6e,0x3f,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x22,0x3a,0x65,0x7d,0x76,0x61,0x72,0x20,0x73,0x65,0x2c,0x63,0x65,0x2c,0x66,0x65,0x3d,0x28,0x63,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x7c,0x7c,0x22,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x69,0x6e,0x20,0x65,0x29,0x65,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x6e,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x66,0x6f,0x72,0x28,0x28,0x73,0x65,0x3d,0x73,0x65,0x7c,0x7c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x22,0x64,0x69,0x76,0x22,0x29,0x29,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x22,0x3c,0x73,0x76,0x67,0x3e,0x22,0x2b,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x4f,0x66,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x29,0x2b,0x22,0x3c,0x2f,0x73,0x76,0x67,0x3e,0x22,0x2c,0x6e,0x3d,0x73,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x65,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x6e,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x7d,0x7d,0x2c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4d,0x53,0x41,0x70,0x70,0x26,0x26,0x4d,0x53,0x41,0x70,0x70,0x2e,0x65,0x78,0x65,0x63,0x55,0x6e,0x73,0x61,0x66,0x65,0x4c,0x6f,0x63,0x61,0x6c,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x4d,0x53,0x41,0x70,0x70,0x2e,0x65,0x78,0x65,0x63,0x55,0x6e,0x73,0x61,0x66,0x65,0x4c,0x6f,0x63,0x61,0x6c,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x29,0x29,0x7d,0x3a,0x63,0x65,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x74,0x26,0x26,0x74,0x3d,0x3d,0x3d,0x65,0x2e,0x6c,0x61,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x26,0x26,0x33,0x3d,0x3d,0x3d,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x28,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x29,0x7d,0x65,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x6e,0x7d,0x76,0x61,0x72,0x20,0x70,0x65,0x3d,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x21,0x30,0x2c,0x61,0x73,0x70,0x65,0x63,0x74,0x52,0x61,0x74,0x69,0x6f,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x4f,0x75,0x74,0x73,0x65,0x74,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x53,0x6c,0x69,0x63,0x65,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x57,0x69,0x64,0x74,0x68,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x47,0x72,0x6f,0x75,0x70,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x4f,0x72,0x64,0x69,0x6e,0x61,0x6c,0x47,0x72,0x6f,0x75,0x70,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x73,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x47,0x72,0x6f,0x77,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x50,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x53,0x68,0x72,0x69,0x6e,0x6b,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x4e,0x65,0x67,0x61,0x74,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x4f,0x72,0x64,0x65,0x72,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x41,0x72,0x65,0x61,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x45,0x6e,0x64,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x70,0x61,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x74,0x61,0x72,0x74,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x45,0x6e,0x64,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x70,0x61,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x74,0x61,0x72,0x74,0x3a,0x21,0x30,0x2c,0x66,0x6f,0x6e,0x74,0x57,0x65,0x69,0x67,0x68,0x74,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x65,0x43,0x6c,0x61,0x6d,0x70,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3a,0x21,0x30,0x2c,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x6f,0x72,0x64,0x65,0x72,0x3a,0x21,0x30,0x2c,0x6f,0x72,0x70,0x68,0x61,0x6e,0x73,0x3a,0x21,0x30,0x2c,0x74,0x61,0x62,0x53,0x69,0x7a,0x65,0x3a,0x21,0x30,0x2c,0x77,0x69,0x64,0x6f,0x77,0x73,0x3a,0x21,0x30,0x2c,0x7a,0x49,0x6e,0x64,0x65,0x78,0x3a,0x21,0x30,0x2c,0x7a,0x6f,0x6f,0x6d,0x3a,0x21,0x30,0x2c,0x66,0x69,0x6c,0x6c,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x6f,0x6f,0x64,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x6f,0x70,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x61,0x72,0x72,0x61,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x6f,0x66,0x66,0x73,0x65,0x74,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4d,0x69,0x74,0x65,0x72,0x6c,0x69,0x6d,0x69,0x74,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x57,0x69,0x64,0x74,0x68,0x3a,0x21,0x30,0x7d,0x2c,0x6d,0x65,0x3d,0x5b,0x22,0x57,0x65,0x62,0x6b,0x69,0x74,0x22,0x2c,0x22,0x6d,0x73,0x22,0x2c,0x22,0x4d,0x6f,0x7a,0x22,0x2c,0x22,0x4f,0x22,0x5d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x7c,0x7c,0x22,0x22,0x3d,0x3d,0x3d,0x6e,0x3f,0x22,0x22,0x3a,0x74,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x29,0x26,0x26,0x70,0x65,0x5b,0x65,0x5d,0x3f,0x28,0x22,0x22,0x2b,0x6e,0x29,0x2e,0x74,0x72,0x69,0x6d,0x28,0x29,0x3a,0x6e,0x2b,0x22,0x70,0x78,0x22,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x20,0x69,0x6e,0x20,0x65,0x3d,0x65,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2c,0x6e,0x29,0x69,0x66,0x28,0x6e,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x74,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x3d,0x3d,0x3d,0x74,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x22,0x2d,0x2d,0x22,0x29,0x2c,0x6c,0x3d,0x68,0x65,0x28,0x74,0x2c,0x6e,0x5b,0x74,0x5d,0x2c,0x72,0x29,0x3b,0x22,0x66,0x6c,0x6f,0x61,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x28,0x74,0x3d,0x22,0x63,0x73,0x73,0x46,0x6c,0x6f,0x61,0x74,0x22,0x29,0x2c,0x72,0x3f,0x65,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x74,0x2c,0x6c,0x29,0x3a,0x65,0x5b,0x74,0x5d,0x3d,0x6c,0x7d,0x7d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x70,0x65,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x6d,0x65,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x7b,0x6e,0x3d,0x6e,0x2b,0x65,0x2e,0x63,0x68,0x61,0x72,0x41,0x74,0x28,0x30,0x29,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2b,0x65,0x2e,0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x31,0x29,0x2c,0x70,0x65,0x5b,0x6e,0x5d,0x3d,0x70,0x65,0x5b,0x65,0x5d,0x7d,0x29,0x29,0x7d,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x65,0x3d,0x44,0x28,0x7b,0x6d,0x65,0x6e,0x75,0x69,0x74,0x65,0x6d,0x3a,0x21,0x30,0x7d,0x2c,0x7b,0x61,0x72,0x65,0x61,0x3a,0x21,0x30,0x2c,0x62,0x61,0x73,0x65,0x3a,0x21,0x30,0x2c,0x62,0x72,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x3a,0x21,0x30,0x2c,0x65,0x6d,0x62,0x65,0x64,0x3a,0x21,0x30,0x2c,0x68,0x72,0x3a,0x21,0x30,0x2c,0x69,0x6d,0x67,0x3a,0x21,0x30,0x2c,0x69,0x6e,0x70,0x75,0x74,0x3a,0x21,0x30,0x2c,0x6b,0x65,0x79,0x67,0x65,0x6e,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x6b,0x3a,0x21,0x30,0x2c,0x6d,0x65,0x74,0x61,0x3a,0x21,0x30,0x2c,0x70,0x61,0x72,0x61,0x6d,0x3a,0x21,0x30,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x2c,0x74,0x72,0x61,0x63,0x6b,0x3a,0x21,0x30,0x2c,0x77,0x62,0x72,0x3a,0x21,0x30,0x7d,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x29,0x7b,0x69,0x66,0x28,0x67,0x65,0x5b,0x65,0x5d,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x33,0x37,0x2c,0x65,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x36,0x30,0x29,0x29,0x3b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x7c,0x7c,0x21,0x28,0x22,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x22,0x69,0x6e,0x20,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x36,0x31,0x29,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x73,0x74,0x79,0x6c,0x65,0x26,0x26,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x73,0x74,0x79,0x6c,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x36,0x32,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x2d,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x22,0x2d,0x22,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x69,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x61,0x6e,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x78,0x6d,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x73,0x72,0x63,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x75,0x72,0x69,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x66,0x6f,0x72,0x6d,0x61,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x6e,0x61,0x6d,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x67,0x6c,0x79,0x70,0x68,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x65,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x65,0x2e,0x73,0x72,0x63,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x55,0x73,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x26,0x26,0x28,0x65,0x3d,0x65,0x2e,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x55,0x73,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x2c,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x65,0x7d,0x76,0x61,0x72,0x20,0x53,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x78,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x45,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x65,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x3d,0x62,0x6c,0x28,0x65,0x29,0x29,0x7b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x53,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x38,0x30,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6e,0x26,0x26,0x28,0x6e,0x3d,0x77,0x6c,0x28,0x6e,0x29,0x2c,0x53,0x65,0x28,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x65,0x28,0x65,0x29,0x7b,0x78,0x65,0x3f,0x45,0x65,0x3f,0x45,0x65,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x3a,0x45,0x65,0x3d,0x5b,0x65,0x5d,0x3a,0x78,0x65,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x65,0x28,0x29,0x7b,0x69,0x66,0x28,0x78,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x78,0x65,0x2c,0x6e,0x3d,0x45,0x65,0x3b,0x69,0x66,0x28,0x45,0x65,0x3d,0x78,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x65,0x28,0x65,0x29,0x2c,0x6e,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x43,0x65,0x28,0x6e,0x5b,0x65,0x5d,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x65,0x28,0x29,0x7b,0x7d,0x76,0x61,0x72,0x20,0x54,0x65,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x54,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x6e,0x2c,0x74,0x29,0x3b,0x54,0x65,0x3d,0x21,0x30,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4e,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x54,0x65,0x3d,0x21,0x31,0x2c,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x45,0x65,0x29,0x26,0x26,0x28,0x7a,0x65,0x28,0x29,0x2c,0x50,0x65,0x28,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x77,0x6c,0x28,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x3d,0x72,0x5b,0x6e,0x5d,0x3b,0x65,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x55,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x55,0x70,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x22,0x3a,0x28,0x72,0x3d,0x21,0x72,0x2e,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x29,0x7c,0x7c,0x28,0x72,0x3d,0x21,0x28,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x29,0x2c,0x65,0x3d,0x21,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x74,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x33,0x31,0x2c,0x6e,0x2c,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x7d,0x76,0x61,0x72,0x20,0x46,0x65,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x63,0x29,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x4f,0x65,0x3d,0x7b,0x7d,0x3b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x4f,0x65,0x2c,0x22,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x22,0x2c,0x7b,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x46,0x65,0x3d,0x21,0x30,0x7d,0x7d,0x29,0x2c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x74,0x65,0x73,0x74,0x22,0x2c,0x4f,0x65,0x2c,0x4f,0x65,0x29,0x2c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x74,0x65,0x73,0x74,0x22,0x2c,0x4f,0x65,0x2c,0x4f,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x65,0x29,0x7b,0x46,0x65,0x3d,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x2c,0x75,0x2c,0x69,0x29,0x7b,0x76,0x61,0x72,0x20,0x73,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x33,0x29,0x3b,0x74,0x72,0x79,0x7b,0x6e,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x2c,0x73,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x6f,0x6e,0x45,0x72,0x72,0x6f,0x72,0x28,0x63,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x49,0x65,0x3d,0x21,0x31,0x2c,0x44,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x55,0x65,0x3d,0x21,0x31,0x2c,0x6a,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x41,0x65,0x3d,0x7b,0x6f,0x6e,0x45,0x72,0x72,0x6f,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x49,0x65,0x3d,0x21,0x30,0x2c,0x44,0x65,0x3d,0x65,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x2c,0x75,0x2c,0x69,0x29,0x7b,0x49,0x65,0x3d,0x21,0x31,0x2c,0x44,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4d,0x65,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x41,0x65,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x65,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2c,0x74,0x3d,0x65,0x3b,0x69,0x66,0x28,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x29,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x65,0x3d,0x6e,0x3b,0x64,0x6f,0x7b,0x30,0x21,0x3d,0x3d,0x28,0x34,0x30,0x39,0x38,0x26,0x28,0x6e,0x3d,0x65,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x28,0x74,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x2c,0x65,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x3f,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x65,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x28,0x6e,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x65,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x24,0x65,0x28,0x65,0x29,0x21,0x3d,0x3d,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x38,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x65,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x21,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x24,0x65,0x28,0x65,0x29,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x21,0x3d,0x3d,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x7d,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2c,0x72,0x3d,0x6e,0x3b,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6f,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x29,0x7b,0x74,0x3d,0x72,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x3d,0x3d,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x66,0x6f,0x72,0x28,0x6f,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6f,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6f,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x65,0x28,0x6c,0x29,0x2c,0x65,0x3b,0x69,0x66,0x28,0x6f,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x65,0x28,0x6c,0x29,0x2c,0x6e,0x3b,0x6f,0x3d,0x6f,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x38,0x29,0x29,0x7d,0x69,0x66,0x28,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x3d,0x3d,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x74,0x3d,0x6c,0x2c,0x72,0x3d,0x6f,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x75,0x3d,0x21,0x31,0x2c,0x69,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x3b,0x29,0x7b,0x69,0x66,0x28,0x69,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x75,0x3d,0x21,0x30,0x2c,0x74,0x3d,0x6c,0x2c,0x72,0x3d,0x6f,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x69,0x3d,0x3d,0x3d,0x72,0x29,0x7b,0x75,0x3d,0x21,0x30,0x2c,0x72,0x3d,0x6c,0x2c,0x74,0x3d,0x6f,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x3d,0x69,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x69,0x66,0x28,0x21,0x75,0x29,0x7b,0x66,0x6f,0x72,0x28,0x69,0x3d,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x3b,0x29,0x7b,0x69,0x66,0x28,0x69,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x75,0x3d,0x21,0x30,0x2c,0x74,0x3d,0x6f,0x2c,0x72,0x3d,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x69,0x3d,0x3d,0x3d,0x72,0x29,0x7b,0x75,0x3d,0x21,0x30,0x2c,0x72,0x3d,0x6f,0x2c,0x74,0x3d,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x3d,0x69,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x69,0x66,0x28,0x21,0x75,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x39,0x29,0x29,0x7d,0x7d,0x69,0x66,0x28,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x21,0x3d,0x3d,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x39,0x30,0x29,0x29,0x7d,0x69,0x66,0x28,0x33,0x21,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x74,0x3f,0x65,0x3a,0x6e,0x7d,0x28,0x65,0x29,0x29,0x3f,0x51,0x65,0x28,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x65,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x51,0x65,0x28,0x65,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x71,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x4b,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x61,0x6e,0x63,0x65,0x6c,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x59,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x68,0x6f,0x75,0x6c,0x64,0x59,0x69,0x65,0x6c,0x64,0x2c,0x58,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x50,0x61,0x69,0x6e,0x74,0x2c,0x47,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x2c,0x5a,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x2c,0x4a,0x65,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x65,0x6e,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x55,0x73,0x65,0x72,0x42,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x6e,0x6e,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x74,0x6e,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4c,0x6f,0x77,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x72,0x6e,0x3d,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x64,0x6c,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x6c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6f,0x6e,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x63,0x6c,0x7a,0x33,0x32,0x3f,0x4d,0x61,0x74,0x68,0x2e,0x63,0x6c,0x7a,0x33,0x32,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3e,0x3e,0x3e,0x3d,0x30,0x2c,0x30,0x3d,0x3d,0x3d,0x65,0x3f,0x33,0x32,0x3a,0x33,0x31,0x2d,0x28,0x75,0x6e,0x28,0x65,0x29,0x2f,0x73,0x6e,0x7c,0x30,0x29,0x7c,0x30,0x7d,0x2c,0x75,0x6e,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6c,0x6f,0x67,0x2c,0x73,0x6e,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x4c,0x4e,0x32,0x3b,0x76,0x61,0x72,0x20,0x63,0x6e,0x3d,0x36,0x34,0x2c,0x66,0x6e,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x6e,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x26,0x2d,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x37,0x37,0x37,0x32,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x33,0x35,0x35,0x34,0x34,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x37,0x31,0x30,0x38,0x38,0x36,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x26,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x2c,0x6c,0x3d,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x61,0x3d,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x6f,0x3d,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x26,0x74,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6f,0x26,0x7e,0x6c,0x3b,0x30,0x21,0x3d,0x3d,0x75,0x3f,0x72,0x3d,0x64,0x6e,0x28,0x75,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x61,0x26,0x3d,0x6f,0x29,0x26,0x26,0x28,0x72,0x3d,0x64,0x6e,0x28,0x61,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x30,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x74,0x26,0x7e,0x6c,0x29,0x3f,0x72,0x3d,0x64,0x6e,0x28,0x6f,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x72,0x3d,0x64,0x6e,0x28,0x61,0x29,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x21,0x3d,0x3d,0x72,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x6e,0x26,0x6c,0x29,0x26,0x26,0x28,0x28,0x6c,0x3d,0x72,0x26,0x2d,0x72,0x29,0x3e,0x3d,0x28,0x61,0x3d,0x6e,0x26,0x2d,0x6e,0x29,0x7c,0x7c,0x31,0x36,0x3d,0x3d,0x3d,0x6c,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x61,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x34,0x26,0x72,0x29,0x26,0x26,0x28,0x72,0x7c,0x3d,0x31,0x36,0x26,0x74,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x6e,0x26,0x3d,0x72,0x3b,0x30,0x3c,0x6e,0x3b,0x29,0x6c,0x3d,0x31,0x3c,0x3c,0x28,0x74,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x6e,0x29,0x29,0x2c,0x72,0x7c,0x3d,0x65,0x5b,0x74,0x5d,0x2c,0x6e,0x26,0x3d,0x7e,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2b,0x32,0x35,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2b,0x35,0x65,0x33,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x2d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x35,0x26,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3f,0x65,0x3a,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x26,0x65,0x3f,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3a,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x6e,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x28,0x63,0x6e,0x3c,0x3c,0x3d,0x31,0x29,0x29,0x26,0x26,0x28,0x63,0x6e,0x3d,0x36,0x34,0x29,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x6e,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x5b,0x5d,0x2c,0x74,0x3d,0x30,0x3b,0x33,0x31,0x3e,0x74,0x3b,0x74,0x2b,0x2b,0x29,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x2c,0x28,0x65,0x3d,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x29,0x5b,0x6e,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x6e,0x29,0x5d,0x3d,0x74,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3b,0x74,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x74,0x29,0x2c,0x6c,0x3d,0x31,0x3c,0x3c,0x72,0x3b,0x6c,0x26,0x6e,0x7c,0x65,0x5b,0x72,0x5d,0x26,0x6e,0x26,0x26,0x28,0x65,0x5b,0x72,0x5d,0x7c,0x3d,0x6e,0x29,0x2c,0x74,0x26,0x3d,0x7e,0x6c,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6b,0x6e,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3c,0x28,0x65,0x26,0x3d,0x2d,0x65,0x29,0x3f,0x34,0x3c,0x65,0x3f,0x30,0x21,0x3d,0x3d,0x28,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x26,0x65,0x29,0x3f,0x31,0x36,0x3a,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x34,0x3a,0x31,0x7d,0x76,0x61,0x72,0x20,0x53,0x6e,0x2c,0x78,0x6e,0x2c,0x45,0x6e,0x2c,0x43,0x6e,0x2c,0x5f,0x6e,0x2c,0x50,0x6e,0x3d,0x21,0x31,0x2c,0x4e,0x6e,0x3d,0x5b,0x5d,0x2c,0x7a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x54,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x52,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x46,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x4f,0x6e,0x3d,0x5b,0x5d,0x2c,0x4d,0x6e,0x3d,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x20,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x20,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x20,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x20,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x20,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x20,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x20,0x64,0x72,0x6f,0x70,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x20,0x63,0x6f,0x70,0x79,0x20,0x63,0x75,0x74,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x20,0x72,0x65,0x73,0x65,0x74,0x20,0x73,0x75,0x62,0x6d,0x69,0x74,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3a,0x7a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x22,0x3a,0x54,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x3a,0x4c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x3a,0x52,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6c,0x6f,0x73,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x46,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x61,0x3f,0x28,0x65,0x3d,0x7b,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3a,0x6e,0x2c,0x64,0x6f,0x6d,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x3a,0x74,0x2c,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x3a,0x72,0x2c,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3a,0x61,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x3a,0x5b,0x6c,0x5d,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x62,0x6c,0x28,0x6e,0x29,0x29,0x26,0x26,0x78,0x6e,0x28,0x6e,0x29,0x29,0x2c,0x65,0x29,0x3a,0x28,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x72,0x2c,0x6e,0x3d,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x2d,0x31,0x3d,0x3d,0x3d,0x6e,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x6c,0x29,0x26,0x26,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x29,0x2c,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x79,0x6c,0x28,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x24,0x65,0x28,0x6e,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x74,0x2e,0x74,0x61,0x67,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x42,0x65,0x28,0x74,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x2c,0x76,0x6f,0x69,0x64,0x20,0x5f,0x6e,0x28,0x65,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x45,0x6e,0x28,0x74,0x29,0x7d,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x28,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x33,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x3f,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x3b,0x30,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x58,0x6e,0x28,0x65,0x2e,0x64,0x6f,0x6d,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x2c,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x2c,0x6e,0x5b,0x30,0x5d,0x2c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x62,0x6c,0x28,0x74,0x29,0x29,0x26,0x26,0x78,0x6e,0x28,0x6e,0x29,0x2c,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x74,0x2c,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x65,0x77,0x28,0x74,0x3d,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x29,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x28,0x74,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x29,0x3b,0x6b,0x65,0x3d,0x72,0x2c,0x74,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x72,0x29,0x2c,0x6b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x73,0x68,0x69,0x66,0x74,0x28,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x6a,0x6e,0x28,0x65,0x29,0x26,0x26,0x74,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x6e,0x28,0x29,0x7b,0x50,0x6e,0x3d,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x7a,0x6e,0x26,0x26,0x6a,0x6e,0x28,0x7a,0x6e,0x29,0x26,0x26,0x28,0x7a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x6e,0x26,0x26,0x6a,0x6e,0x28,0x54,0x6e,0x29,0x26,0x26,0x28,0x54,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4c,0x6e,0x26,0x26,0x6a,0x6e,0x28,0x4c,0x6e,0x29,0x26,0x26,0x28,0x4c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x52,0x6e,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x41,0x6e,0x29,0x2c,0x46,0x6e,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x41,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x65,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x50,0x6e,0x7c,0x7c,0x28,0x50,0x6e,0x3d,0x21,0x30,0x2c,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x6c,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x56,0x6e,0x29,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x6e,0x28,0x65,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x24,0x6e,0x28,0x6e,0x2c,0x65,0x29,0x7d,0x69,0x66,0x28,0x30,0x3c,0x4e,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x7b,0x24,0x6e,0x28,0x4e,0x6e,0x5b,0x30,0x5d,0x2c,0x65,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x31,0x3b,0x74,0x3c,0x4e,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x4e,0x6e,0x5b,0x74,0x5d,0x3b,0x72,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x72,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x66,0x6f,0x72,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x7a,0x6e,0x26,0x26,0x24,0x6e,0x28,0x7a,0x6e,0x2c,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x6e,0x26,0x26,0x24,0x6e,0x28,0x54,0x6e,0x2c,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4c,0x6e,0x26,0x26,0x24,0x6e,0x28,0x4c,0x6e,0x2c,0x65,0x29,0x2c,0x52,0x6e,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x6e,0x29,0x2c,0x46,0x6e,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x6e,0x29,0x2c,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x4f,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x28,0x72,0x3d,0x4f,0x6e,0x5b,0x74,0x5d,0x29,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x72,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x4f,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x4f,0x6e,0x5b,0x30,0x5d,0x29,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3b,0x29,0x55,0x6e,0x28,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x26,0x26,0x4f,0x6e,0x2e,0x73,0x68,0x69,0x66,0x74,0x28,0x29,0x7d,0x76,0x61,0x72,0x20,0x48,0x6e,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x57,0x6e,0x3d,0x21,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6b,0x6e,0x2c,0x61,0x3d,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x6b,0x6e,0x3d,0x31,0x2c,0x4b,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x6c,0x2c,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x61,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6b,0x6e,0x2c,0x61,0x3d,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x6b,0x6e,0x3d,0x34,0x2c,0x4b,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x6c,0x2c,0x48,0x6e,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x61,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x57,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x58,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x29,0x48,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x59,0x6e,0x2c,0x74,0x29,0x2c,0x49,0x6e,0x28,0x65,0x2c,0x72,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x6e,0x3d,0x44,0x6e,0x28,0x7a,0x6e,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x6e,0x3d,0x44,0x6e,0x28,0x54,0x6e,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4c,0x6e,0x3d,0x44,0x6e,0x28,0x4c,0x6e,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x3a,0x76,0x61,0x72,0x20,0x61,0x3d,0x6c,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x6e,0x2e,0x73,0x65,0x74,0x28,0x61,0x2c,0x44,0x6e,0x28,0x52,0x6e,0x2e,0x67,0x65,0x74,0x28,0x61,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x6c,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x2c,0x46,0x6e,0x2e,0x73,0x65,0x74,0x28,0x61,0x2c,0x44,0x6e,0x28,0x46,0x6e,0x2e,0x67,0x65,0x74,0x28,0x61,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x29,0x2c,0x21,0x30,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x28,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x29,0x72,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x49,0x6e,0x28,0x65,0x2c,0x72,0x29,0x2c,0x34,0x26,0x6e,0x26,0x26,0x2d,0x31,0x3c,0x4d,0x6e,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x65,0x29,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x62,0x6c,0x28,0x6c,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x53,0x6e,0x28,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x61,0x3d,0x58,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x29,0x26,0x26,0x48,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x59,0x6e,0x2c,0x74,0x29,0x2c,0x61,0x3d,0x3d,0x3d,0x6c,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x6c,0x3d,0x61,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x72,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x48,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x59,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x59,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x79,0x6c,0x28,0x65,0x3d,0x77,0x65,0x28,0x72,0x29,0x29,0x29,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x24,0x65,0x28,0x65,0x29,0x29,0x29,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x42,0x65,0x28,0x6e,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x3f,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x59,0x6e,0x3d,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x6e,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6c,0x6f,0x73,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x70,0x79,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x6f,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x61,0x73,0x74,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x61,0x75,0x73,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6c,0x61,0x79,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x72,0x61,0x74,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x72,0x65,0x73,0x65,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x72,0x65,0x73,0x69,0x7a,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x65,0x6b,0x65,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x62,0x6c,0x75,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x61,0x66,0x74,0x65,0x72,0x62,0x6c,0x75,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x62,0x6c,0x75,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x75,0x6c,0x6c,0x73,0x63,0x72,0x65,0x65,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x68,0x61,0x73,0x68,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x70,0x73,0x74,0x61,0x74,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x78,0x69,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x77,0x68,0x65,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6c,0x65,0x61,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x63,0x61,0x73,0x65,0x22,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x5a,0x65,0x28,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x4a,0x65,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x65,0x6e,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x63,0x61,0x73,0x65,0x20,0x6e,0x6e,0x3a,0x63,0x61,0x73,0x65,0x20,0x74,0x6e,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x72,0x6e,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x7d,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x7d,0x7d,0x76,0x61,0x72,0x20,0x5a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x74,0x28,0x29,0x7b,0x69,0x66,0x28,0x65,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x74,0x3b,0x76,0x61,0x72,0x20,0x65,0x2c,0x6e,0x2c,0x74,0x3d,0x4a,0x6e,0x2c,0x72,0x3d,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x6c,0x3d,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x69,0x6e,0x20,0x5a,0x6e,0x3f,0x5a,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x5a,0x6e,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x61,0x3d,0x6c,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x72,0x26,0x26,0x74,0x5b,0x65,0x5d,0x3d,0x3d,0x3d,0x6c,0x5b,0x65,0x5d,0x3b,0x65,0x2b,0x2b,0x29,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x72,0x2d,0x65,0x3b,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x31,0x3b,0x6e,0x3c,0x3d,0x6f,0x26,0x26,0x74,0x5b,0x72,0x2d,0x6e,0x5d,0x3d,0x3d,0x3d,0x6c,0x5b,0x61,0x2d,0x6e,0x5d,0x3b,0x6e,0x2b,0x2b,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x74,0x3d,0x6c,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x65,0x2c,0x31,0x3c,0x6e,0x3f,0x31,0x2d,0x6e,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x74,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x22,0x69,0x6e,0x20,0x65,0x3f,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x29,0x26,0x26,0x31,0x33,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x65,0x3d,0x31,0x33,0x29,0x3a,0x65,0x3d,0x6e,0x2c,0x31,0x30,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x3d,0x31,0x33,0x29,0x2c,0x33,0x32,0x3c,0x3d,0x65,0x7c,0x7c,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x3f,0x65,0x3a,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x74,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x74,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x74,0x28,0x65,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6f,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,0x49,0x6e,0x73,0x74,0x3d,0x72,0x2c,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x74,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3d,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x61,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6f,0x29,0x26,0x26,0x28,0x6e,0x3d,0x65,0x5b,0x6f,0x5d,0x2c,0x74,0x68,0x69,0x73,0x5b,0x6f,0x5d,0x3d,0x6e,0x3f,0x6e,0x28,0x6c,0x29,0x3a,0x6c,0x5b,0x6f,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6c,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3f,0x6c,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3a,0x21,0x31,0x3d,0x3d,0x3d,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x29,0x3f,0x72,0x74,0x3a,0x6c,0x74,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x3d,0x6c,0x74,0x2c,0x74,0x68,0x69,0x73,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x28,0x6e,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x7b,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x65,0x26,0x26,0x28,0x65,0x2e,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3f,0x65,0x2e,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x29,0x3a,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x28,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x3d,0x21,0x31,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x72,0x74,0x29,0x7d,0x2c,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x65,0x26,0x26,0x28,0x65,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x3f,0x65,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3a,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x42,0x75,0x62,0x62,0x6c,0x65,0x26,0x26,0x28,0x65,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x42,0x75,0x62,0x62,0x6c,0x65,0x3d,0x21,0x30,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x3d,0x72,0x74,0x29,0x7d,0x2c,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x69,0x73,0x50,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x6e,0x74,0x3a,0x72,0x74,0x7d,0x29,0x2c,0x6e,0x7d,0x76,0x61,0x72,0x20,0x6f,0x74,0x2c,0x75,0x74,0x2c,0x69,0x74,0x2c,0x73,0x74,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x50,0x68,0x61,0x73,0x65,0x3a,0x30,0x2c,0x62,0x75,0x62,0x62,0x6c,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x3a,0x30,0x2c,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x7c,0x7c,0x44,0x61,0x74,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x7d,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3a,0x30,0x2c,0x69,0x73,0x54,0x72,0x75,0x73,0x74,0x65,0x64,0x3a,0x30,0x7d,0x2c,0x63,0x74,0x3d,0x61,0x74,0x28,0x73,0x74,0x29,0x2c,0x66,0x74,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x73,0x74,0x2c,0x7b,0x76,0x69,0x65,0x77,0x3a,0x30,0x2c,0x64,0x65,0x74,0x61,0x69,0x6c,0x3a,0x30,0x7d,0x29,0x2c,0x64,0x74,0x3d,0x61,0x74,0x28,0x66,0x74,0x29,0x2c,0x70,0x74,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x66,0x74,0x2c,0x7b,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x3a,0x30,0x2c,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x3a,0x30,0x2c,0x63,0x6c,0x69,0x65,0x6e,0x74,0x58,0x3a,0x30,0x2c,0x63,0x6c,0x69,0x65,0x6e,0x74,0x59,0x3a,0x30,0x2c,0x70,0x61,0x67,0x65,0x58,0x3a,0x30,0x2c,0x70,0x61,0x67,0x65,0x59,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x43,0x74,0x2c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x30,0x2c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x73,0x3a,0x30,0x2c,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3f,0x65,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x65,0x2e,0x73,0x72,0x63,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3f,0x65,0x2e,0x74,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x65,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x65,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7d,0x2c,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x3a,0x28,0x65,0x21,0x3d,0x3d,0x69,0x74,0x26,0x26,0x28,0x69,0x74,0x26,0x26,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x28,0x6f,0x74,0x3d,0x65,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x2d,0x69,0x74,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x2c,0x75,0x74,0x3d,0x65,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x2d,0x69,0x74,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x29,0x3a,0x75,0x74,0x3d,0x6f,0x74,0x3d,0x30,0x2c,0x69,0x74,0x3d,0x65,0x29,0x2c,0x6f,0x74,0x29,0x7d,0x2c,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x3a,0x75,0x74,0x7d,0x7d,0x29,0x2c,0x6d,0x74,0x3d,0x61,0x74,0x28,0x70,0x74,0x29,0x2c,0x68,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x70,0x74,0x2c,0x7b,0x64,0x61,0x74,0x61,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x76,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x66,0x74,0x2c,0x7b,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x67,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x73,0x74,0x2c,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x4e,0x61,0x6d,0x65,0x3a,0x30,0x2c,0x65,0x6c,0x61,0x70,0x73,0x65,0x64,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x70,0x73,0x65,0x75,0x64,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x79,0x74,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x73,0x74,0x2c,0x7b,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x7d,0x7d,0x29,0x2c,0x62,0x74,0x3d,0x61,0x74,0x28,0x79,0x74,0x29,0x2c,0x6b,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x73,0x74,0x2c,0x7b,0x64,0x61,0x74,0x61,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x77,0x74,0x3d,0x7b,0x45,0x73,0x63,0x3a,0x22,0x45,0x73,0x63,0x61,0x70,0x65,0x22,0x2c,0x53,0x70,0x61,0x63,0x65,0x62,0x61,0x72,0x3a,0x22,0x20,0x22,0x2c,0x4c,0x65,0x66,0x74,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x4c,0x65,0x66,0x74,0x22,0x2c,0x55,0x70,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x55,0x70,0x22,0x2c,0x52,0x69,0x67,0x68,0x74,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x52,0x69,0x67,0x68,0x74,0x22,0x2c,0x44,0x6f,0x77,0x6e,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x44,0x6f,0x77,0x6e,0x22,0x2c,0x44,0x65,0x6c,0x3a,0x22,0x44,0x65,0x6c,0x65,0x74,0x65,0x22,0x2c,0x57,0x69,0x6e,0x3a,0x22,0x4f,0x53,0x22,0x2c,0x4d,0x65,0x6e,0x75,0x3a,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x22,0x2c,0x41,0x70,0x70,0x73,0x3a,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x22,0x2c,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x3a,0x22,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x6f,0x63,0x6b,0x22,0x2c,0x4d,0x6f,0x7a,0x50,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x4b,0x65,0x79,0x3a,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x22,0x7d,0x2c,0x53,0x74,0x3d,0x7b,0x38,0x3a,0x22,0x42,0x61,0x63,0x6b,0x73,0x70,0x61,0x63,0x65,0x22,0x2c,0x39,0x3a,0x22,0x54,0x61,0x62,0x22,0x2c,0x31,0x32,0x3a,0x22,0x43,0x6c,0x65,0x61,0x72,0x22,0x2c,0x31,0x33,0x3a,0x22,0x45,0x6e,0x74,0x65,0x72,0x22,0x2c,0x31,0x36,0x3a,0x22,0x53,0x68,0x69,0x66,0x74,0x22,0x2c,0x31,0x37,0x3a,0x22,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x22,0x2c,0x31,0x38,0x3a,0x22,0x41,0x6c,0x74,0x22,0x2c,0x31,0x39,0x3a,0x22,0x50,0x61,0x75,0x73,0x65,0x22,0x2c,0x32,0x30,0x3a,0x22,0x43,0x61,0x70,0x73,0x4c,0x6f,0x63,0x6b,0x22,0x2c,0x32,0x37,0x3a,0x22,0x45,0x73,0x63,0x61,0x70,0x65,0x22,0x2c,0x33,0x32,0x3a,0x22,0x20,0x22,0x2c,0x33,0x33,0x3a,0x22,0x50,0x61,0x67,0x65,0x55,0x70,0x22,0x2c,0x33,0x34,0x3a,0x22,0x50,0x61,0x67,0x65,0x44,0x6f,0x77,0x6e,0x22,0x2c,0x33,0x35,0x3a,0x22,0x45,0x6e,0x64,0x22,0x2c,0x33,0x36,0x3a,0x22,0x48,0x6f,0x6d,0x65,0x22,0x2c,0x33,0x37,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x4c,0x65,0x66,0x74,0x22,0x2c,0x33,0x38,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x55,0x70,0x22,0x2c,0x33,0x39,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x52,0x69,0x67,0x68,0x74,0x22,0x2c,0x34,0x30,0x3a,0x22,0x41,0x72,0x72,0x6f,0x77,0x44,0x6f,0x77,0x6e,0x22,0x2c,0x34,0x35,0x3a,0x22,0x49,0x6e,0x73,0x65,0x72,0x74,0x22,0x2c,0x34,0x36,0x3a,0x22,0x44,0x65,0x6c,0x65,0x74,0x65,0x22,0x2c,0x31,0x31,0x32,0x3a,0x22,0x46,0x31,0x22,0x2c,0x31,0x31,0x33,0x3a,0x22,0x46,0x32,0x22,0x2c,0x31,0x31,0x34,0x3a,0x22,0x46,0x33,0x22,0x2c,0x31,0x31,0x35,0x3a,0x22,0x46,0x34,0x22,0x2c,0x31,0x31,0x36,0x3a,0x22,0x46,0x35,0x22,0x2c,0x31,0x31,0x37,0x3a,0x22,0x46,0x36,0x22,0x2c,0x31,0x31,0x38,0x3a,0x22,0x46,0x37,0x22,0x2c,0x31,0x31,0x39,0x3a,0x22,0x46,0x38,0x22,0x2c,0x31,0x32,0x30,0x3a,0x22,0x46,0x39,0x22,0x2c,0x31,0x32,0x31,0x3a,0x22,0x46,0x31,0x30,0x22,0x2c,0x31,0x32,0x32,0x3a,0x22,0x46,0x31,0x31,0x22,0x2c,0x31,0x32,0x33,0x3a,0x22,0x46,0x31,0x32,0x22,0x2c,0x31,0x34,0x34,0x3a,0x22,0x4e,0x75,0x6d,0x4c,0x6f,0x63,0x6b,0x22,0x2c,0x31,0x34,0x35,0x3a,0x22,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x6f,0x63,0x6b,0x22,0x2c,0x32,0x32,0x34,0x3a,0x22,0x4d,0x65,0x74,0x61,0x22,0x7d,0x2c,0x78,0x74,0x3d,0x7b,0x41,0x6c,0x74,0x3a,0x22,0x61,0x6c,0x74,0x4b,0x65,0x79,0x22,0x2c,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x3a,0x22,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x22,0x2c,0x4d,0x65,0x74,0x61,0x3a,0x22,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x22,0x2c,0x53,0x68,0x69,0x66,0x74,0x3a,0x22,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x22,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x74,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3f,0x6e,0x2e,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x28,0x65,0x29,0x3a,0x21,0x21,0x28,0x65,0x3d,0x78,0x74,0x5b,0x65,0x5d,0x29,0x26,0x26,0x21,0x21,0x6e,0x5b,0x65,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x74,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x45,0x74,0x7d,0x76,0x61,0x72,0x20,0x5f,0x74,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x66,0x74,0x2c,0x7b,0x6b,0x65,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x2e,0x6b,0x65,0x79,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x77,0x74,0x5b,0x65,0x2e,0x6b,0x65,0x79,0x5d,0x7c,0x7c,0x65,0x2e,0x6b,0x65,0x79,0x3b,0x69,0x66,0x28,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x22,0x21,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x31,0x33,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x74,0x28,0x65,0x29,0x29,0x3f,0x22,0x45,0x6e,0x74,0x65,0x72,0x22,0x3a,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x65,0x29,0x3a,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x53,0x74,0x5b,0x65,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x5d,0x7c,0x7c,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x22,0x3a,0x22,0x22,0x7d,0x2c,0x63,0x6f,0x64,0x65,0x3a,0x30,0x2c,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x72,0x65,0x70,0x65,0x61,0x74,0x3a,0x30,0x2c,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x43,0x74,0x2c,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x74,0x74,0x28,0x65,0x29,0x3a,0x30,0x7d,0x2c,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x65,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x2c,0x77,0x68,0x69,0x63,0x68,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x74,0x74,0x28,0x65,0x29,0x3a,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x65,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x7d,0x29,0x2c,0x50,0x74,0x3d,0x61,0x74,0x28,0x5f,0x74,0x29,0x2c,0x4e,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x70,0x74,0x2c,0x7b,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x3a,0x30,0x2c,0x77,0x69,0x64,0x74,0x68,0x3a,0x30,0x2c,0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x30,0x2c,0x70,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x3a,0x30,0x2c,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x69,0x61,0x6c,0x50,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x3a,0x30,0x2c,0x74,0x69,0x6c,0x74,0x58,0x3a,0x30,0x2c,0x74,0x69,0x6c,0x74,0x59,0x3a,0x30,0x2c,0x74,0x77,0x69,0x73,0x74,0x3a,0x30,0x2c,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x54,0x79,0x70,0x65,0x3a,0x30,0x2c,0x69,0x73,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x7a,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x66,0x74,0x2c,0x7b,0x74,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x43,0x74,0x7d,0x29,0x29,0x2c,0x54,0x74,0x3d,0x61,0x74,0x28,0x44,0x28,0x7b,0x7d,0x2c,0x73,0x74,0x2c,0x7b,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x3a,0x30,0x2c,0x65,0x6c,0x61,0x70,0x73,0x65,0x64,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x70,0x73,0x65,0x75,0x64,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x30,0x7d,0x29,0x29,0x2c,0x4c,0x74,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x70,0x74,0x2c,0x7b,0x64,0x65,0x6c,0x74,0x61,0x58,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x64,0x65,0x6c,0x74,0x61,0x58,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x64,0x65,0x6c,0x74,0x61,0x58,0x3a,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x58,0x22,0x69,0x6e,0x20,0x65,0x3f,0x2d,0x65,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x58,0x3a,0x30,0x7d,0x2c,0x64,0x65,0x6c,0x74,0x61,0x59,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x64,0x65,0x6c,0x74,0x61,0x59,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x64,0x65,0x6c,0x74,0x61,0x59,0x3a,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x59,0x22,0x69,0x6e,0x20,0x65,0x3f,0x2d,0x65,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x59,0x3a,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x22,0x69,0x6e,0x20,0x65,0x3f,0x2d,0x65,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x3a,0x30,0x7d,0x2c,0x64,0x65,0x6c,0x74,0x61,0x5a,0x3a,0x30,0x2c,0x64,0x65,0x6c,0x74,0x61,0x4d,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x29,0x2c,0x52,0x74,0x3d,0x61,0x74,0x28,0x4c,0x74,0x29,0x2c,0x46,0x74,0x3d,0x5b,0x39,0x2c,0x31,0x33,0x2c,0x32,0x37,0x2c,0x33,0x32,0x5d,0x2c,0x4f,0x74,0x3d,0x63,0x26,0x26,0x22,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x4d,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x26,0x26,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x28,0x4d,0x74,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x29,0x3b,0x76,0x61,0x72,0x20,0x49,0x74,0x3d,0x63,0x26,0x26,0x22,0x54,0x65,0x78,0x74,0x45,0x76,0x65,0x6e,0x74,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x26,0x26,0x21,0x4d,0x74,0x2c,0x44,0x74,0x3d,0x63,0x26,0x26,0x28,0x21,0x4f,0x74,0x7c,0x7c,0x4d,0x74,0x26,0x26,0x38,0x3c,0x4d,0x74,0x26,0x26,0x31,0x31,0x3e,0x3d,0x4d,0x74,0x29,0x2c,0x55,0x74,0x3d,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x33,0x32,0x29,0x2c,0x6a,0x74,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x21,0x3d,0x3d,0x46,0x74,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x6e,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x32,0x39,0x21,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x74,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x65,0x3d,0x65,0x2e,0x64,0x65,0x74,0x61,0x69,0x6c,0x29,0x26,0x26,0x22,0x64,0x61,0x74,0x61,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x64,0x61,0x74,0x61,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x24,0x74,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x42,0x74,0x3d,0x7b,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x21,0x30,0x2c,0x64,0x61,0x74,0x65,0x3a,0x21,0x30,0x2c,0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,0x3a,0x21,0x30,0x2c,0x22,0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,0x2d,0x6c,0x6f,0x63,0x61,0x6c,0x22,0x3a,0x21,0x30,0x2c,0x65,0x6d,0x61,0x69,0x6c,0x3a,0x21,0x30,0x2c,0x6d,0x6f,0x6e,0x74,0x68,0x3a,0x21,0x30,0x2c,0x6e,0x75,0x6d,0x62,0x65,0x72,0x3a,0x21,0x30,0x2c,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3a,0x21,0x30,0x2c,0x72,0x61,0x6e,0x67,0x65,0x3a,0x21,0x30,0x2c,0x73,0x65,0x61,0x72,0x63,0x68,0x3a,0x21,0x30,0x2c,0x74,0x65,0x6c,0x3a,0x21,0x30,0x2c,0x74,0x65,0x78,0x74,0x3a,0x21,0x30,0x2c,0x74,0x69,0x6d,0x65,0x3a,0x21,0x30,0x2c,0x75,0x72,0x6c,0x3a,0x21,0x30,0x2c,0x77,0x65,0x65,0x6b,0x3a,0x21,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x74,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x26,0x26,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x6e,0x3f,0x21,0x21,0x42,0x74,0x5b,0x65,0x2e,0x74,0x79,0x70,0x65,0x5d,0x3a,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3d,0x3d,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x74,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x5f,0x65,0x28,0x72,0x29,0x2c,0x30,0x3c,0x28,0x6e,0x3d,0x51,0x72,0x28,0x6e,0x2c,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x22,0x29,0x29,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x74,0x3d,0x6e,0x65,0x77,0x20,0x63,0x74,0x28,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x72,0x29,0x2c,0x65,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x74,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x6e,0x7d,0x29,0x29,0x7d,0x76,0x61,0x72,0x20,0x51,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x74,0x28,0x65,0x29,0x7b,0x55,0x72,0x28,0x65,0x2c,0x30,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x74,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x71,0x28,0x6b,0x6c,0x28,0x65,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x76,0x61,0x72,0x20,0x47,0x74,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x5a,0x74,0x3b,0x69,0x66,0x28,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x4a,0x74,0x3d,0x22,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x69,0x66,0x28,0x21,0x4a,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x72,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x22,0x64,0x69,0x76,0x22,0x29,0x3b,0x65,0x72,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x22,0x29,0x2c,0x4a,0x74,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x72,0x2e,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x7d,0x5a,0x74,0x3d,0x4a,0x74,0x7d,0x65,0x6c,0x73,0x65,0x20,0x5a,0x74,0x3d,0x21,0x31,0x3b,0x47,0x74,0x3d,0x5a,0x74,0x26,0x26,0x28,0x21,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x7c,0x7c,0x39,0x3c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x72,0x28,0x29,0x7b,0x51,0x74,0x26,0x26,0x28,0x51,0x74,0x2e,0x64,0x65,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x22,0x6f,0x6e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x74,0x72,0x29,0x2c,0x71,0x74,0x3d,0x51,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x72,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x59,0x74,0x28,0x71,0x74,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x5b,0x5d,0x3b,0x57,0x74,0x28,0x6e,0x2c,0x71,0x74,0x2c,0x65,0x2c,0x77,0x65,0x28,0x65,0x29,0x29,0x2c,0x4c,0x65,0x28,0x4b,0x74,0x2c,0x6e,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x3f,0x28,0x6e,0x72,0x28,0x29,0x2c,0x71,0x74,0x3d,0x74,0x2c,0x28,0x51,0x74,0x3d,0x6e,0x29,0x2e,0x61,0x74,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x22,0x6f,0x6e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x74,0x72,0x29,0x29,0x3a,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x72,0x28,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x72,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x59,0x74,0x28,0x71,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x59,0x74,0x28,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x59,0x74,0x28,0x6e,0x29,0x7d,0x76,0x61,0x72,0x20,0x75,0x72,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x69,0x73,0x3f,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x69,0x73,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x65,0x7c,0x7c,0x31,0x2f,0x65,0x3d,0x3d,0x3d,0x31,0x2f,0x6e,0x29,0x7c,0x7c,0x65,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x21,0x3d,0x3d,0x6e,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x75,0x72,0x28,0x65,0x2c,0x6e,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x65,0x29,0x2c,0x72,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x6e,0x29,0x3b,0x69,0x66,0x28,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x21,0x3d,0x3d,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x72,0x3d,0x30,0x3b,0x72,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x72,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x5b,0x72,0x5d,0x3b,0x69,0x66,0x28,0x21,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x2c,0x6c,0x29,0x7c,0x7c,0x21,0x75,0x72,0x28,0x65,0x5b,0x6c,0x5d,0x2c,0x6e,0x5b,0x6c,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x72,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x65,0x26,0x26,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x65,0x3d,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x2c,0x72,0x3d,0x73,0x72,0x28,0x65,0x29,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x72,0x3b,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x72,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x65,0x2b,0x72,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x65,0x3c,0x3d,0x6e,0x26,0x26,0x74,0x3e,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x6e,0x6f,0x64,0x65,0x3a,0x72,0x2c,0x6f,0x66,0x66,0x73,0x65,0x74,0x3a,0x6e,0x2d,0x65,0x7d,0x3b,0x65,0x3d,0x74,0x7d,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x72,0x3b,0x29,0x7b,0x69,0x66,0x28,0x72,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7b,0x72,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x72,0x3d,0x72,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x72,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x72,0x3d,0x73,0x72,0x28,0x72,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x65,0x7c,0x7c,0x21,0x6e,0x29,0x26,0x26,0x28,0x65,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x28,0x21,0x65,0x7c,0x7c,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x26,0x26,0x28,0x6e,0x26,0x26,0x33,0x3d,0x3d,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x66,0x72,0x28,0x65,0x2c,0x6e,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x29,0x3a,0x22,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x22,0x69,0x6e,0x20,0x65,0x3f,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x28,0x6e,0x29,0x3a,0x21,0x21,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x26,0x26,0x21,0x21,0x28,0x31,0x36,0x26,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x29,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x72,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x6e,0x3d,0x4b,0x28,0x29,0x3b,0x6e,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x6f,0x66,0x20,0x65,0x2e,0x48,0x54,0x4d,0x4c,0x49,0x46,0x72,0x61,0x6d,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3b,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x72,0x65,0x66,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x72,0x29,0x7b,0x74,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x21,0x74,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x6e,0x3d,0x4b,0x28,0x28,0x65,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x72,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x26,0x26,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x26,0x26,0x28,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x22,0x74,0x65,0x78,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x73,0x65,0x61,0x72,0x63,0x68,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x74,0x65,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x75,0x72,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x74,0x72,0x75,0x65,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x72,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x64,0x72,0x28,0x29,0x2c,0x74,0x3d,0x65,0x2e,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x45,0x6c,0x65,0x6d,0x2c,0x72,0x3d,0x65,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x52,0x61,0x6e,0x67,0x65,0x3b,0x69,0x66,0x28,0x6e,0x21,0x3d,0x3d,0x74,0x26,0x26,0x74,0x26,0x26,0x74,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x66,0x72,0x28,0x74,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x74,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x70,0x72,0x28,0x74,0x29,0x29,0x69,0x66,0x28,0x6e,0x3d,0x72,0x2e,0x73,0x74,0x61,0x72,0x74,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x72,0x2e,0x65,0x6e,0x64,0x29,0x26,0x26,0x28,0x65,0x3d,0x6e,0x29,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x69,0x6e,0x20,0x74,0x29,0x74,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x3d,0x6e,0x2c,0x74,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x65,0x2c,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x28,0x65,0x3d,0x28,0x6e,0x3d,0x74,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x26,0x26,0x6e,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x61,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x72,0x2e,0x73,0x74,0x61,0x72,0x74,0x2c,0x6c,0x29,0x3b,0x72,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x72,0x2e,0x65,0x6e,0x64,0x3f,0x61,0x3a,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x72,0x2e,0x65,0x6e,0x64,0x2c,0x6c,0x29,0x2c,0x21,0x65,0x2e,0x65,0x78,0x74,0x65,0x6e,0x64,0x26,0x26,0x61,0x3e,0x72,0x26,0x26,0x28,0x6c,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x2c,0x61,0x3d,0x6c,0x29,0x2c,0x6c,0x3d,0x63,0x72,0x28,0x74,0x2c,0x61,0x29,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x63,0x72,0x28,0x74,0x2c,0x72,0x29,0x3b,0x6c,0x26,0x26,0x6f,0x26,0x26,0x28,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x72,0x61,0x6e,0x67,0x65,0x43,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x65,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x6c,0x2e,0x6e,0x6f,0x64,0x65,0x7c,0x7c,0x65,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x21,0x3d,0x3d,0x6c,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x7c,0x7c,0x65,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x6f,0x2e,0x6e,0x6f,0x64,0x65,0x7c,0x7c,0x65,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x21,0x3d,0x3d,0x6f,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x26,0x26,0x28,0x28,0x6e,0x3d,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x61,0x6e,0x67,0x65,0x28,0x29,0x29,0x2e,0x73,0x65,0x74,0x53,0x74,0x61,0x72,0x74,0x28,0x6c,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x6c,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x6c,0x6c,0x52,0x61,0x6e,0x67,0x65,0x73,0x28,0x29,0x2c,0x61,0x3e,0x72,0x3f,0x28,0x65,0x2e,0x61,0x64,0x64,0x52,0x61,0x6e,0x67,0x65,0x28,0x6e,0x29,0x2c,0x65,0x2e,0x65,0x78,0x74,0x65,0x6e,0x64,0x28,0x6f,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x6f,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3a,0x28,0x6e,0x2e,0x73,0x65,0x74,0x45,0x6e,0x64,0x28,0x6f,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x6f,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x65,0x2e,0x61,0x64,0x64,0x52,0x61,0x6e,0x67,0x65,0x28,0x6e,0x29,0x29,0x29,0x7d,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x5b,0x5d,0x2c,0x65,0x3d,0x74,0x3b,0x65,0x3d,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x29,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x65,0x2c,0x6c,0x65,0x66,0x74,0x3a,0x65,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x65,0x66,0x74,0x2c,0x74,0x6f,0x70,0x3a,0x65,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x54,0x6f,0x70,0x7d,0x29,0x3b,0x66,0x6f,0x72,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x2e,0x66,0x6f,0x63,0x75,0x73,0x26,0x26,0x74,0x2e,0x66,0x6f,0x63,0x75,0x73,0x28,0x29,0x2c,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x28,0x65,0x3d,0x6e,0x5b,0x74,0x5d,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x65,0x66,0x74,0x3d,0x65,0x2e,0x6c,0x65,0x66,0x74,0x2c,0x65,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x54,0x6f,0x70,0x3d,0x65,0x2e,0x74,0x6f,0x70,0x7d,0x7d,0x76,0x61,0x72,0x20,0x68,0x72,0x3d,0x63,0x26,0x26,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x31,0x31,0x3e,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x2c,0x76,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x67,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x72,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3d,0x3d,0x3d,0x74,0x3f,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3a,0x39,0x3d,0x3d,0x3d,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x74,0x3a,0x74,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x62,0x72,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x76,0x72,0x7c,0x7c,0x76,0x72,0x21,0x3d,0x3d,0x4b,0x28,0x72,0x29,0x7c,0x7c,0x28,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x69,0x6e,0x28,0x72,0x3d,0x76,0x72,0x29,0x26,0x26,0x70,0x72,0x28,0x72,0x29,0x3f,0x72,0x3d,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x72,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x65,0x6e,0x64,0x3a,0x72,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x7d,0x3a,0x72,0x3d,0x7b,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x3a,0x28,0x72,0x3d,0x28,0x72,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x72,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x29,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x2c,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x3a,0x72,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x3a,0x72,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x2c,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x3a,0x72,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x7d,0x2c,0x79,0x72,0x26,0x26,0x69,0x72,0x28,0x79,0x72,0x2c,0x72,0x29,0x7c,0x7c,0x28,0x79,0x72,0x3d,0x72,0x2c,0x30,0x3c,0x28,0x72,0x3d,0x51,0x72,0x28,0x67,0x72,0x2c,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x22,0x29,0x29,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x63,0x74,0x28,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x6e,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x72,0x7d,0x29,0x2c,0x6e,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x76,0x72,0x29,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x7b,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x5b,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x5d,0x3d,0x6e,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x74,0x5b,0x22,0x57,0x65,0x62,0x6b,0x69,0x74,0x22,0x2b,0x65,0x5d,0x3d,0x22,0x77,0x65,0x62,0x6b,0x69,0x74,0x22,0x2b,0x6e,0x2c,0x74,0x5b,0x22,0x4d,0x6f,0x7a,0x22,0x2b,0x65,0x5d,0x3d,0x22,0x6d,0x6f,0x7a,0x22,0x2b,0x6e,0x2c,0x74,0x7d,0x76,0x61,0x72,0x20,0x53,0x72,0x3d,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x3a,0x77,0x72,0x28,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x29,0x2c,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x77,0x72,0x28,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x22,0x29,0x2c,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x3a,0x77,0x72,0x28,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x29,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x3a,0x77,0x72,0x28,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x29,0x7d,0x2c,0x78,0x72,0x3d,0x7b,0x7d,0x2c,0x45,0x72,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x72,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x78,0x72,0x5b,0x65,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x78,0x72,0x5b,0x65,0x5d,0x3b,0x69,0x66,0x28,0x21,0x53,0x72,0x5b,0x65,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x74,0x3d,0x53,0x72,0x5b,0x65,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x6e,0x20,0x69,0x6e,0x20,0x74,0x29,0x69,0x66,0x28,0x74,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x29,0x26,0x26,0x6e,0x20,0x69,0x6e,0x20,0x45,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x78,0x72,0x5b,0x65,0x5d,0x3d,0x74,0x5b,0x6e,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x63,0x26,0x26,0x28,0x45,0x72,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x22,0x64,0x69,0x76,0x22,0x29,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x28,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x53,0x72,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x53,0x72,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x53,0x72,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x53,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x5f,0x72,0x3d,0x43,0x72,0x28,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x29,0x2c,0x50,0x72,0x3d,0x43,0x72,0x28,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x22,0x29,0x2c,0x4e,0x72,0x3d,0x43,0x72,0x28,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x22,0x29,0x2c,0x7a,0x72,0x3d,0x43,0x72,0x28,0x22,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x29,0x2c,0x54,0x72,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x4c,0x72,0x3d,0x22,0x61,0x62,0x6f,0x72,0x74,0x20,0x61,0x75,0x78,0x43,0x6c,0x69,0x63,0x6b,0x20,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x63,0x61,0x6e,0x50,0x6c,0x61,0x79,0x20,0x63,0x61,0x6e,0x50,0x6c,0x61,0x79,0x54,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x20,0x63,0x6f,0x70,0x79,0x20,0x63,0x75,0x74,0x20,0x64,0x72,0x61,0x67,0x20,0x64,0x72,0x61,0x67,0x45,0x6e,0x64,0x20,0x64,0x72,0x61,0x67,0x45,0x6e,0x74,0x65,0x72,0x20,0x64,0x72,0x61,0x67,0x45,0x78,0x69,0x74,0x20,0x64,0x72,0x61,0x67,0x4c,0x65,0x61,0x76,0x65,0x20,0x64,0x72,0x61,0x67,0x4f,0x76,0x65,0x72,0x20,0x64,0x72,0x61,0x67,0x53,0x74,0x61,0x72,0x74,0x20,0x64,0x72,0x6f,0x70,0x20,0x64,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x65,0x6d,0x70,0x74,0x69,0x65,0x64,0x20,0x65,0x6e,0x63,0x72,0x79,0x70,0x74,0x65,0x64,0x20,0x65,0x6e,0x64,0x65,0x64,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x67,0x6f,0x74,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x6b,0x65,0x79,0x44,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x50,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x55,0x70,0x20,0x6c,0x6f,0x61,0x64,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x44,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x4d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x53,0x74,0x61,0x72,0x74,0x20,0x6c,0x6f,0x73,0x74,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x6d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4f,0x75,0x74,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4f,0x76,0x65,0x72,0x20,0x6d,0x6f,0x75,0x73,0x65,0x55,0x70,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x70,0x61,0x75,0x73,0x65,0x20,0x70,0x6c,0x61,0x79,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x6e,0x63,0x65,0x6c,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x44,0x6f,0x77,0x6e,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4d,0x6f,0x76,0x65,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4f,0x75,0x74,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4f,0x76,0x65,0x72,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x55,0x70,0x20,0x70,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x20,0x72,0x61,0x74,0x65,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x72,0x65,0x73,0x65,0x74,0x20,0x72,0x65,0x73,0x69,0x7a,0x65,0x20,0x73,0x65,0x65,0x6b,0x65,0x64,0x20,0x73,0x65,0x65,0x6b,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x20,0x73,0x75,0x62,0x6d,0x69,0x74,0x20,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x20,0x74,0x69,0x6d,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x20,0x74,0x6f,0x75,0x63,0x68,0x43,0x61,0x6e,0x63,0x65,0x6c,0x20,0x74,0x6f,0x75,0x63,0x68,0x45,0x6e,0x64,0x20,0x74,0x6f,0x75,0x63,0x68,0x53,0x74,0x61,0x72,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x20,0x74,0x6f,0x67,0x67,0x6c,0x65,0x20,0x74,0x6f,0x75,0x63,0x68,0x4d,0x6f,0x76,0x65,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x20,0x77,0x68,0x65,0x65,0x6c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x54,0x72,0x2e,0x73,0x65,0x74,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x69,0x28,0x6e,0x2c,0x5b,0x65,0x5d,0x29,0x7d,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x46,0x72,0x3d,0x30,0x3b,0x46,0x72,0x3c,0x4c,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x46,0x72,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x4f,0x72,0x3d,0x4c,0x72,0x5b,0x46,0x72,0x5d,0x3b,0x52,0x72,0x28,0x4f,0x72,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x22,0x6f,0x6e,0x22,0x2b,0x28,0x4f,0x72,0x5b,0x30,0x5d,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2b,0x4f,0x72,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x31,0x29,0x29,0x29,0x7d,0x52,0x72,0x28,0x5f,0x72,0x2c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x29,0x2c,0x52,0x72,0x28,0x50,0x72,0x2c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x22,0x29,0x2c,0x52,0x72,0x28,0x4e,0x72,0x2c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x29,0x2c,0x52,0x72,0x28,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x22,0x2c,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x22,0x29,0x2c,0x52,0x72,0x28,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x2c,0x22,0x6f,0x6e,0x46,0x6f,0x63,0x75,0x73,0x22,0x29,0x2c,0x52,0x72,0x28,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x2c,0x22,0x6f,0x6e,0x42,0x6c,0x75,0x72,0x22,0x29,0x2c,0x52,0x72,0x28,0x7a,0x72,0x2c,0x22,0x6f,0x6e,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x29,0x2c,0x73,0x28,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x22,0x2c,0x5b,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x5d,0x29,0x2c,0x73,0x28,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4c,0x65,0x61,0x76,0x65,0x22,0x2c,0x5b,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x5d,0x29,0x2c,0x73,0x28,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x45,0x6e,0x74,0x65,0x72,0x22,0x2c,0x5b,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x5d,0x29,0x2c,0x73,0x28,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4c,0x65,0x61,0x76,0x65,0x22,0x2c,0x5b,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x5d,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x20,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x22,0x2c,0x5b,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x2c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x2c,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x70,0x61,0x73,0x74,0x65,0x22,0x5d,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x29,0x2c,0x69,0x28,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x4d,0x72,0x3d,0x22,0x61,0x62,0x6f,0x72,0x74,0x20,0x63,0x61,0x6e,0x70,0x6c,0x61,0x79,0x20,0x63,0x61,0x6e,0x70,0x6c,0x61,0x79,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x64,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x65,0x6d,0x70,0x74,0x69,0x65,0x64,0x20,0x65,0x6e,0x63,0x72,0x79,0x70,0x74,0x65,0x64,0x20,0x65,0x6e,0x64,0x65,0x64,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x6d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x73,0x74,0x61,0x72,0x74,0x20,0x70,0x61,0x75,0x73,0x65,0x20,0x70,0x6c,0x61,0x79,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x70,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x20,0x72,0x61,0x74,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x72,0x65,0x73,0x69,0x7a,0x65,0x20,0x73,0x65,0x65,0x6b,0x65,0x64,0x20,0x73,0x65,0x65,0x6b,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x20,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x20,0x74,0x69,0x6d,0x65,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2c,0x49,0x72,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x28,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x6c,0x6f,0x61,0x64,0x20,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x20,0x74,0x6f,0x67,0x67,0x6c,0x65,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x22,0x20,0x22,0x29,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x4d,0x72,0x29,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x2d,0x65,0x76,0x65,0x6e,0x74,0x22,0x3b,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x74,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x6f,0x2c,0x75,0x2c,0x69,0x2c,0x73,0x29,0x7b,0x69,0x66,0x28,0x56,0x65,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x2c,0x49,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x49,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x39,0x38,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x44,0x65,0x3b,0x49,0x65,0x3d,0x21,0x31,0x2c,0x44,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x55,0x65,0x7c,0x7c,0x28,0x55,0x65,0x3d,0x21,0x30,0x2c,0x6a,0x65,0x3d,0x63,0x29,0x7d,0x7d,0x28,0x72,0x2c,0x6e,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x65,0x29,0x2c,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x6e,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x34,0x26,0x6e,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x5b,0x74,0x5d,0x2c,0x6c,0x3d,0x72,0x2e,0x65,0x76,0x65,0x6e,0x74,0x3b,0x72,0x3d,0x72,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3b,0x65,0x3a,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x6e,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6f,0x3d,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x3b,0x30,0x3c,0x3d,0x6f,0x3b,0x6f,0x2d,0x2d,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x72,0x5b,0x6f,0x5d,0x2c,0x69,0x3d,0x75,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2c,0x73,0x3d,0x75,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3b,0x69,0x66,0x28,0x75,0x3d,0x75,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x2c,0x69,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6c,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x28,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x44,0x72,0x28,0x6c,0x2c,0x75,0x2c,0x73,0x29,0x2c,0x61,0x3d,0x69,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x6f,0x3d,0x30,0x3b,0x6f,0x3c,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6f,0x2b,0x2b,0x29,0x7b,0x69,0x66,0x28,0x69,0x3d,0x28,0x75,0x3d,0x72,0x5b,0x6f,0x5d,0x29,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2c,0x73,0x3d,0x75,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x2c,0x75,0x3d,0x75,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x2c,0x69,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6c,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x28,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x44,0x72,0x28,0x6c,0x2c,0x75,0x2c,0x73,0x29,0x2c,0x61,0x3d,0x69,0x7d,0x7d,0x7d,0x69,0x66,0x28,0x55,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x3d,0x6a,0x65,0x2c,0x55,0x65,0x3d,0x21,0x31,0x2c,0x6a,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x5b,0x68,0x6c,0x5d,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x28,0x74,0x3d,0x6e,0x5b,0x68,0x6c,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2b,0x22,0x5f,0x5f,0x62,0x75,0x62,0x62,0x6c,0x65,0x22,0x3b,0x74,0x2e,0x68,0x61,0x73,0x28,0x72,0x29,0x7c,0x7c,0x28,0x42,0x72,0x28,0x6e,0x2c,0x65,0x2c,0x32,0x2c,0x21,0x31,0x29,0x2c,0x74,0x2e,0x61,0x64,0x64,0x28,0x72,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x3b,0x6e,0x26,0x26,0x28,0x72,0x7c,0x3d,0x34,0x29,0x2c,0x42,0x72,0x28,0x74,0x2c,0x65,0x2c,0x72,0x2c,0x6e,0x29,0x7d,0x76,0x61,0x72,0x20,0x56,0x72,0x3d,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x69,0x6e,0x67,0x22,0x2b,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x32,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x72,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x5b,0x56,0x72,0x5d,0x29,0x7b,0x65,0x5b,0x56,0x72,0x5d,0x3d,0x21,0x30,0x2c,0x6f,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x7b,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x49,0x72,0x2e,0x68,0x61,0x73,0x28,0x6e,0x29,0x7c,0x7c,0x41,0x72,0x28,0x6e,0x2c,0x21,0x31,0x2c,0x65,0x29,0x2c,0x41,0x72,0x28,0x6e,0x2c,0x21,0x30,0x2c,0x65,0x29,0x29,0x7d,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x39,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x3a,0x65,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x6e,0x5b,0x56,0x72,0x5d,0x7c,0x7c,0x28,0x6e,0x5b,0x56,0x72,0x5d,0x3d,0x21,0x30,0x2c,0x41,0x72,0x28,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x21,0x31,0x2c,0x6e,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x47,0x6e,0x28,0x6e,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x6c,0x3d,0x51,0x6e,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x6c,0x3d,0x71,0x6e,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6c,0x3d,0x4b,0x6e,0x7d,0x74,0x3d,0x6c,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x74,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x21,0x46,0x65,0x7c,0x7c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x22,0x77,0x68,0x65,0x65,0x6c,0x22,0x21,0x3d,0x3d,0x6e,0x7c,0x7c,0x28,0x6c,0x3d,0x21,0x30,0x29,0x2c,0x72,0x3f,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6c,0x3f,0x65,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x6e,0x2c,0x74,0x2c,0x7b,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x2c,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x6c,0x7d,0x29,0x3a,0x65,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x6e,0x2c,0x74,0x2c,0x21,0x30,0x29,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6c,0x3f,0x65,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x6e,0x2c,0x74,0x2c,0x7b,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x6c,0x7d,0x29,0x3a,0x65,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x6e,0x2c,0x74,0x2c,0x21,0x31,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x72,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x26,0x6e,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x65,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x72,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x6f,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x69,0x66,0x28,0x75,0x3d,0x3d,0x3d,0x6c,0x7c,0x7c,0x38,0x3d,0x3d,0x3d,0x75,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x75,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x6c,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x34,0x3d,0x3d,0x3d,0x6f,0x29,0x66,0x6f,0x72,0x28,0x6f,0x3d,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x28,0x33,0x3d,0x3d,0x3d,0x69,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x69,0x29,0x26,0x26,0x28,0x28,0x69,0x3d,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x3d,0x3d,0x3d,0x6c,0x7c,0x7c,0x38,0x3d,0x3d,0x3d,0x69,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x69,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x6c,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6f,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6f,0x3d,0x79,0x6c,0x28,0x75,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x28,0x69,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x29,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x69,0x29,0x7b,0x72,0x3d,0x61,0x3d,0x6f,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x65,0x7d,0x75,0x3d,0x75,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x7d,0x72,0x3d,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x4c,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x61,0x2c,0x6c,0x3d,0x77,0x65,0x28,0x74,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x3b,0x65,0x3a,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x54,0x72,0x2e,0x67,0x65,0x74,0x28,0x65,0x29,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x75,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x63,0x74,0x2c,0x73,0x3d,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3a,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x74,0x74,0x28,0x74,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3a,0x69,0x3d,0x50,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3a,0x73,0x3d,0x22,0x66,0x6f,0x63,0x75,0x73,0x22,0x2c,0x69,0x3d,0x76,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3a,0x73,0x3d,0x22,0x62,0x6c,0x75,0x72,0x22,0x2c,0x69,0x3d,0x76,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x62,0x6c,0x75,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x61,0x66,0x74,0x65,0x72,0x62,0x6c,0x75,0x72,0x22,0x3a,0x69,0x3d,0x76,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x69,0x66,0x28,0x32,0x3d,0x3d,0x3d,0x74,0x2e,0x62,0x75,0x74,0x74,0x6f,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x22,0x3a,0x69,0x3d,0x6d,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x78,0x69,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x6f,0x70,0x22,0x3a,0x69,0x3d,0x68,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x69,0x3d,0x7a,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5f,0x72,0x3a,0x63,0x61,0x73,0x65,0x20,0x50,0x72,0x3a,0x63,0x61,0x73,0x65,0x20,0x4e,0x72,0x3a,0x69,0x3d,0x67,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x7a,0x72,0x3a,0x69,0x3d,0x54,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3a,0x69,0x3d,0x64,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x77,0x68,0x65,0x65,0x6c,0x22,0x3a,0x69,0x3d,0x52,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x70,0x79,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x63,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x61,0x73,0x74,0x65,0x22,0x3a,0x69,0x3d,0x62,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6c,0x6f,0x73,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6d,0x6f,0x76,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x22,0x3a,0x69,0x3d,0x4e,0x74,0x7d,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x34,0x26,0x6e,0x29,0x2c,0x66,0x3d,0x21,0x63,0x26,0x26,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x2c,0x64,0x3d,0x63,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x3f,0x75,0x2b,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x3a,0x6e,0x75,0x6c,0x6c,0x3a,0x75,0x3b,0x63,0x3d,0x5b,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x70,0x2c,0x6d,0x3d,0x72,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x28,0x70,0x3d,0x6d,0x29,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x70,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x26,0x26,0x28,0x70,0x3d,0x68,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x68,0x3d,0x52,0x65,0x28,0x6d,0x2c,0x64,0x29,0x29,0x26,0x26,0x63,0x2e,0x70,0x75,0x73,0x68,0x28,0x57,0x72,0x28,0x6d,0x2c,0x68,0x2c,0x70,0x29,0x29,0x29,0x29,0x2c,0x66,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x6d,0x3d,0x6d,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x30,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x75,0x3d,0x6e,0x65,0x77,0x20,0x69,0x28,0x75,0x2c,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x6c,0x29,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x75,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x63,0x7d,0x29,0x29,0x7d,0x7d,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x37,0x26,0x6e,0x29,0x29,0x7b,0x69,0x66,0x28,0x69,0x3d,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x2c,0x28,0x21,0x28,0x75,0x3d,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x65,0x29,0x7c,0x7c,0x74,0x3d,0x3d,0x3d,0x6b,0x65,0x7c,0x7c,0x21,0x28,0x73,0x3d,0x74,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x74,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x7c,0x7c,0x21,0x79,0x6c,0x28,0x73,0x29,0x26,0x26,0x21,0x73,0x5b,0x6d,0x6c,0x5d,0x29,0x26,0x26,0x28,0x69,0x7c,0x7c,0x75,0x29,0x26,0x26,0x28,0x75,0x3d,0x6c,0x2e,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3d,0x3d,0x3d,0x6c,0x3f,0x6c,0x3a,0x28,0x75,0x3d,0x6c,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x3f,0x75,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x75,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x69,0x3f,0x28,0x69,0x3d,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x73,0x3d,0x28,0x73,0x3d,0x74,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x74,0x2e,0x74,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3f,0x79,0x6c,0x28,0x73,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x26,0x26,0x28,0x73,0x21,0x3d,0x3d,0x28,0x66,0x3d,0x24,0x65,0x28,0x73,0x29,0x29,0x7c,0x7c,0x35,0x21,0x3d,0x3d,0x73,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x73,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x28,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x3a,0x28,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x3d,0x72,0x29,0x2c,0x69,0x21,0x3d,0x3d,0x73,0x29,0x29,0x7b,0x69,0x66,0x28,0x63,0x3d,0x6d,0x74,0x2c,0x68,0x3d,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4c,0x65,0x61,0x76,0x65,0x22,0x2c,0x64,0x3d,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x22,0x2c,0x6d,0x3d,0x22,0x6d,0x6f,0x75,0x73,0x65,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x22,0x21,0x3d,0x3d,0x65,0x26,0x26,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x22,0x21,0x3d,0x3d,0x65,0x7c,0x7c,0x28,0x63,0x3d,0x4e,0x74,0x2c,0x68,0x3d,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4c,0x65,0x61,0x76,0x65,0x22,0x2c,0x64,0x3d,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x45,0x6e,0x74,0x65,0x72,0x22,0x2c,0x6d,0x3d,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x22,0x29,0x2c,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x69,0x3f,0x75,0x3a,0x6b,0x6c,0x28,0x69,0x29,0x2c,0x70,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x73,0x3f,0x75,0x3a,0x6b,0x6c,0x28,0x73,0x29,0x2c,0x28,0x75,0x3d,0x6e,0x65,0x77,0x20,0x63,0x28,0x68,0x2c,0x6d,0x2b,0x22,0x6c,0x65,0x61,0x76,0x65,0x22,0x2c,0x69,0x2c,0x74,0x2c,0x6c,0x29,0x29,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x66,0x2c,0x75,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x70,0x2c,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x6c,0x28,0x6c,0x29,0x3d,0x3d,0x3d,0x72,0x26,0x26,0x28,0x28,0x63,0x3d,0x6e,0x65,0x77,0x20,0x63,0x28,0x64,0x2c,0x6d,0x2b,0x22,0x65,0x6e,0x74,0x65,0x72,0x22,0x2c,0x73,0x2c,0x74,0x2c,0x6c,0x29,0x29,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x70,0x2c,0x63,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x66,0x2c,0x68,0x3d,0x63,0x29,0x2c,0x66,0x3d,0x68,0x2c,0x69,0x26,0x26,0x73,0x29,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x64,0x3d,0x73,0x2c,0x6d,0x3d,0x30,0x2c,0x70,0x3d,0x63,0x3d,0x69,0x3b,0x70,0x3b,0x70,0x3d,0x71,0x72,0x28,0x70,0x29,0x29,0x6d,0x2b,0x2b,0x3b,0x66,0x6f,0x72,0x28,0x70,0x3d,0x30,0x2c,0x68,0x3d,0x64,0x3b,0x68,0x3b,0x68,0x3d,0x71,0x72,0x28,0x68,0x29,0x29,0x70,0x2b,0x2b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x6d,0x2d,0x70,0x3b,0x29,0x63,0x3d,0x71,0x72,0x28,0x63,0x29,0x2c,0x6d,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x70,0x2d,0x6d,0x3b,0x29,0x64,0x3d,0x71,0x72,0x28,0x64,0x29,0x2c,0x70,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6d,0x2d,0x2d,0x3b,0x29,0x7b,0x69,0x66,0x28,0x63,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x63,0x3d,0x3d,0x3d,0x64,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x3d,0x71,0x72,0x28,0x63,0x29,0x2c,0x64,0x3d,0x71,0x72,0x28,0x64,0x29,0x7d,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x26,0x26,0x4b,0x72,0x28,0x6f,0x2c,0x75,0x2c,0x69,0x2c,0x63,0x2c,0x21,0x31,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x4b,0x72,0x28,0x6f,0x2c,0x66,0x2c,0x73,0x2c,0x63,0x2c,0x21,0x30,0x29,0x7d,0x69,0x66,0x28,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x28,0x69,0x3d,0x28,0x75,0x3d,0x72,0x3f,0x6b,0x6c,0x28,0x72,0x29,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x75,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x29,0x7c,0x7c,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x69,0x26,0x26,0x22,0x66,0x69,0x6c,0x65,0x22,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x79,0x70,0x65,0x29,0x76,0x61,0x72,0x20,0x76,0x3d,0x58,0x74,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x48,0x74,0x28,0x75,0x29,0x29,0x69,0x66,0x28,0x47,0x74,0x29,0x76,0x3d,0x6f,0x72,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x3d,0x6c,0x72,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x72,0x72,0x7d,0x65,0x6c,0x73,0x65,0x28,0x69,0x3d,0x75,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x29,0x26,0x26,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x69,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x26,0x26,0x28,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x22,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x28,0x76,0x3d,0x61,0x72,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x76,0x26,0x26,0x28,0x76,0x3d,0x76,0x28,0x65,0x2c,0x72,0x29,0x29,0x3f,0x57,0x74,0x28,0x6f,0x2c,0x76,0x2c,0x74,0x2c,0x6c,0x29,0x3a,0x28,0x67,0x26,0x26,0x67,0x28,0x65,0x2c,0x75,0x2c,0x72,0x29,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x67,0x3d,0x75,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x64,0x26,0x26,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x65,0x65,0x28,0x75,0x2c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x2c,0x75,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x2c,0x67,0x3d,0x72,0x3f,0x6b,0x6c,0x28,0x72,0x29,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x22,0x3a,0x28,0x48,0x74,0x28,0x67,0x29,0x7c,0x7c,0x22,0x74,0x72,0x75,0x65,0x22,0x3d,0x3d,0x3d,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x29,0x26,0x26,0x28,0x76,0x72,0x3d,0x67,0x2c,0x67,0x72,0x3d,0x72,0x2c,0x79,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x22,0x3a,0x79,0x72,0x3d,0x67,0x72,0x3d,0x76,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x62,0x72,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x22,0x3a,0x62,0x72,0x3d,0x21,0x31,0x2c,0x6b,0x72,0x28,0x6f,0x2c,0x74,0x2c,0x6c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x3a,0x69,0x66,0x28,0x68,0x72,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x75,0x70,0x22,0x3a,0x6b,0x72,0x28,0x6f,0x2c,0x74,0x2c,0x6c,0x29,0x7d,0x76,0x61,0x72,0x20,0x79,0x3b,0x69,0x66,0x28,0x4f,0x74,0x29,0x65,0x3a,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x22,0x3a,0x76,0x61,0x72,0x20,0x62,0x3d,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x3a,0x62,0x3d,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x22,0x3a,0x62,0x3d,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x62,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x65,0x6c,0x73,0x65,0x20,0x24,0x74,0x3f,0x41,0x74,0x28,0x65,0x2c,0x74,0x29,0x26,0x26,0x28,0x62,0x3d,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x29,0x3a,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x32,0x32,0x39,0x3d,0x3d,0x3d,0x74,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x26,0x26,0x28,0x62,0x3d,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x29,0x3b,0x62,0x26,0x26,0x28,0x44,0x74,0x26,0x26,0x22,0x6b,0x6f,0x22,0x21,0x3d,0x3d,0x74,0x2e,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x26,0x26,0x28,0x24,0x74,0x7c,0x7c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x21,0x3d,0x3d,0x62,0x3f,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x24,0x74,0x26,0x26,0x28,0x79,0x3d,0x6e,0x74,0x28,0x29,0x29,0x3a,0x28,0x4a,0x6e,0x3d,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x69,0x6e,0x28,0x5a,0x6e,0x3d,0x6c,0x29,0x3f,0x5a,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x5a,0x6e,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x24,0x74,0x3d,0x21,0x30,0x29,0x29,0x2c,0x30,0x3c,0x28,0x67,0x3d,0x51,0x72,0x28,0x72,0x2c,0x62,0x29,0x29,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x62,0x3d,0x6e,0x65,0x77,0x20,0x6b,0x74,0x28,0x62,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x6c,0x29,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x62,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x67,0x7d,0x29,0x2c,0x79,0x3f,0x62,0x2e,0x64,0x61,0x74,0x61,0x3d,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x79,0x3d,0x56,0x74,0x28,0x74,0x29,0x29,0x26,0x26,0x28,0x62,0x2e,0x64,0x61,0x74,0x61,0x3d,0x79,0x29,0x29,0x29,0x2c,0x28,0x79,0x3d,0x49,0x74,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x56,0x74,0x28,0x6e,0x29,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x32,0x21,0x3d,0x3d,0x6e,0x2e,0x77,0x68,0x69,0x63,0x68,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x28,0x6a,0x74,0x3d,0x21,0x30,0x2c,0x55,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x6e,0x2e,0x64,0x61,0x74,0x61,0x29,0x3d,0x3d,0x3d,0x55,0x74,0x26,0x26,0x6a,0x74,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x28,0x65,0x2c,0x74,0x29,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x24,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x21,0x4f,0x74,0x26,0x26,0x41,0x74,0x28,0x65,0x2c,0x6e,0x29,0x3f,0x28,0x65,0x3d,0x6e,0x74,0x28,0x29,0x2c,0x65,0x74,0x3d,0x4a,0x6e,0x3d,0x5a,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x24,0x74,0x3d,0x21,0x31,0x2c,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x70,0x61,0x73,0x74,0x65,0x22,0x3a,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x22,0x3a,0x69,0x66,0x28,0x21,0x28,0x6e,0x2e,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x7c,0x7c,0x6e,0x2e,0x61,0x6c,0x74,0x4b,0x65,0x79,0x7c,0x7c,0x6e,0x2e,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x29,0x7c,0x7c,0x6e,0x2e,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x26,0x26,0x6e,0x2e,0x61,0x6c,0x74,0x4b,0x65,0x79,0x29,0x7b,0x69,0x66,0x28,0x6e,0x2e,0x63,0x68,0x61,0x72,0x26,0x26,0x31,0x3c,0x6e,0x2e,0x63,0x68,0x61,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x63,0x68,0x61,0x72,0x3b,0x69,0x66,0x28,0x6e,0x2e,0x77,0x68,0x69,0x63,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x6e,0x2e,0x77,0x68,0x69,0x63,0x68,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x74,0x26,0x26,0x22,0x6b,0x6f,0x22,0x21,0x3d,0x3d,0x6e,0x2e,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x2e,0x64,0x61,0x74,0x61,0x7d,0x7d,0x28,0x65,0x2c,0x74,0x29,0x29,0x26,0x26,0x28,0x30,0x3c,0x28,0x72,0x3d,0x51,0x72,0x28,0x72,0x2c,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x22,0x29,0x29,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x6c,0x3d,0x6e,0x65,0x77,0x20,0x6b,0x74,0x28,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x6c,0x29,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x6c,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x72,0x7d,0x29,0x2c,0x6c,0x2e,0x64,0x61,0x74,0x61,0x3d,0x79,0x29,0x29,0x7d,0x55,0x72,0x28,0x6f,0x2c,0x6e,0x29,0x7d,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x65,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x3a,0x6e,0x2c,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x74,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2b,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x2c,0x72,0x3d,0x5b,0x5d,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2c,0x61,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x35,0x3d,0x3d,0x3d,0x6c,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x6c,0x3d,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x61,0x3d,0x52,0x65,0x28,0x65,0x2c,0x74,0x29,0x29,0x26,0x26,0x72,0x2e,0x75,0x6e,0x73,0x68,0x69,0x66,0x74,0x28,0x57,0x72,0x28,0x65,0x2c,0x61,0x2c,0x6c,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x61,0x3d,0x52,0x65,0x28,0x65,0x2c,0x6e,0x29,0x29,0x26,0x26,0x72,0x2e,0x70,0x75,0x73,0x68,0x28,0x57,0x72,0x28,0x65,0x2c,0x61,0x2c,0x6c,0x29,0x29,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x72,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x6f,0x7b,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x26,0x26,0x35,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x2c,0x6f,0x3d,0x5b,0x5d,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x74,0x21,0x3d,0x3d,0x72,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x74,0x2c,0x69,0x3d,0x75,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x73,0x3d,0x75,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x26,0x26,0x69,0x3d,0x3d,0x3d,0x72,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x35,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x28,0x75,0x3d,0x73,0x2c,0x6c,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x69,0x3d,0x52,0x65,0x28,0x74,0x2c,0x61,0x29,0x29,0x26,0x26,0x6f,0x2e,0x75,0x6e,0x73,0x68,0x69,0x66,0x74,0x28,0x57,0x72,0x28,0x74,0x2c,0x69,0x2c,0x75,0x29,0x29,0x3a,0x6c,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x69,0x3d,0x52,0x65,0x28,0x74,0x2c,0x61,0x29,0x29,0x26,0x26,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x57,0x72,0x28,0x74,0x2c,0x69,0x2c,0x75,0x29,0x29,0x29,0x2c,0x74,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x30,0x21,0x3d,0x3d,0x6f,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x65,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x6e,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x6f,0x7d,0x29,0x7d,0x76,0x61,0x72,0x20,0x59,0x72,0x3d,0x2f,0x5c,0x72,0x5c,0x6e,0x3f,0x2f,0x67,0x2c,0x58,0x72,0x3d,0x2f,0x5c,0x75,0x30,0x30,0x30,0x30,0x7c,0x5c,0x75,0x46,0x46,0x46,0x44,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x72,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x3f,0x65,0x3a,0x22,0x22,0x2b,0x65,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x59,0x72,0x2c,0x22,0x5c,0x6e,0x22,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x58,0x72,0x2c,0x22,0x22,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x3d,0x47,0x72,0x28,0x6e,0x29,0x2c,0x47,0x72,0x28,0x65,0x29,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x35,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x72,0x28,0x29,0x7b,0x7d,0x76,0x61,0x72,0x20,0x65,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6e,0x6f,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x7d,0x76,0x61,0x72,0x20,0x72,0x6c,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6c,0x6c,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x61,0x6c,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x3f,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6f,0x6c,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x71,0x75,0x65,0x75,0x65,0x4d,0x69,0x63,0x72,0x6f,0x74,0x61,0x73,0x6b,0x3f,0x71,0x75,0x65,0x75,0x65,0x4d,0x69,0x63,0x72,0x6f,0x74,0x61,0x73,0x6b,0x3a,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x6c,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x6c,0x2e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x65,0x29,0x2e,0x63,0x61,0x74,0x63,0x68,0x28,0x75,0x6c,0x29,0x7d,0x3a,0x72,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x6c,0x28,0x65,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x7d,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2c,0x72,0x3d,0x30,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x74,0x29,0x2c,0x6c,0x26,0x26,0x38,0x3d,0x3d,0x3d,0x6c,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x69,0x66,0x28,0x22,0x2f,0x24,0x22,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6c,0x2e,0x64,0x61,0x74,0x61,0x29,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x6c,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x42,0x6e,0x28,0x6e,0x29,0x3b,0x72,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x22,0x24,0x22,0x21,0x3d,0x3d,0x74,0x26,0x26,0x22,0x24,0x3f,0x22,0x21,0x3d,0x3d,0x74,0x26,0x26,0x22,0x24,0x21,0x22,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x72,0x2b,0x2b,0x3b,0x74,0x3d,0x6c,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x74,0x29,0x3b,0x42,0x6e,0x28,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x6c,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x3b,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x24,0x22,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x29,0x7c,0x7c,0x22,0x24,0x21,0x22,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x24,0x3f,0x22,0x3d,0x3d,0x3d,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x22,0x2f,0x24,0x22,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6c,0x28,0x65,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x30,0x3b,0x65,0x3b,0x29,0x7b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x3b,0x69,0x66,0x28,0x22,0x24,0x22,0x3d,0x3d,0x3d,0x74,0x7c,0x7c,0x22,0x24,0x21,0x22,0x3d,0x3d,0x3d,0x74,0x7c,0x7c,0x22,0x24,0x3f,0x22,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x6e,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x22,0x2f,0x24,0x22,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x2b,0x2b,0x7d,0x65,0x3d,0x65,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x66,0x6c,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x32,0x29,0x2c,0x64,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x46,0x69,0x62,0x65,0x72,0x24,0x22,0x2b,0x66,0x6c,0x2c,0x70,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x50,0x72,0x6f,0x70,0x73,0x24,0x22,0x2b,0x66,0x6c,0x2c,0x6d,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x24,0x22,0x2b,0x66,0x6c,0x2c,0x68,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x45,0x76,0x65,0x6e,0x74,0x73,0x24,0x22,0x2b,0x66,0x6c,0x2c,0x76,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x24,0x22,0x2b,0x66,0x6c,0x2c,0x67,0x6c,0x3d,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x73,0x24,0x22,0x2b,0x66,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x6c,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x5b,0x64,0x6c,0x5d,0x3b,0x69,0x66,0x28,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x74,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x3d,0x74,0x5b,0x6d,0x6c,0x5d,0x7c,0x7c,0x74,0x5b,0x64,0x6c,0x5d,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x63,0x6c,0x28,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x65,0x5b,0x64,0x6c,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3b,0x65,0x3d,0x63,0x6c,0x28,0x65,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x74,0x3d,0x28,0x65,0x3d,0x74,0x29,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6c,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x65,0x3d,0x65,0x5b,0x64,0x6c,0x5d,0x7c,0x7c,0x65,0x5b,0x6d,0x6c,0x5d,0x29,0x7c,0x7c,0x35,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x6c,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x33,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x6c,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x5b,0x70,0x6c,0x5d,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x53,0x6c,0x3d,0x5b,0x5d,0x2c,0x78,0x6c,0x3d,0x2d,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x6c,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x6c,0x28,0x65,0x29,0x7b,0x30,0x3e,0x78,0x6c,0x7c,0x7c,0x28,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x53,0x6c,0x5b,0x78,0x6c,0x5d,0x2c,0x53,0x6c,0x5b,0x78,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x78,0x6c,0x2d,0x2d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x78,0x6c,0x2b,0x2b,0x2c,0x53,0x6c,0x5b,0x78,0x6c,0x5d,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x7d,0x76,0x61,0x72,0x20,0x50,0x6c,0x3d,0x7b,0x7d,0x2c,0x4e,0x6c,0x3d,0x45,0x6c,0x28,0x50,0x6c,0x29,0x2c,0x7a,0x6c,0x3d,0x45,0x6c,0x28,0x21,0x31,0x29,0x2c,0x54,0x6c,0x3d,0x50,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x3b,0x69,0x66,0x28,0x21,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x6c,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x72,0x26,0x26,0x72,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x76,0x61,0x72,0x20,0x6c,0x2c,0x61,0x3d,0x7b,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x74,0x29,0x61,0x5b,0x6c,0x5d,0x3d,0x6e,0x5b,0x6c,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x26,0x26,0x28,0x28,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x2c,0x65,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x61,0x29,0x2c,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x6c,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x29,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x6c,0x28,0x29,0x7b,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x43,0x6c,0x28,0x4e,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x6c,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x50,0x6c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x38,0x29,0x29,0x3b,0x5f,0x6c,0x28,0x4e,0x6c,0x2c,0x6e,0x29,0x2c,0x5f,0x6c,0x28,0x7a,0x6c,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x6c,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x2e,0x67,0x65,0x74,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6c,0x20,0x69,0x6e,0x20,0x72,0x3d,0x72,0x2e,0x67,0x65,0x74,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x28,0x29,0x29,0x69,0x66,0x28,0x21,0x28,0x6c,0x20,0x69,0x6e,0x20,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x30,0x38,0x2c,0x42,0x28,0x65,0x29,0x7c,0x7c,0x22,0x55,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x22,0x2c,0x6c,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x28,0x7b,0x7d,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x6c,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x26,0x26,0x65,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7c,0x7c,0x50,0x6c,0x2c,0x54,0x6c,0x3d,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x5f,0x6c,0x28,0x4e,0x6c,0x2c,0x65,0x29,0x2c,0x5f,0x6c,0x28,0x7a,0x6c,0x2c,0x7a,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6c,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x21,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x39,0x29,0x29,0x3b,0x74,0x3f,0x28,0x65,0x3d,0x4d,0x6c,0x28,0x65,0x2c,0x6e,0x2c,0x54,0x6c,0x29,0x2c,0x72,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x65,0x2c,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x43,0x6c,0x28,0x4e,0x6c,0x29,0x2c,0x5f,0x6c,0x28,0x4e,0x6c,0x2c,0x65,0x29,0x29,0x3a,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x5f,0x6c,0x28,0x7a,0x6c,0x2c,0x74,0x29,0x7d,0x76,0x61,0x72,0x20,0x55,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6a,0x6c,0x3d,0x21,0x31,0x2c,0x41,0x6c,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x6c,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x55,0x6c,0x3f,0x55,0x6c,0x3d,0x5b,0x65,0x5d,0x3a,0x55,0x6c,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x6c,0x28,0x29,0x7b,0x69,0x66,0x28,0x21,0x41,0x6c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x55,0x6c,0x29,0x7b,0x41,0x6c,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x30,0x2c,0x6e,0x3d,0x6b,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x55,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x6b,0x6e,0x3d,0x31,0x3b,0x65,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x5b,0x65,0x5d,0x3b,0x64,0x6f,0x7b,0x72,0x3d,0x72,0x28,0x21,0x30,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7d,0x55,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6a,0x6c,0x3d,0x21,0x31,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x55,0x6c,0x26,0x26,0x28,0x55,0x6c,0x3d,0x55,0x6c,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x65,0x2b,0x31,0x29,0x29,0x2c,0x71,0x65,0x28,0x4a,0x65,0x2c,0x24,0x6c,0x29,0x2c,0x6c,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x6e,0x2c,0x41,0x6c,0x3d,0x21,0x31,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x42,0x6c,0x3d,0x5b,0x5d,0x2c,0x48,0x6c,0x3d,0x30,0x2c,0x57,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x51,0x6c,0x3d,0x30,0x2c,0x71,0x6c,0x3d,0x5b,0x5d,0x2c,0x4b,0x6c,0x3d,0x30,0x2c,0x59,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x58,0x6c,0x3d,0x31,0x2c,0x47,0x6c,0x3d,0x22,0x22,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x42,0x6c,0x5b,0x48,0x6c,0x2b,0x2b,0x5d,0x3d,0x51,0x6c,0x2c,0x42,0x6c,0x5b,0x48,0x6c,0x2b,0x2b,0x5d,0x3d,0x57,0x6c,0x2c,0x57,0x6c,0x3d,0x65,0x2c,0x51,0x6c,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x6c,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x58,0x6c,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x47,0x6c,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x59,0x6c,0x2c,0x59,0x6c,0x3d,0x65,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x58,0x6c,0x3b,0x65,0x3d,0x47,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x33,0x32,0x2d,0x6f,0x6e,0x28,0x72,0x29,0x2d,0x31,0x3b,0x72,0x26,0x3d,0x7e,0x28,0x31,0x3c,0x3c,0x6c,0x29,0x2c,0x74,0x2b,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x33,0x32,0x2d,0x6f,0x6e,0x28,0x6e,0x29,0x2b,0x6c,0x3b,0x69,0x66,0x28,0x33,0x30,0x3c,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6c,0x2d,0x6c,0x25,0x35,0x3b,0x61,0x3d,0x28,0x72,0x26,0x28,0x31,0x3c,0x3c,0x6f,0x29,0x2d,0x31,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x2c,0x72,0x3e,0x3e,0x3d,0x6f,0x2c,0x6c,0x2d,0x3d,0x6f,0x2c,0x58,0x6c,0x3d,0x31,0x3c,0x3c,0x33,0x32,0x2d,0x6f,0x6e,0x28,0x6e,0x29,0x2b,0x6c,0x7c,0x74,0x3c,0x3c,0x6c,0x7c,0x72,0x2c,0x47,0x6c,0x3d,0x61,0x2b,0x65,0x7d,0x65,0x6c,0x73,0x65,0x20,0x58,0x6c,0x3d,0x31,0x3c,0x3c,0x61,0x7c,0x74,0x3c,0x3c,0x6c,0x7c,0x72,0x2c,0x47,0x6c,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x61,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x26,0x26,0x28,0x5a,0x6c,0x28,0x65,0x2c,0x31,0x29,0x2c,0x4a,0x6c,0x28,0x65,0x2c,0x31,0x2c,0x30,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x61,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x65,0x3d,0x3d,0x3d,0x57,0x6c,0x3b,0x29,0x57,0x6c,0x3d,0x42,0x6c,0x5b,0x2d,0x2d,0x48,0x6c,0x5d,0x2c,0x42,0x6c,0x5b,0x48,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x51,0x6c,0x3d,0x42,0x6c,0x5b,0x2d,0x2d,0x48,0x6c,0x5d,0x2c,0x42,0x6c,0x5b,0x48,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x65,0x3d,0x3d,0x3d,0x59,0x6c,0x3b,0x29,0x59,0x6c,0x3d,0x71,0x6c,0x5b,0x2d,0x2d,0x4b,0x6c,0x5d,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x47,0x6c,0x3d,0x71,0x6c,0x5b,0x2d,0x2d,0x4b,0x6c,0x5d,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x58,0x6c,0x3d,0x71,0x6c,0x5b,0x2d,0x2d,0x4b,0x6c,0x5d,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x74,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x3d,0x21,0x31,0x2c,0x61,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x4c,0x73,0x28,0x35,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x29,0x3b,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x22,0x44,0x45,0x4c,0x45,0x54,0x45,0x44,0x22,0x2c,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x29,0x3f,0x28,0x65,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x74,0x5d,0x2c,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x31,0x21,0x3d,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x74,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x21,0x3d,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x29,0x26,0x26,0x28,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x2c,0x74,0x61,0x3d,0x65,0x2c,0x72,0x61,0x3d,0x73,0x6c,0x28,0x6e,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x2c,0x21,0x30,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x22,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x33,0x21,0x3d,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x29,0x26,0x26,0x28,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x2c,0x74,0x61,0x3d,0x65,0x2c,0x72,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x38,0x21,0x3d,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x29,0x26,0x26,0x28,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x6c,0x3f,0x7b,0x69,0x64,0x3a,0x58,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x66,0x6c,0x6f,0x77,0x3a,0x47,0x6c,0x7d,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x2c,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x74,0x2c,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3a,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x7d,0x2c,0x28,0x74,0x3d,0x4c,0x73,0x28,0x31,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x29,0x29,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x74,0x2c,0x74,0x61,0x3d,0x65,0x2c,0x72,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x29,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x61,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x61,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x6c,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x72,0x61,0x3b,0x69,0x66,0x28,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x3b,0x69,0x66,0x28,0x21,0x75,0x61,0x28,0x65,0x2c,0x6e,0x29,0x29,0x7b,0x69,0x66,0x28,0x69,0x61,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x6e,0x3d,0x73,0x6c,0x28,0x74,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x61,0x3b,0x6e,0x26,0x26,0x75,0x61,0x28,0x65,0x2c,0x6e,0x29,0x3f,0x6f,0x61,0x28,0x72,0x2c,0x74,0x29,0x3a,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x34,0x30,0x39,0x37,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x32,0x2c,0x6c,0x61,0x3d,0x21,0x31,0x2c,0x74,0x61,0x3d,0x65,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x69,0x61,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x34,0x30,0x39,0x37,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x32,0x2c,0x6c,0x61,0x3d,0x21,0x31,0x2c,0x74,0x61,0x3d,0x65,0x7d,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x61,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x35,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3b,0x29,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x61,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x21,0x3d,0x3d,0x74,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x21,0x6c,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x61,0x28,0x65,0x29,0x2c,0x6c,0x61,0x3d,0x21,0x30,0x2c,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3b,0x69,0x66,0x28,0x28,0x6e,0x3d,0x33,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x21,0x28,0x6e,0x3d,0x35,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x28,0x6e,0x3d,0x22,0x68,0x65,0x61,0x64,0x22,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x22,0x62,0x6f,0x64,0x79,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x21,0x74,0x6c,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x29,0x29,0x2c,0x6e,0x26,0x26,0x28,0x6e,0x3d,0x72,0x61,0x29,0x29,0x7b,0x69,0x66,0x28,0x69,0x61,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x64,0x61,0x28,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x3b,0x29,0x6f,0x61,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6e,0x3d,0x73,0x6c,0x28,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7d,0x69,0x66,0x28,0x63,0x61,0x28,0x65,0x29,0x2c,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x21,0x28,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x3f,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x37,0x29,0x29,0x3b,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x6e,0x3d,0x30,0x3b,0x65,0x3b,0x29,0x7b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x3b,0x69,0x66,0x28,0x22,0x2f,0x24,0x22,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x72,0x61,0x3d,0x73,0x6c,0x28,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x6e,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x22,0x24,0x22,0x21,0x3d,0x3d,0x74,0x26,0x26,0x22,0x24,0x21,0x22,0x21,0x3d,0x3d,0x74,0x26,0x26,0x22,0x24,0x3f,0x22,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x6e,0x2b,0x2b,0x7d,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x72,0x61,0x3d,0x74,0x61,0x3f,0x73,0x6c,0x28,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x61,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x72,0x61,0x3b,0x65,0x3b,0x29,0x65,0x3d,0x73,0x6c,0x28,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x61,0x28,0x29,0x7b,0x72,0x61,0x3d,0x74,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x3d,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x61,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x61,0x3f,0x61,0x61,0x3d,0x5b,0x65,0x5d,0x3a,0x61,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x7d,0x76,0x61,0x72,0x20,0x68,0x61,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x2e,0x72,0x65,0x66,0x29,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x7b,0x69,0x66,0x28,0x74,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x74,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x29,0x7b,0x69,0x66,0x28,0x31,0x21,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x30,0x39,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x69,0x66,0x28,0x21,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x34,0x37,0x2c,0x65,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2c,0x6f,0x3d,0x22,0x22,0x2b,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x6e,0x2e,0x72,0x65,0x66,0x2e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x52,0x65,0x66,0x3d,0x3d,0x3d,0x6f,0x3f,0x6e,0x2e,0x72,0x65,0x66,0x3a,0x28,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6c,0x2e,0x72,0x65,0x66,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x6f,0x5d,0x3a,0x6e,0x5b,0x6f,0x5d,0x3d,0x65,0x7d,0x2c,0x6e,0x2e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x52,0x65,0x66,0x3d,0x6f,0x2c,0x6e,0x29,0x7d,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x38,0x34,0x29,0x29,0x3b,0x69,0x66,0x28,0x21,0x74,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x39,0x30,0x2c,0x65,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x2c,0x22,0x5b,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x5d,0x22,0x3d,0x3d,0x3d,0x65,0x3f,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x6b,0x65,0x79,0x73,0x20,0x7b,0x22,0x2b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x6e,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x22,0x2c,0x20,0x22,0x29,0x2b,0x22,0x7d,0x22,0x3a,0x65,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x61,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x30,0x2c,0x65,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x65,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x61,0x28,0x65,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x3f,0x28,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x74,0x5d,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x72,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x28,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x3b,0x29,0x6e,0x28,0x74,0x2c,0x72,0x29,0x2c,0x72,0x3d,0x72,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x3f,0x65,0x2e,0x73,0x65,0x74,0x28,0x6e,0x2e,0x6b,0x65,0x79,0x2c,0x6e,0x29,0x3a,0x65,0x2e,0x73,0x65,0x74,0x28,0x6e,0x2e,0x69,0x6e,0x64,0x65,0x78,0x2c,0x6e,0x29,0x2c,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x46,0x73,0x28,0x65,0x2c,0x6e,0x29,0x29,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x30,0x2c,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x28,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x72,0x2c,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x3f,0x28,0x72,0x3d,0x72,0x2e,0x69,0x6e,0x64,0x65,0x78,0x29,0x3c,0x74,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x74,0x29,0x3a,0x72,0x3a,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x74,0x29,0x3a,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x28,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x29,0x2c,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x36,0x21,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x3f,0x28,0x28,0x6e,0x3d,0x44,0x73,0x28,0x74,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x3a,0x28,0x28,0x6e,0x3d,0x6c,0x28,0x6e,0x2c,0x74,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x2e,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x3d,0x3d,0x78,0x3f,0x66,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x72,0x2c,0x74,0x2e,0x6b,0x65,0x79,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x52,0x26,0x26,0x79,0x61,0x28,0x61,0x29,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x3f,0x28,0x28,0x72,0x3d,0x6c,0x28,0x6e,0x2c,0x74,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x76,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x72,0x29,0x3a,0x28,0x28,0x72,0x3d,0x4f,0x73,0x28,0x74,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x2e,0x6b,0x65,0x79,0x2c,0x74,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x76,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x34,0x21,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x21,0x3d,0x3d,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x7c,0x7c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x21,0x3d,0x3d,0x74,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3f,0x28,0x28,0x6e,0x3d,0x55,0x73,0x28,0x74,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x3a,0x28,0x28,0x6e,0x3d,0x6c,0x28,0x6e,0x2c,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5b,0x5d,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x37,0x21,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x3f,0x28,0x28,0x6e,0x3d,0x4d,0x73,0x28,0x74,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x2c,0x61,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x3a,0x28,0x28,0x6e,0x3d,0x6c,0x28,0x6e,0x2c,0x74,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x26,0x26,0x22,0x22,0x21,0x3d,0x3d,0x6e,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x44,0x73,0x28,0x22,0x22,0x2b,0x6e,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x74,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x3b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x77,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x74,0x3d,0x4f,0x73,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x2e,0x6b,0x65,0x79,0x2c,0x6e,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x74,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x76,0x61,0x28,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x29,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x74,0x3b,0x63,0x61,0x73,0x65,0x20,0x53,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x55,0x73,0x28,0x6e,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x74,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x28,0x65,0x2c,0x28,0x30,0x2c,0x6e,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x6e,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x74,0x29,0x7d,0x69,0x66,0x28,0x6e,0x65,0x28,0x6e,0x29,0x7c,0x7c,0x4d,0x28,0x6e,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x4d,0x73,0x28,0x6e,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6e,0x3b,0x67,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3f,0x6e,0x2e,0x6b,0x65,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x26,0x26,0x22,0x22,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x22,0x22,0x2b,0x74,0x2c,0x72,0x29,0x3b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x77,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x6c,0x3f,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x53,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x6c,0x3f,0x63,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x28,0x65,0x2c,0x6e,0x2c,0x28,0x6c,0x3d,0x74,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x74,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x72,0x29,0x7d,0x69,0x66,0x28,0x6e,0x65,0x28,0x74,0x29,0x7c,0x7c,0x4d,0x28,0x74,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x66,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x67,0x61,0x28,0x65,0x2c,0x74,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x26,0x26,0x22,0x22,0x21,0x3d,0x3d,0x72,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x28,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x67,0x65,0x74,0x28,0x74,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x22,0x22,0x2b,0x72,0x2c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x72,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x77,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x28,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x67,0x65,0x74,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x2e,0x6b,0x65,0x79,0x3f,0x74,0x3a,0x72,0x2e,0x6b,0x65,0x79,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6c,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x53,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x28,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x67,0x65,0x74,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x2e,0x6b,0x65,0x79,0x3f,0x74,0x3a,0x72,0x2e,0x6b,0x65,0x79,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6c,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x28,0x30,0x2c,0x72,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x72,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x6c,0x29,0x7d,0x69,0x66,0x28,0x6e,0x65,0x28,0x72,0x29,0x7c,0x7c,0x4d,0x28,0x72,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x28,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x67,0x65,0x74,0x28,0x74,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x67,0x61,0x28,0x6e,0x2c,0x72,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x28,0x6c,0x2c,0x61,0x2c,0x75,0x2c,0x69,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x3d,0x61,0x2c,0x68,0x3d,0x61,0x3d,0x30,0x2c,0x76,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x68,0x3c,0x75,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x68,0x2b,0x2b,0x29,0x7b,0x66,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3e,0x68,0x3f,0x28,0x76,0x3d,0x66,0x2c,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x76,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x70,0x28,0x6c,0x2c,0x66,0x2c,0x75,0x5b,0x68,0x5d,0x2c,0x69,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x28,0x66,0x3d,0x76,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x26,0x26,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x6e,0x28,0x6c,0x2c,0x66,0x29,0x2c,0x61,0x3d,0x6f,0x28,0x67,0x2c,0x61,0x2c,0x68,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x73,0x3d,0x67,0x3a,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x67,0x2c,0x63,0x3d,0x67,0x2c,0x66,0x3d,0x76,0x7d,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x75,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x28,0x6c,0x2c,0x66,0x29,0x2c,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x68,0x29,0x2c,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x68,0x3c,0x75,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x68,0x2b,0x2b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x66,0x3d,0x64,0x28,0x6c,0x2c,0x75,0x5b,0x68,0x5d,0x2c,0x69,0x29,0x29,0x26,0x26,0x28,0x61,0x3d,0x6f,0x28,0x66,0x2c,0x61,0x2c,0x68,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x73,0x3d,0x66,0x3a,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x66,0x2c,0x63,0x3d,0x66,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x68,0x29,0x2c,0x73,0x7d,0x66,0x6f,0x72,0x28,0x66,0x3d,0x72,0x28,0x6c,0x2c,0x66,0x29,0x3b,0x68,0x3c,0x75,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x68,0x2b,0x2b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x76,0x3d,0x6d,0x28,0x66,0x2c,0x6c,0x2c,0x68,0x2c,0x75,0x5b,0x68,0x5d,0x2c,0x69,0x29,0x29,0x26,0x26,0x28,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x76,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x66,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x76,0x2e,0x6b,0x65,0x79,0x3f,0x68,0x3a,0x76,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x61,0x3d,0x6f,0x28,0x76,0x2c,0x61,0x2c,0x68,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x73,0x3d,0x76,0x3a,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x76,0x2c,0x63,0x3d,0x76,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x26,0x26,0x66,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x28,0x6c,0x2c,0x65,0x29,0x7d,0x29,0x29,0x2c,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x68,0x29,0x2c,0x73,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x28,0x6c,0x2c,0x75,0x2c,0x69,0x2c,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4d,0x28,0x69,0x29,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x35,0x30,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x28,0x69,0x3d,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x69,0x29,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x35,0x31,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x3d,0x75,0x2c,0x76,0x3d,0x75,0x3d,0x30,0x2c,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x26,0x26,0x21,0x79,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x76,0x2b,0x2b,0x2c,0x79,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x7b,0x68,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3e,0x76,0x3f,0x28,0x67,0x3d,0x68,0x2c,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x67,0x3d,0x68,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x70,0x28,0x6c,0x2c,0x68,0x2c,0x79,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x73,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x26,0x26,0x28,0x68,0x3d,0x67,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x26,0x26,0x68,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x6e,0x28,0x6c,0x2c,0x68,0x29,0x2c,0x75,0x3d,0x6f,0x28,0x62,0x2c,0x75,0x2c,0x76,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x63,0x3d,0x62,0x3a,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x62,0x2c,0x66,0x3d,0x62,0x2c,0x68,0x3d,0x67,0x7d,0x69,0x66,0x28,0x79,0x2e,0x64,0x6f,0x6e,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x28,0x6c,0x2c,0x68,0x29,0x2c,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x76,0x29,0x2c,0x63,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x21,0x79,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x76,0x2b,0x2b,0x2c,0x79,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x79,0x3d,0x64,0x28,0x6c,0x2c,0x79,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x73,0x29,0x29,0x26,0x26,0x28,0x75,0x3d,0x6f,0x28,0x79,0x2c,0x75,0x2c,0x76,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x63,0x3d,0x79,0x3a,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x79,0x2c,0x66,0x3d,0x79,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x76,0x29,0x2c,0x63,0x7d,0x66,0x6f,0x72,0x28,0x68,0x3d,0x72,0x28,0x6c,0x2c,0x68,0x29,0x3b,0x21,0x79,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x76,0x2b,0x2b,0x2c,0x79,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x79,0x3d,0x6d,0x28,0x68,0x2c,0x6c,0x2c,0x76,0x2c,0x79,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x73,0x29,0x29,0x26,0x26,0x28,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x79,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x68,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x79,0x2e,0x6b,0x65,0x79,0x3f,0x76,0x3a,0x79,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x75,0x3d,0x6f,0x28,0x79,0x2c,0x75,0x2c,0x76,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x63,0x3d,0x79,0x3a,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x79,0x2c,0x66,0x3d,0x79,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x26,0x26,0x68,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x28,0x6c,0x2c,0x65,0x29,0x7d,0x29,0x29,0x2c,0x6c,0x61,0x26,0x26,0x5a,0x6c,0x28,0x6c,0x2c,0x76,0x29,0x2c,0x63,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x28,0x72,0x2c,0x61,0x2c,0x6f,0x2c,0x69,0x29,0x7b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x6f,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x78,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6f,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x6f,0x3d,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x2c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6f,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x77,0x3a,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x6f,0x2e,0x6b,0x65,0x79,0x2c,0x63,0x3d,0x61,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x63,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x73,0x29,0x7b,0x69,0x66,0x28,0x28,0x73,0x3d,0x6f,0x2e,0x74,0x79,0x70,0x65,0x29,0x3d,0x3d,0x3d,0x78,0x29,0x7b,0x69,0x66,0x28,0x37,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x29,0x7b,0x74,0x28,0x72,0x2c,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x28,0x61,0x3d,0x6c,0x28,0x63,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x63,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x73,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x73,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x52,0x26,0x26,0x79,0x61,0x28,0x73,0x29,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x74,0x28,0x72,0x2c,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x28,0x61,0x3d,0x6c,0x28,0x63,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x76,0x61,0x28,0x72,0x2c,0x63,0x2c,0x6f,0x29,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x74,0x28,0x72,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x6e,0x28,0x72,0x2c,0x63,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x6f,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x78,0x3f,0x28,0x28,0x61,0x3d,0x4d,0x73,0x28,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x72,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x69,0x2c,0x6f,0x2e,0x6b,0x65,0x79,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x29,0x3a,0x28,0x28,0x69,0x3d,0x4f,0x73,0x28,0x6f,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6f,0x2e,0x6b,0x65,0x79,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x69,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x76,0x61,0x28,0x72,0x2c,0x61,0x2c,0x6f,0x29,0x2c,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x69,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x28,0x72,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x53,0x3a,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x6f,0x2e,0x6b,0x65,0x79,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x69,0x66,0x28,0x61,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x34,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3d,0x3d,0x3d,0x6f,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x26,0x26,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3d,0x3d,0x3d,0x6f,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x29,0x7b,0x74,0x28,0x72,0x2c,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x28,0x61,0x3d,0x6c,0x28,0x61,0x2c,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5b,0x5d,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x74,0x28,0x72,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x6e,0x28,0x72,0x2c,0x61,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x28,0x61,0x3d,0x55,0x73,0x28,0x6f,0x2c,0x72,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x69,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x28,0x72,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x72,0x2c,0x61,0x2c,0x28,0x63,0x3d,0x6f,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x6f,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x69,0x29,0x7d,0x69,0x66,0x28,0x6e,0x65,0x28,0x6f,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x28,0x72,0x2c,0x61,0x2c,0x6f,0x2c,0x69,0x29,0x3b,0x69,0x66,0x28,0x4d,0x28,0x6f,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x28,0x72,0x2c,0x61,0x2c,0x6f,0x2c,0x69,0x29,0x3b,0x67,0x61,0x28,0x72,0x2c,0x6f,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x26,0x26,0x22,0x22,0x21,0x3d,0x3d,0x6f,0x7c,0x7c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x3f,0x28,0x6f,0x3d,0x22,0x22,0x2b,0x6f,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x36,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3f,0x28,0x74,0x28,0x72,0x2c,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x28,0x61,0x3d,0x6c,0x28,0x61,0x2c,0x6f,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x29,0x3a,0x28,0x74,0x28,0x72,0x2c,0x61,0x29,0x2c,0x28,0x61,0x3d,0x44,0x73,0x28,0x6f,0x2c,0x72,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x69,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x72,0x3d,0x61,0x29,0x2c,0x75,0x28,0x72,0x29,0x29,0x3a,0x74,0x28,0x72,0x2c,0x61,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6b,0x61,0x3d,0x62,0x61,0x28,0x21,0x30,0x29,0x2c,0x77,0x61,0x3d,0x62,0x61,0x28,0x21,0x31,0x29,0x2c,0x53,0x61,0x3d,0x45,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x78,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x45,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x61,0x28,0x29,0x7b,0x43,0x61,0x3d,0x45,0x61,0x3d,0x78,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x61,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x53,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x43,0x6c,0x28,0x53,0x61,0x29,0x2c,0x65,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x28,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x6e,0x29,0x21,0x3d,0x3d,0x6e,0x3f,0x28,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x29,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x6e,0x29,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x29,0x2c,0x65,0x3d,0x3d,0x3d,0x74,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x78,0x61,0x3d,0x65,0x2c,0x43,0x61,0x3d,0x45,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x6e,0x29,0x26,0x26,0x28,0x62,0x75,0x3d,0x21,0x30,0x29,0x2c,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x61,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3b,0x69,0x66,0x28,0x43,0x61,0x21,0x3d,0x3d,0x65,0x29,0x69,0x66,0x28,0x65,0x3d,0x7b,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x2c,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x6e,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x45,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x78,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x30,0x38,0x29,0x29,0x3b,0x45,0x61,0x3d,0x65,0x2c,0x78,0x61,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x45,0x61,0x3d,0x45,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x76,0x61,0x72,0x20,0x4c,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x61,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4c,0x61,0x3f,0x4c,0x61,0x3d,0x5b,0x65,0x5d,0x3a,0x4c,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x3f,0x28,0x74,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x74,0x2c,0x52,0x61,0x28,0x6e,0x29,0x29,0x3a,0x28,0x74,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x74,0x29,0x2c,0x6e,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x74,0x2c,0x4f,0x61,0x28,0x65,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x66,0x6f,0x72,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x29,0x2c,0x74,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x28,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x29,0x2c,0x74,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x3f,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x4d,0x61,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x61,0x28,0x65,0x29,0x7b,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x7d,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x65,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x65,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x65,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x6e,0x2c,0x74,0x61,0x67,0x3a,0x30,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x72,0x3d,0x72,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x4e,0x69,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x3f,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x3a,0x28,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x29,0x2c,0x72,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x2c,0x4f,0x61,0x28,0x65,0x2c,0x74,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6c,0x3d,0x72,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x29,0x3f,0x28,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x2c,0x52,0x61,0x28,0x72,0x29,0x29,0x3a,0x28,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x29,0x2c,0x72,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x6e,0x2c,0x4f,0x61,0x28,0x65,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x26,0x26,0x28,0x6e,0x3d,0x6e,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x74,0x29,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x74,0x7c,0x3d,0x72,0x26,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x62,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x72,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x74,0x3d,0x3d,0x3d,0x28,0x72,0x3d,0x72,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x29,0x7b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x74,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x74,0x61,0x67,0x3a,0x74,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x74,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x74,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x6c,0x3d,0x61,0x3d,0x6f,0x3a,0x61,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6f,0x2c,0x74,0x3d,0x74,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x6c,0x3d,0x61,0x3d,0x6e,0x3a,0x61,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6c,0x3d,0x61,0x3d,0x6e,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x72,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x61,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x72,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x72,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x7d,0x2c,0x76,0x6f,0x69,0x64,0x28,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x74,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x3f,0x74,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6e,0x3a,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x2c,0x74,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x4d,0x61,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6c,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x6f,0x3d,0x6c,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x75,0x3d,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x29,0x7b,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x75,0x2c,0x73,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x69,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6f,0x3f,0x61,0x3d,0x73,0x3a,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x73,0x2c,0x6f,0x3d,0x69,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x28,0x75,0x3d,0x28,0x63,0x3d,0x63,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x3f,0x63,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x73,0x3a,0x75,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x73,0x2c,0x63,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x69,0x29,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x6c,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3b,0x66,0x6f,0x72,0x28,0x6f,0x3d,0x30,0x2c,0x63,0x3d,0x73,0x3d,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x3d,0x61,0x3b,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x75,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x70,0x3d,0x75,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3b,0x69,0x66,0x28,0x28,0x72,0x26,0x64,0x29,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x70,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x30,0x2c,0x74,0x61,0x67,0x3a,0x75,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x75,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x75,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x3b,0x65,0x3a,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x65,0x2c,0x68,0x3d,0x75,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x64,0x3d,0x6e,0x2c,0x70,0x3d,0x74,0x2c,0x68,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x6d,0x3d,0x68,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x29,0x7b,0x66,0x3d,0x6d,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x70,0x2c,0x66,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x66,0x3d,0x6d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x6d,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x36,0x35,0x35,0x33,0x37,0x26,0x6d,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x31,0x32,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x64,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x6d,0x3d,0x68,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x3f,0x6d,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x70,0x2c,0x66,0x2c,0x64,0x29,0x3a,0x6d,0x29,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x66,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x66,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x4d,0x61,0x3d,0x21,0x30,0x7d,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x26,0x26,0x30,0x21,0x3d,0x3d,0x75,0x2e,0x6c,0x61,0x6e,0x65,0x26,0x26,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x64,0x3d,0x6c,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x29,0x3f,0x6c,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3d,0x5b,0x75,0x5d,0x3a,0x64,0x2e,0x70,0x75,0x73,0x68,0x28,0x75,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x70,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x70,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x64,0x2c,0x74,0x61,0x67,0x3a,0x75,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x75,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x75,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x73,0x3d,0x63,0x3d,0x70,0x2c,0x69,0x3d,0x66,0x29,0x3a,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x70,0x2c,0x6f,0x7c,0x3d,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x75,0x3d,0x75,0x2e,0x6e,0x65,0x78,0x74,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x75,0x3d,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x75,0x3d,0x28,0x64,0x3d,0x75,0x29,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x64,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x64,0x2c,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x69,0x3d,0x66,0x29,0x2c,0x6c,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x2c,0x6c,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x73,0x2c,0x6c,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x29,0x29,0x7b,0x6c,0x3d,0x6e,0x3b,0x64,0x6f,0x7b,0x6f,0x7c,0x3d,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x3b,0x49,0x69,0x7c,0x3d,0x6f,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6f,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x65,0x3d,0x6e,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2c,0x6e,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x30,0x3b,0x6e,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6e,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x5b,0x6e,0x5d,0x2c,0x6c,0x3d,0x72,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x69,0x66,0x28,0x72,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x3d,0x74,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x39,0x31,0x2c,0x6c,0x29,0x29,0x3b,0x6c,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x72,0x29,0x7d,0x7d,0x7d,0x76,0x61,0x72,0x20,0x48,0x61,0x3d,0x7b,0x7d,0x2c,0x57,0x61,0x3d,0x45,0x6c,0x28,0x48,0x61,0x29,0x2c,0x51,0x61,0x3d,0x45,0x6c,0x28,0x48,0x61,0x29,0x2c,0x71,0x61,0x3d,0x45,0x6c,0x28,0x48,0x61,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x61,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x3d,0x3d,0x3d,0x48,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x37,0x34,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x5f,0x6c,0x28,0x71,0x61,0x2c,0x6e,0x29,0x2c,0x5f,0x6c,0x28,0x51,0x61,0x2c,0x65,0x29,0x2c,0x5f,0x6c,0x28,0x57,0x61,0x2c,0x48,0x61,0x29,0x2c,0x65,0x3d,0x6e,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x6e,0x3d,0x28,0x6e,0x3d,0x6e,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3f,0x6e,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x3a,0x69,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x22,0x22,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6e,0x3d,0x69,0x65,0x28,0x6e,0x3d,0x28,0x65,0x3d,0x38,0x3d,0x3d,0x3d,0x65,0x3f,0x6e,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x6e,0x29,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x3d,0x65,0x2e,0x74,0x61,0x67,0x4e,0x61,0x6d,0x65,0x29,0x7d,0x43,0x6c,0x28,0x57,0x61,0x29,0x2c,0x5f,0x6c,0x28,0x57,0x61,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x61,0x28,0x29,0x7b,0x43,0x6c,0x28,0x57,0x61,0x29,0x2c,0x43,0x6c,0x28,0x51,0x61,0x29,0x2c,0x43,0x6c,0x28,0x71,0x61,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x61,0x28,0x65,0x29,0x7b,0x4b,0x61,0x28,0x71,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x4b,0x61,0x28,0x57,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x74,0x3d,0x69,0x65,0x28,0x6e,0x2c,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x6e,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x5f,0x6c,0x28,0x51,0x61,0x2c,0x65,0x29,0x2c,0x5f,0x6c,0x28,0x57,0x61,0x2c,0x74,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x61,0x28,0x65,0x29,0x7b,0x51,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x43,0x6c,0x28,0x57,0x61,0x29,0x2c,0x43,0x6c,0x28,0x51,0x61,0x29,0x29,0x7d,0x76,0x61,0x72,0x20,0x4a,0x61,0x3d,0x45,0x6c,0x28,0x30,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x6f,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7c,0x7c,0x22,0x24,0x3f,0x22,0x3d,0x3d,0x3d,0x74,0x2e,0x64,0x61,0x74,0x61,0x7c,0x7c,0x22,0x24,0x21,0x22,0x3d,0x3d,0x3d,0x74,0x2e,0x64,0x61,0x74,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x39,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x72,0x65,0x76,0x65,0x61,0x6c,0x4f,0x72,0x64,0x65,0x72,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x6e,0x6f,0x3d,0x5b,0x5d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x6e,0x6f,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x6e,0x6f,0x5b,0x65,0x5d,0x2e,0x5f,0x77,0x6f,0x72,0x6b,0x49,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x6f,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3d,0x30,0x7d,0x76,0x61,0x72,0x20,0x72,0x6f,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x6c,0x6f,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x61,0x6f,0x3d,0x30,0x2c,0x6f,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x6f,0x3d,0x21,0x31,0x2c,0x63,0x6f,0x3d,0x21,0x31,0x2c,0x66,0x6f,0x3d,0x30,0x2c,0x70,0x6f,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x6f,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x32,0x31,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x74,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x69,0x66,0x28,0x21,0x75,0x72,0x28,0x65,0x5b,0x74,0x5d,0x2c,0x6e,0x5b,0x74,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x6f,0x29,0x7b,0x69,0x66,0x28,0x61,0x6f,0x3d,0x6f,0x2c,0x6f,0x6f,0x3d,0x6e,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x72,0x6f,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x4a,0x6f,0x3a,0x65,0x75,0x2c,0x65,0x3d,0x74,0x28,0x72,0x2c,0x6c,0x29,0x2c,0x63,0x6f,0x29,0x7b,0x6f,0x3d,0x30,0x3b,0x64,0x6f,0x7b,0x69,0x66,0x28,0x63,0x6f,0x3d,0x21,0x31,0x2c,0x66,0x6f,0x3d,0x30,0x2c,0x32,0x35,0x3c,0x3d,0x6f,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x30,0x31,0x29,0x29,0x3b,0x6f,0x2b,0x3d,0x31,0x2c,0x69,0x6f,0x3d,0x75,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x6f,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x2c,0x65,0x3d,0x74,0x28,0x72,0x2c,0x6c,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x63,0x6f,0x29,0x7d,0x69,0x66,0x28,0x72,0x6f,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x5a,0x6f,0x2c,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x6f,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x61,0x6f,0x3d,0x30,0x2c,0x69,0x6f,0x3d,0x75,0x6f,0x3d,0x6f,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x6f,0x3d,0x21,0x31,0x2c,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x6f,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x30,0x21,0x3d,0x3d,0x66,0x6f,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6f,0x3d,0x30,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x6f,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x75,0x65,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x69,0x6f,0x3f,0x6f,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x6f,0x3d,0x65,0x3a,0x69,0x6f,0x3d,0x69,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2c,0x69,0x6f,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6f,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6f,0x6f,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x65,0x3d,0x75,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x69,0x6f,0x3f,0x6f,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x69,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x69,0x6f,0x3d,0x6e,0x2c,0x75,0x6f,0x3d,0x65,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x30,0x29,0x29,0x3b,0x65,0x3d,0x7b,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x28,0x75,0x6f,0x3d,0x65,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x75,0x6f,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3a,0x75,0x6f,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x71,0x75,0x65,0x75,0x65,0x3a,0x75,0x6f,0x2e,0x71,0x75,0x65,0x75,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x69,0x6f,0x3f,0x6f,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x6f,0x3d,0x65,0x3a,0x69,0x6f,0x3d,0x69,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6f,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x3f,0x6e,0x28,0x65,0x29,0x3a,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x6f,0x28,0x29,0x2c,0x74,0x3d,0x6e,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x31,0x29,0x29,0x3b,0x74,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x65,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x75,0x6f,0x2c,0x6c,0x3d,0x72,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6f,0x3d,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x75,0x7d,0x72,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6c,0x3d,0x6f,0x2c,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x6f,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x72,0x3d,0x72,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x3d,0x6f,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x3b,0x69,0x66,0x28,0x28,0x61,0x6f,0x26,0x66,0x29,0x3d,0x3d,0x3d,0x66,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x28,0x73,0x3d,0x73,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x30,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x63,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x63,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x63,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x2c,0x72,0x3d,0x63,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3f,0x63,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x65,0x28,0x72,0x2c,0x63,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x66,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x63,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x63,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x63,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x73,0x3f,0x28,0x69,0x3d,0x73,0x3d,0x64,0x2c,0x75,0x3d,0x72,0x29,0x3a,0x73,0x3d,0x73,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x64,0x2c,0x6f,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x66,0x2c,0x49,0x69,0x7c,0x3d,0x66,0x7d,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x63,0x21,0x3d,0x3d,0x6f,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x73,0x3f,0x75,0x3d,0x72,0x3a,0x73,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x69,0x2c,0x75,0x72,0x28,0x72,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7c,0x7c,0x28,0x62,0x75,0x3d,0x21,0x30,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x72,0x2c,0x6e,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x75,0x2c,0x6e,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x73,0x2c,0x74,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x72,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x29,0x29,0x7b,0x6c,0x3d,0x65,0x3b,0x64,0x6f,0x7b,0x6f,0x3d,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x6f,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6f,0x2c,0x49,0x69,0x7c,0x3d,0x6f,0x2c,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x74,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x6f,0x28,0x29,0x2c,0x74,0x3d,0x6e,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x31,0x29,0x29,0x3b,0x74,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x65,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x2c,0x6c,0x3d,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x2c,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x6f,0x3d,0x65,0x28,0x6f,0x2c,0x75,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x75,0x3d,0x75,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x75,0x21,0x3d,0x3d,0x6c,0x29,0x3b,0x75,0x72,0x28,0x6f,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7c,0x7c,0x28,0x62,0x75,0x3d,0x21,0x30,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6f,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x26,0x26,0x28,0x6e,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x6f,0x29,0x2c,0x74,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6f,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x6f,0x2c,0x72,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x6f,0x28,0x29,0x7b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6f,0x6f,0x2c,0x72,0x3d,0x62,0x6f,0x28,0x29,0x2c,0x6c,0x3d,0x6e,0x28,0x29,0x2c,0x6f,0x3d,0x21,0x75,0x72,0x28,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x6f,0x26,0x26,0x28,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6c,0x2c,0x62,0x75,0x3d,0x21,0x30,0x29,0x2c,0x72,0x3d,0x72,0x2e,0x71,0x75,0x65,0x75,0x65,0x2c,0x49,0x6f,0x28,0x50,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x72,0x2c,0x65,0x29,0x2c,0x5b,0x65,0x5d,0x29,0x2c,0x72,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x21,0x3d,0x3d,0x6e,0x7c,0x7c,0x6f,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x6f,0x26,0x26,0x31,0x26,0x69,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x34,0x38,0x2c,0x4c,0x6f,0x28,0x39,0x2c,0x5f,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x6e,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x7a,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x39,0x29,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x33,0x30,0x26,0x61,0x6f,0x29,0x7c,0x7c,0x43,0x6f,0x28,0x74,0x2c,0x6e,0x2c,0x6c,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x33,0x38,0x34,0x2c,0x65,0x3d,0x7b,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3a,0x6e,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x74,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x6f,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x3f,0x28,0x6e,0x3d,0x7b,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x6f,0x72,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6f,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x2c,0x6e,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x3d,0x5b,0x65,0x5d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6e,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x29,0x3f,0x6e,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x3d,0x5b,0x65,0x5d,0x3a,0x74,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x74,0x2c,0x6e,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3d,0x72,0x2c,0x4e,0x6f,0x28,0x6e,0x29,0x26,0x26,0x7a,0x6f,0x28,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4e,0x6f,0x28,0x6e,0x29,0x26,0x26,0x7a,0x6f,0x28,0x65,0x29,0x7d,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3b,0x65,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x75,0x72,0x28,0x65,0x2c,0x74,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x4f,0x61,0x28,0x65,0x2c,0x31,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x31,0x2c,0x2d,0x31,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x79,0x6f,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x28,0x65,0x3d,0x65,0x28,0x29,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x2c,0x65,0x3d,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x6b,0x6f,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x65,0x7d,0x2c,0x6e,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3d,0x4b,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x6f,0x2c,0x65,0x29,0x2c,0x5b,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x7b,0x74,0x61,0x67,0x3a,0x65,0x2c,0x63,0x72,0x65,0x61,0x74,0x65,0x3a,0x6e,0x2c,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3a,0x74,0x2c,0x64,0x65,0x70,0x73,0x3a,0x72,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x6f,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x3f,0x28,0x6e,0x3d,0x7b,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x6f,0x72,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6f,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x2c,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x29,0x3f,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x3a,0x28,0x72,0x3d,0x74,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x74,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2c,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x72,0x2c,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x65,0x29,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x6f,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x79,0x6f,0x28,0x29,0x3b,0x6f,0x6f,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x65,0x2c,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4c,0x6f,0x28,0x31,0x7c,0x6e,0x2c,0x74,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x62,0x6f,0x28,0x29,0x3b,0x72,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x72,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x75,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x61,0x3d,0x6f,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x68,0x6f,0x28,0x72,0x2c,0x6f,0x2e,0x64,0x65,0x70,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x28,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4c,0x6f,0x28,0x6e,0x2c,0x74,0x2c,0x61,0x2c,0x72,0x29,0x29,0x7d,0x6f,0x6f,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x65,0x2c,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4c,0x6f,0x28,0x31,0x7c,0x6e,0x2c,0x74,0x2c,0x61,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x6f,0x28,0x38,0x33,0x39,0x30,0x36,0x35,0x36,0x2c,0x38,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x6f,0x28,0x32,0x30,0x34,0x38,0x2c,0x38,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x6f,0x28,0x34,0x2c,0x32,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x6f,0x28,0x34,0x2c,0x34,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x3f,0x28,0x65,0x3d,0x65,0x28,0x29,0x2c,0x6e,0x28,0x65,0x29,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6e,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x3f,0x28,0x65,0x3d,0x65,0x28,0x29,0x2c,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x65,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x3f,0x74,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x5b,0x65,0x5d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x4f,0x6f,0x28,0x34,0x2c,0x34,0x2c,0x6a,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x65,0x29,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x6f,0x28,0x29,0x7b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x62,0x6f,0x28,0x29,0x3b,0x6e,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x68,0x6f,0x28,0x6e,0x2c,0x72,0x5b,0x31,0x5d,0x29,0x3f,0x72,0x5b,0x30,0x5d,0x3a,0x28,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x65,0x2c,0x6e,0x5d,0x2c,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x62,0x6f,0x28,0x29,0x3b,0x6e,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x68,0x6f,0x28,0x6e,0x2c,0x72,0x5b,0x31,0x5d,0x29,0x3f,0x72,0x5b,0x30,0x5d,0x3a,0x28,0x65,0x3d,0x65,0x28,0x29,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x65,0x2c,0x6e,0x5d,0x2c,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x31,0x26,0x61,0x6f,0x29,0x3f,0x28,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x28,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x31,0x2c,0x62,0x75,0x3d,0x21,0x30,0x29,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x29,0x3a,0x28,0x75,0x72,0x28,0x74,0x2c,0x6e,0x29,0x7c,0x7c,0x28,0x74,0x3d,0x76,0x6e,0x28,0x29,0x2c,0x6f,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x2c,0x49,0x69,0x7c,0x3d,0x74,0x2c,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x30,0x29,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6b,0x6e,0x3b,0x6b,0x6e,0x3d,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x34,0x3e,0x74,0x3f,0x74,0x3a,0x34,0x2c,0x65,0x28,0x21,0x30,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6c,0x6f,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x6c,0x6f,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x7b,0x7d,0x3b,0x74,0x72,0x79,0x7b,0x65,0x28,0x21,0x31,0x29,0x2c,0x6e,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x74,0x2c,0x6c,0x6f,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x72,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x6f,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x73,0x28,0x65,0x29,0x3b,0x69,0x66,0x28,0x74,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x72,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x74,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x21,0x31,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x59,0x6f,0x28,0x65,0x29,0x29,0x58,0x6f,0x28,0x6e,0x2c,0x74,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x46,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x29,0x29,0x7b,0x74,0x73,0x28,0x74,0x2c,0x65,0x2c,0x72,0x2c,0x65,0x73,0x28,0x29,0x29,0x2c,0x47,0x6f,0x28,0x74,0x2c,0x6e,0x2c,0x72,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x73,0x28,0x65,0x29,0x2c,0x6c,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x72,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x74,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x21,0x31,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x69,0x66,0x28,0x59,0x6f,0x28,0x65,0x29,0x29,0x58,0x6f,0x28,0x6e,0x2c,0x6c,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x61,0x3d,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x29,0x29,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x75,0x3d,0x61,0x28,0x6f,0x2c,0x74,0x29,0x3b,0x69,0x66,0x28,0x6c,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x30,0x2c,0x6c,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x75,0x2c,0x75,0x72,0x28,0x75,0x2c,0x6f,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6e,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x69,0x3f,0x28,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2c,0x52,0x61,0x28,0x6e,0x29,0x29,0x3a,0x28,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x69,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x69,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x29,0x2c,0x76,0x6f,0x69,0x64,0x28,0x6e,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x6c,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x73,0x29,0x7b,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x46,0x61,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x2c,0x72,0x29,0x29,0x26,0x26,0x28,0x74,0x73,0x28,0x74,0x2c,0x65,0x2c,0x72,0x2c,0x6c,0x3d,0x65,0x73,0x28,0x29,0x29,0x2c,0x47,0x6f,0x28,0x74,0x2c,0x6e,0x2c,0x72,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x6f,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x3d,0x3d,0x6f,0x6f,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x3d,0x3d,0x3d,0x6f,0x6f,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x63,0x6f,0x3d,0x73,0x6f,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x3a,0x28,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x74,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x74,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x29,0x2c,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x74,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x74,0x7c,0x3d,0x72,0x26,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x62,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x5a,0x6f,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x6d,0x6f,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x6d,0x6f,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x4a,0x6f,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x79,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x65,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x5d,0x2c,0x65,0x7d,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x4d,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x3f,0x74,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x5b,0x65,0x5d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x46,0x6f,0x28,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x2c,0x34,0x2c,0x6a,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x65,0x29,0x2c,0x74,0x29,0x7d,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x6f,0x28,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x2c,0x34,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x6f,0x28,0x34,0x2c,0x32,0x2c,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x79,0x6f,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x2c,0x65,0x3d,0x65,0x28,0x29,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x65,0x2c,0x6e,0x5d,0x2c,0x65,0x7d,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x79,0x6f,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x3f,0x74,0x28,0x6e,0x29,0x3a,0x6e,0x2c,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x72,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x2c,0x65,0x3d,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x65,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x7d,0x2c,0x72,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3d,0x71,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x6f,0x2c,0x65,0x29,0x2c,0x5b,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x65,0x7d,0x2c,0x79,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x7d,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x54,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x56,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x79,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x54,0x6f,0x28,0x21,0x31,0x29,0x2c,0x6e,0x3d,0x65,0x5b,0x30,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x57,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x5b,0x31,0x5d,0x29,0x2c,0x79,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x2c,0x5b,0x6e,0x2c,0x65,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6f,0x6f,0x2c,0x6c,0x3d,0x79,0x6f,0x28,0x29,0x3b,0x69,0x66,0x28,0x6c,0x61,0x29,0x7b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x30,0x37,0x29,0x29,0x3b,0x74,0x3d,0x74,0x28,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x74,0x3d,0x6e,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x7a,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x39,0x29,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x33,0x30,0x26,0x61,0x6f,0x29,0x7c,0x7c,0x43,0x6f,0x28,0x72,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x74,0x2c,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3a,0x6e,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x6f,0x2c,0x4d,0x6f,0x28,0x50,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6f,0x2c,0x65,0x29,0x2c,0x5b,0x65,0x5d,0x29,0x2c,0x72,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x34,0x38,0x2c,0x4c,0x6f,0x28,0x39,0x2c,0x5f,0x6f,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6f,0x2c,0x74,0x2c,0x6e,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x74,0x7d,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x79,0x6f,0x28,0x29,0x2c,0x6e,0x3d,0x7a,0x69,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x3b,0x69,0x66,0x28,0x6c,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x47,0x6c,0x3b,0x6e,0x3d,0x22,0x3a,0x22,0x2b,0x6e,0x2b,0x22,0x52,0x22,0x2b,0x28,0x74,0x3d,0x28,0x58,0x6c,0x26,0x7e,0x28,0x31,0x3c,0x3c,0x33,0x32,0x2d,0x6f,0x6e,0x28,0x58,0x6c,0x29,0x2d,0x31,0x29,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x2b,0x74,0x29,0x2c,0x30,0x3c,0x28,0x74,0x3d,0x66,0x6f,0x2b,0x2b,0x29,0x26,0x26,0x28,0x6e,0x2b,0x3d,0x22,0x48,0x22,0x2b,0x74,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x29,0x2c,0x6e,0x2b,0x3d,0x22,0x3a,0x22,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x3d,0x22,0x3a,0x22,0x2b,0x6e,0x2b,0x22,0x72,0x22,0x2b,0x28,0x74,0x3d,0x70,0x6f,0x2b,0x2b,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x2b,0x22,0x3a,0x22,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x7d,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x65,0x75,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x24,0x6f,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x49,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x41,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x44,0x6f,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x55,0x6f,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x42,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x77,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x52,0x6f,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x77,0x6f,0x28,0x6b,0x6f,0x29,0x7d,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x56,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x6f,0x28,0x62,0x6f,0x28,0x29,0x2c,0x75,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x29,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x77,0x6f,0x28,0x6b,0x6f,0x29,0x5b,0x30,0x5d,0x2c,0x62,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x78,0x6f,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x45,0x6f,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x51,0x6f,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x6e,0x75,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x24,0x6f,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x54,0x61,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x49,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x41,0x6f,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x44,0x6f,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x55,0x6f,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x42,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x53,0x6f,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x52,0x6f,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x6f,0x28,0x6b,0x6f,0x29,0x7d,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x56,0x6f,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x6f,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x6f,0x3f,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x3a,0x48,0x6f,0x28,0x6e,0x2c,0x75,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x29,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x53,0x6f,0x28,0x6b,0x6f,0x29,0x5b,0x30,0x5d,0x2c,0x62,0x6f,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x78,0x6f,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x45,0x6f,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x51,0x6f,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x65,0x26,0x26,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x20,0x69,0x6e,0x20,0x6e,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x6e,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x5b,0x74,0x5d,0x26,0x26,0x28,0x6e,0x5b,0x74,0x5d,0x3d,0x65,0x5b,0x74,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x28,0x72,0x2c,0x6e,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x29,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x74,0x3f,0x6e,0x3a,0x44,0x28,0x7b,0x7d,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x2c,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x26,0x28,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x29,0x7d,0x76,0x61,0x72,0x20,0x6c,0x75,0x3d,0x7b,0x69,0x73,0x4d,0x6f,0x75,0x6e,0x74,0x65,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x21,0x28,0x65,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x29,0x26,0x26,0x24,0x65,0x28,0x65,0x29,0x3d,0x3d,0x3d,0x65,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6c,0x3d,0x6e,0x73,0x28,0x65,0x29,0x2c,0x61,0x3d,0x55,0x61,0x28,0x72,0x2c,0x6c,0x29,0x3b,0x61,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x6e,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6a,0x61,0x28,0x65,0x2c,0x61,0x2c,0x6c,0x29,0x29,0x26,0x26,0x28,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x6c,0x2c,0x72,0x29,0x2c,0x41,0x61,0x28,0x6e,0x2c,0x65,0x2c,0x6c,0x29,0x29,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6c,0x3d,0x6e,0x73,0x28,0x65,0x29,0x2c,0x61,0x3d,0x55,0x61,0x28,0x72,0x2c,0x6c,0x29,0x3b,0x61,0x2e,0x74,0x61,0x67,0x3d,0x31,0x2c,0x61,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x6e,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6a,0x61,0x28,0x65,0x2c,0x61,0x2c,0x6c,0x29,0x29,0x26,0x26,0x28,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x6c,0x2c,0x72,0x29,0x2c,0x41,0x61,0x28,0x6e,0x2c,0x65,0x2c,0x6c,0x29,0x29,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x65,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x73,0x28,0x29,0x2c,0x72,0x3d,0x6e,0x73,0x28,0x65,0x29,0x2c,0x6c,0x3d,0x55,0x61,0x28,0x74,0x2c,0x72,0x29,0x3b,0x6c,0x2e,0x74,0x61,0x67,0x3d,0x32,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x6c,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6a,0x61,0x28,0x65,0x2c,0x6c,0x2c,0x72,0x29,0x29,0x26,0x26,0x28,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x41,0x61,0x28,0x6e,0x2c,0x65,0x2c,0x72,0x29,0x29,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x2e,0x73,0x68,0x6f,0x75,0x6c,0x64,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x55,0x70,0x64,0x61,0x74,0x65,0x3f,0x65,0x2e,0x73,0x68,0x6f,0x75,0x6c,0x64,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x72,0x2c,0x61,0x2c,0x6f,0x29,0x3a,0x21,0x6e,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x7c,0x7c,0x21,0x6e,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x69,0x73,0x50,0x75,0x72,0x65,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x7c,0x7c,0x28,0x21,0x69,0x72,0x28,0x74,0x2c,0x72,0x29,0x7c,0x7c,0x21,0x69,0x72,0x28,0x6c,0x2c,0x61,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x21,0x31,0x2c,0x6c,0x3d,0x50,0x6c,0x2c,0x61,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x3d,0x54,0x61,0x28,0x61,0x29,0x3a,0x28,0x6c,0x3d,0x52,0x6c,0x28,0x6e,0x29,0x3f,0x54,0x6c,0x3a,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x61,0x3d,0x28,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x29,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x72,0x29,0x3f,0x4c,0x6c,0x28,0x65,0x2c,0x6c,0x29,0x3a,0x50,0x6c,0x29,0x2c,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x6e,0x28,0x74,0x2c,0x61,0x29,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x3f,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x6c,0x75,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x2c,0x6e,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3d,0x65,0x2c,0x72,0x26,0x26,0x28,0x28,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6c,0x2c,0x65,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x61,0x29,0x2c,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x65,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x6e,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x28,0x74,0x2c,0x72,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x6e,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x28,0x74,0x2c,0x72,0x29,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6c,0x75,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x6e,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6c,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x74,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6c,0x2e,0x72,0x65,0x66,0x73,0x3d,0x7b,0x7d,0x2c,0x49,0x61,0x28,0x65,0x29,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x6c,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x54,0x61,0x28,0x61,0x29,0x3a,0x28,0x61,0x3d,0x52,0x6c,0x28,0x6e,0x29,0x3f,0x54,0x6c,0x3a,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x6c,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x4c,0x6c,0x28,0x65,0x2c,0x61,0x29,0x29,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x61,0x3d,0x6e,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x29,0x26,0x26,0x28,0x72,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x61,0x2c,0x74,0x29,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x28,0x6e,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x6c,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x6c,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x6e,0x21,0x3d,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x6c,0x75,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x6c,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x24,0x61,0x28,0x65,0x2c,0x74,0x2c,0x6c,0x2c,0x72,0x29,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x22,0x22,0x2c,0x72,0x3d,0x6e,0x3b,0x64,0x6f,0x7b,0x74,0x2b,0x3d,0x56,0x28,0x72,0x29,0x2c,0x72,0x3d,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x72,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x6c,0x3d,0x22,0x5c,0x6e,0x45,0x72,0x72,0x6f,0x72,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x63,0x6b,0x3a,0x20,0x22,0x2b,0x61,0x2e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2b,0x22,0x5c,0x6e,0x22,0x2b,0x61,0x2e,0x73,0x74,0x61,0x63,0x6b,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x65,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x6e,0x2c,0x73,0x74,0x61,0x63,0x6b,0x3a,0x6c,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x65,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x3f,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x3f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x74,0x72,0x79,0x7b,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x74,0x7d,0x29,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x64,0x75,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x57,0x65,0x61,0x6b,0x4d,0x61,0x70,0x3f,0x57,0x65,0x61,0x6b,0x4d,0x61,0x70,0x3a,0x4d,0x61,0x70,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x28,0x74,0x3d,0x55,0x61,0x28,0x2d,0x31,0x2c,0x74,0x29,0x29,0x2e,0x74,0x61,0x67,0x3d,0x33,0x2c,0x74,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x48,0x69,0x7c,0x7c,0x28,0x48,0x69,0x3d,0x21,0x30,0x2c,0x57,0x69,0x3d,0x72,0x29,0x2c,0x66,0x75,0x28,0x30,0x2c,0x6e,0x29,0x7d,0x2c,0x74,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x28,0x74,0x3d,0x55,0x61,0x28,0x2d,0x31,0x2c,0x74,0x29,0x29,0x2e,0x74,0x61,0x67,0x3d,0x33,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x74,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x28,0x6c,0x29,0x7d,0x2c,0x74,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x75,0x28,0x30,0x2c,0x6e,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x61,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x74,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x75,0x28,0x30,0x2c,0x6e,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x69,0x3f,0x51,0x69,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x28,0x5b,0x74,0x68,0x69,0x73,0x5d,0x29,0x3a,0x51,0x69,0x2e,0x61,0x64,0x64,0x28,0x74,0x68,0x69,0x73,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x63,0x6b,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x7b,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x53,0x74,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x65,0x3a,0x22,0x22,0x7d,0x29,0x7d,0x29,0x2c,0x74,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x29,0x7b,0x72,0x3d,0x65,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3d,0x6e,0x65,0x77,0x20,0x64,0x75,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x3b,0x72,0x2e,0x73,0x65,0x74,0x28,0x6e,0x2c,0x6c,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x6c,0x3d,0x72,0x2e,0x67,0x65,0x74,0x28,0x6e,0x29,0x29,0x26,0x26,0x28,0x6c,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x2c,0x72,0x2e,0x73,0x65,0x74,0x28,0x6e,0x2c,0x6c,0x29,0x29,0x3b,0x6c,0x2e,0x68,0x61,0x73,0x28,0x74,0x29,0x7c,0x7c,0x28,0x6c,0x2e,0x61,0x64,0x64,0x28,0x74,0x29,0x2c,0x65,0x3d,0x43,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x74,0x68,0x65,0x6e,0x28,0x65,0x2c,0x65,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x75,0x28,0x65,0x29,0x7b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3b,0x69,0x66,0x28,0x28,0x6e,0x3d,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x28,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x2c,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3f,0x28,0x65,0x3d,0x3d,0x3d,0x6e,0x3f,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x3a,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x33,0x31,0x30,0x37,0x32,0x2c,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x35,0x32,0x38,0x30,0x35,0x2c,0x31,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3f,0x74,0x2e,0x74,0x61,0x67,0x3d,0x31,0x37,0x3a,0x28,0x28,0x6e,0x3d,0x55,0x61,0x28,0x2d,0x31,0x2c,0x31,0x29,0x29,0x2e,0x74,0x61,0x67,0x3d,0x32,0x2c,0x6a,0x61,0x28,0x74,0x2c,0x6e,0x2c,0x31,0x29,0x29,0x29,0x2c,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x31,0x29,0x2c,0x65,0x29,0x3a,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6c,0x2c,0x65,0x29,0x7d,0x76,0x61,0x72,0x20,0x79,0x75,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x62,0x75,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x77,0x61,0x28,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x2c,0x72,0x29,0x3a,0x6b,0x61,0x28,0x6e,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x74,0x3d,0x74,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x61,0x28,0x6e,0x2c,0x6c,0x29,0x2c,0x72,0x3d,0x76,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x61,0x2c,0x6c,0x29,0x2c,0x74,0x3d,0x67,0x6f,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x62,0x75,0x3f,0x28,0x6c,0x61,0x26,0x26,0x74,0x26,0x26,0x65,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x3a,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x30,0x35,0x33,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x6c,0x2c,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x2e,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x7c,0x7c,0x52,0x73,0x28,0x61,0x29,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x3f,0x28,0x28,0x65,0x3d,0x4f,0x73,0x28,0x74,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x6e,0x2c,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x6c,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x29,0x3a,0x28,0x6e,0x2e,0x74,0x61,0x67,0x3d,0x31,0x35,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3d,0x61,0x2c,0x78,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x61,0x2c,0x72,0x2c,0x6c,0x29,0x29,0x7d,0x69,0x66,0x28,0x61,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x6c,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x69,0x66,0x28,0x28,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x29,0x3f,0x74,0x3a,0x69,0x72,0x29,0x28,0x6f,0x2c,0x72,0x29,0x26,0x26,0x65,0x2e,0x72,0x65,0x66,0x3d,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x28,0x65,0x3d,0x46,0x73,0x28,0x61,0x2c,0x72,0x29,0x29,0x2e,0x72,0x65,0x66,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x69,0x66,0x28,0x69,0x72,0x28,0x61,0x2c,0x72,0x29,0x26,0x26,0x65,0x2e,0x72,0x65,0x66,0x3d,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x29,0x7b,0x69,0x66,0x28,0x62,0x75,0x3d,0x21,0x31,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x72,0x3d,0x61,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x6c,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x31,0x33,0x31,0x30,0x37,0x32,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x28,0x62,0x75,0x3d,0x21,0x30,0x29,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6c,0x3d,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x72,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x5f,0x6c,0x28,0x46,0x69,0x2c,0x52,0x69,0x29,0x2c,0x52,0x69,0x7c,0x3d,0x74,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x26,0x74,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x74,0x3a,0x74,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x65,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x6c,0x28,0x46,0x69,0x2c,0x52,0x69,0x29,0x2c,0x52,0x69,0x7c,0x3d,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x74,0x2c,0x5f,0x6c,0x28,0x46,0x69,0x2c,0x52,0x69,0x29,0x2c,0x52,0x69,0x7c,0x3d,0x72,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x28,0x72,0x3d,0x61,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x74,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x72,0x3d,0x74,0x2c,0x5f,0x6c,0x28,0x46,0x69,0x2c,0x52,0x69,0x29,0x2c,0x52,0x69,0x7c,0x3d,0x72,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x3b,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x65,0x2e,0x72,0x65,0x66,0x21,0x3d,0x3d,0x74,0x29,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x52,0x6c,0x28,0x74,0x29,0x3f,0x54,0x6c,0x3a,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x4c,0x6c,0x28,0x6e,0x2c,0x61,0x29,0x2c,0x7a,0x61,0x28,0x6e,0x2c,0x6c,0x29,0x2c,0x74,0x3d,0x76,0x6f,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x61,0x2c,0x6c,0x29,0x2c,0x72,0x3d,0x67,0x6f,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x62,0x75,0x3f,0x28,0x6c,0x61,0x26,0x26,0x72,0x26,0x26,0x65,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x6c,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x3a,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x30,0x35,0x33,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x6c,0x2c,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x69,0x66,0x28,0x52,0x6c,0x28,0x74,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x21,0x30,0x3b,0x49,0x6c,0x28,0x6e,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x61,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x7a,0x61,0x28,0x6e,0x2c,0x6c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x42,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6f,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x2c,0x69,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x72,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x75,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x75,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6f,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x73,0x3d,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x3f,0x73,0x3d,0x54,0x61,0x28,0x73,0x29,0x3a,0x73,0x3d,0x4c,0x6c,0x28,0x6e,0x2c,0x73,0x3d,0x52,0x6c,0x28,0x74,0x29,0x3f,0x54,0x6c,0x3a,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x74,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x2c,0x66,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3b,0x66,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x28,0x75,0x21,0x3d,0x3d,0x72,0x7c,0x7c,0x69,0x21,0x3d,0x3d,0x73,0x29,0x26,0x26,0x75,0x75,0x28,0x6e,0x2c,0x6f,0x2c,0x72,0x2c,0x73,0x29,0x2c,0x4d,0x61,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x64,0x2c,0x24,0x61,0x28,0x6e,0x2c,0x72,0x2c,0x6f,0x2c,0x6c,0x29,0x2c,0x69,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x75,0x21,0x3d,0x3d,0x72,0x7c,0x7c,0x64,0x21,0x3d,0x3d,0x69,0x7c,0x7c,0x7a,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7c,0x7c,0x4d,0x61,0x3f,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x28,0x72,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x63,0x2c,0x72,0x29,0x2c,0x69,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x28,0x75,0x3d,0x4d,0x61,0x7c,0x7c,0x61,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x75,0x2c,0x72,0x2c,0x64,0x2c,0x69,0x2c,0x73,0x29,0x29,0x3f,0x28,0x66,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x29,0x3a,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x72,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x29,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x72,0x2c,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x69,0x2c,0x6f,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x73,0x2c,0x72,0x3d,0x75,0x29,0x3a,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x2c,0x72,0x3d,0x21,0x31,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x6f,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x44,0x61,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x75,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x73,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3f,0x75,0x3a,0x74,0x75,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x75,0x29,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x73,0x2c,0x66,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x64,0x3d,0x6f,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x69,0x3d,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x3f,0x69,0x3d,0x54,0x61,0x28,0x69,0x29,0x3a,0x69,0x3d,0x4c,0x6c,0x28,0x6e,0x2c,0x69,0x3d,0x52,0x6c,0x28,0x74,0x29,0x3f,0x54,0x6c,0x3a,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x70,0x3d,0x74,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x3b,0x28,0x63,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x28,0x75,0x21,0x3d,0x3d,0x66,0x7c,0x7c,0x64,0x21,0x3d,0x3d,0x69,0x29,0x26,0x26,0x75,0x75,0x28,0x6e,0x2c,0x6f,0x2c,0x72,0x2c,0x69,0x29,0x2c,0x4d,0x61,0x3d,0x21,0x31,0x2c,0x64,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x64,0x2c,0x24,0x61,0x28,0x6e,0x2c,0x72,0x2c,0x6f,0x2c,0x6c,0x29,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x75,0x21,0x3d,0x3d,0x66,0x7c,0x7c,0x64,0x21,0x3d,0x3d,0x6d,0x7c,0x7c,0x7a,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7c,0x7c,0x4d,0x61,0x3f,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x26,0x26,0x28,0x72,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x70,0x2c,0x72,0x29,0x2c,0x6d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x28,0x73,0x3d,0x4d,0x61,0x7c,0x7c,0x61,0x75,0x28,0x6e,0x2c,0x74,0x2c,0x73,0x2c,0x72,0x2c,0x64,0x2c,0x6d,0x2c,0x69,0x29,0x7c,0x7c,0x21,0x31,0x29,0x3f,0x28,0x63,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x72,0x2c,0x6d,0x2c,0x69,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x6f,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x72,0x2c,0x6d,0x2c,0x69,0x29,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x29,0x3a,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x75,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x64,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x75,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x64,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x72,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6d,0x29,0x2c,0x6f,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x72,0x2c,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x6d,0x2c,0x6f,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x69,0x2c,0x72,0x3d,0x73,0x29,0x3a,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x75,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x64,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x75,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x64,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x2c,0x72,0x3d,0x21,0x31,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4e,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x61,0x2c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x29,0x7b,0x43,0x75,0x28,0x65,0x2c,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x3b,0x69,0x66,0x28,0x21,0x72,0x26,0x26,0x21,0x6f,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x26,0x26,0x44,0x6c,0x28,0x6e,0x2c,0x74,0x2c,0x21,0x31,0x29,0x2c,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x61,0x29,0x3b,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x79,0x75,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6f,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x72,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6f,0x3f,0x28,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6b,0x61,0x28,0x6e,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6b,0x61,0x28,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x2c,0x61,0x29,0x29,0x3a,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x61,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x6c,0x26,0x26,0x44,0x6c,0x28,0x6e,0x2c,0x74,0x2c,0x21,0x30,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x75,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3f,0x4f,0x6c,0x28,0x30,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x21,0x3d,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x3a,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x4f,0x6c,0x28,0x30,0x2c,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x21,0x31,0x29,0x2c,0x59,0x61,0x28,0x65,0x2c,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x28,0x29,0x2c,0x6d,0x61,0x28,0x6c,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x2c,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x76,0x61,0x72,0x20,0x4c,0x75,0x2c,0x52,0x75,0x2c,0x46,0x75,0x2c,0x4f,0x75,0x2c,0x4d,0x75,0x3d,0x7b,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3a,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x75,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x65,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6f,0x3d,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x75,0x3d,0x21,0x31,0x2c,0x69,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x3b,0x69,0x66,0x28,0x28,0x72,0x3d,0x69,0x29,0x7c,0x7c,0x28,0x72,0x3d,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x6f,0x29,0x29,0x2c,0x72,0x3f,0x28,0x75,0x3d,0x21,0x30,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x31,0x32,0x39,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x6f,0x7c,0x3d,0x31,0x29,0x2c,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x31,0x26,0x6f,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x3f,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3f,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x3a,0x22,0x24,0x21,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x3f,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x38,0x3a,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x69,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x65,0x3d,0x6c,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x75,0x3f,0x28,0x6c,0x3d,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x75,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x69,0x3d,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x69,0x7d,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6c,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x3f,0x28,0x75,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x75,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x69,0x29,0x3a,0x75,0x3d,0x49,0x73,0x28,0x69,0x2c,0x6c,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x65,0x3d,0x4d,0x73,0x28,0x65,0x2c,0x6c,0x2c,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x65,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x75,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x49,0x75,0x28,0x74,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4d,0x75,0x2c,0x65,0x29,0x3a,0x55,0x75,0x28,0x6e,0x2c,0x69,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6f,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x6f,0x2c,0x75,0x29,0x7b,0x69,0x66,0x28,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x35,0x36,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x35,0x37,0x2c,0x6a,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x72,0x3d,0x63,0x75,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x32,0x29,0x29,0x29,0x29,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x28,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x6f,0x3d,0x72,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6c,0x3d,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x3d,0x49,0x73,0x28,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x2c,0x6c,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x28,0x6f,0x3d,0x4d,0x73,0x28,0x6f,0x2c,0x6c,0x2c,0x75,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x72,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6f,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x72,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x6b,0x61,0x28,0x6e,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x49,0x75,0x28,0x75,0x29,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4d,0x75,0x2c,0x6f,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6a,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x22,0x24,0x21,0x22,0x3d,0x3d,0x3d,0x6c,0x2e,0x64,0x61,0x74,0x61,0x29,0x7b,0x69,0x66,0x28,0x72,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x26,0x26,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x64,0x61,0x74,0x61,0x73,0x65,0x74,0x29,0x76,0x61,0x72,0x20,0x69,0x3d,0x72,0x2e,0x64,0x67,0x73,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x69,0x2c,0x6a,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x72,0x3d,0x63,0x75,0x28,0x6f,0x3d,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x31,0x39,0x29,0x29,0x2c,0x72,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x29,0x7d,0x69,0x66,0x28,0x69,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x75,0x26,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x2c,0x62,0x75,0x7c,0x7c,0x69,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x7a,0x69,0x29,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x75,0x26,0x2d,0x75,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x6c,0x3d,0x32,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x6c,0x3d,0x38,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x37,0x37,0x37,0x32,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x33,0x35,0x35,0x34,0x34,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x37,0x31,0x30,0x38,0x38,0x36,0x34,0x3a,0x6c,0x3d,0x33,0x32,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x6c,0x3d,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6c,0x3d,0x30,0x7d,0x30,0x21,0x3d,0x3d,0x28,0x6c,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x6c,0x26,0x28,0x72,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x75,0x29,0x29,0x3f,0x30,0x3a,0x6c,0x29,0x26,0x26,0x6c,0x21,0x3d,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x26,0x26,0x28,0x6f,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3d,0x6c,0x2c,0x4f,0x61,0x28,0x65,0x2c,0x6c,0x29,0x2c,0x74,0x73,0x28,0x72,0x2c,0x65,0x2c,0x6c,0x2c,0x2d,0x31,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x73,0x28,0x29,0x2c,0x6a,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x72,0x3d,0x63,0x75,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x31,0x29,0x29,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x24,0x3f,0x22,0x3d,0x3d,0x3d,0x6c,0x2e,0x64,0x61,0x74,0x61,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x3d,0x50,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x2c,0x6c,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x65,0x74,0x72,0x79,0x3d,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x65,0x3d,0x6f,0x2e,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x72,0x61,0x3d,0x73,0x6c,0x28,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x74,0x61,0x3d,0x6e,0x2c,0x6c,0x61,0x3d,0x21,0x30,0x2c,0x61,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x58,0x6c,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x47,0x6c,0x2c,0x71,0x6c,0x5b,0x4b,0x6c,0x2b,0x2b,0x5d,0x3d,0x59,0x6c,0x2c,0x58,0x6c,0x3d,0x65,0x2e,0x69,0x64,0x2c,0x47,0x6c,0x3d,0x65,0x2e,0x6f,0x76,0x65,0x72,0x66,0x6c,0x6f,0x77,0x2c,0x59,0x6c,0x3d,0x6e,0x29,0x2c,0x6e,0x3d,0x55,0x75,0x28,0x6e,0x2c,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x30,0x39,0x36,0x2c,0x6e,0x29,0x7d,0x28,0x65,0x2c,0x6e,0x2c,0x69,0x2c,0x6c,0x2c,0x72,0x2c,0x6f,0x2c,0x74,0x29,0x3b,0x69,0x66,0x28,0x75,0x29,0x7b,0x75,0x3d,0x6c,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x69,0x3d,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x72,0x3d,0x28,0x6f,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x73,0x3d,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x69,0x29,0x26,0x26,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x21,0x3d,0x3d,0x6f,0x3f,0x28,0x28,0x6c,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x6c,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x73,0x2c,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x6c,0x3d,0x46,0x73,0x28,0x6f,0x2c,0x73,0x29,0x29,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x26,0x6f,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x3f,0x75,0x3d,0x46,0x73,0x28,0x72,0x2c,0x75,0x29,0x3a,0x28,0x75,0x3d,0x4d,0x73,0x28,0x75,0x2c,0x69,0x2c,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x75,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6c,0x2c,0x6c,0x3d,0x75,0x2c,0x75,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x69,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x3f,0x49,0x75,0x28,0x74,0x29,0x3a,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x69,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x74,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x7d,0x2c,0x75,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x2c,0x75,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x7e,0x74,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4d,0x75,0x2c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x28,0x75,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x6c,0x3d,0x46,0x73,0x28,0x75,0x2c,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x28,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x29,0x2c,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x29,0x3f,0x28,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x65,0x5d,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x74,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6c,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x49,0x73,0x28,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x6e,0x7d,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6d,0x61,0x28,0x72,0x29,0x2c,0x6b,0x61,0x28,0x6e,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x29,0x2c,0x28,0x65,0x3d,0x55,0x75,0x28,0x6e,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x72,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x29,0x2c,0x4e,0x61,0x28,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3a,0x6e,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x6c,0x61,0x73,0x74,0x3a,0x72,0x2c,0x74,0x61,0x69,0x6c,0x3a,0x74,0x2c,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x3a,0x6c,0x7d,0x3a,0x28,0x61,0x2e,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3d,0x6e,0x2c,0x61,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3d,0x30,0x2c,0x61,0x2e,0x6c,0x61,0x73,0x74,0x3d,0x72,0x2c,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x74,0x2c,0x61,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x3d,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6c,0x3d,0x72,0x2e,0x72,0x65,0x76,0x65,0x61,0x6c,0x4f,0x72,0x64,0x65,0x72,0x2c,0x61,0x3d,0x72,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x69,0x66,0x28,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x74,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x28,0x72,0x3d,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x29,0x29,0x72,0x3d,0x31,0x26,0x72,0x7c,0x32,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x65,0x3a,0x66,0x6f,0x72,0x28,0x65,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x41,0x75,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x39,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x41,0x75,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x65,0x3d,0x3d,0x3d,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x26,0x3d,0x31,0x7d,0x69,0x66,0x28,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x72,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x73,0x22,0x3a,0x66,0x6f,0x72,0x28,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x6f,0x28,0x65,0x29,0x26,0x26,0x28,0x6c,0x3d,0x74,0x29,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x74,0x3d,0x6c,0x29,0x3f,0x28,0x6c,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x6c,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x56,0x75,0x28,0x6e,0x2c,0x21,0x31,0x2c,0x6c,0x2c,0x74,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x62,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x22,0x3a,0x66,0x6f,0x72,0x28,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x6f,0x28,0x65,0x29,0x29,0x7b,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x3d,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x74,0x2c,0x74,0x3d,0x6c,0x2c,0x6c,0x3d,0x65,0x7d,0x56,0x75,0x28,0x6e,0x2c,0x21,0x30,0x2c,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x6f,0x67,0x65,0x74,0x68,0x65,0x72,0x22,0x3a,0x56,0x75,0x28,0x6e,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x6e,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x65,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x29,0x2c,0x49,0x69,0x7c,0x3d,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x74,0x26,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x21,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x35,0x33,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x46,0x73,0x28,0x65,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x74,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x28,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x46,0x73,0x28,0x65,0x2c,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x29,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x3b,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x21,0x6c,0x61,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x3a,0x6e,0x3d,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x74,0x3d,0x6e,0x29,0x2c,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x63,0x6f,0x6c,0x6c,0x61,0x70,0x73,0x65,0x64,0x22,0x3a,0x74,0x3d,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x72,0x3d,0x74,0x29,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x3f,0x6e,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3f,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x2e,0x74,0x61,0x69,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x72,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x75,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x74,0x3d,0x30,0x2c,0x72,0x3d,0x30,0x3b,0x69,0x66,0x28,0x6e,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3b,0x29,0x74,0x7c,0x3d,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x72,0x7c,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x26,0x6c,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x2c,0x72,0x7c,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x26,0x6c,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6c,0x3d,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x6c,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3b,0x29,0x74,0x7c,0x3d,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x72,0x7c,0x3d,0x6c,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x2c,0x72,0x7c,0x3d,0x6c,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x6c,0x3d,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x72,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x6c,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x46,0x6c,0x28,0x29,0x2c,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x58,0x61,0x28,0x29,0x2c,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x43,0x6c,0x28,0x4e,0x6c,0x29,0x2c,0x74,0x6f,0x28,0x29,0x2c,0x72,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x28,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x72,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x72,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7c,0x7c,0x28,0x66,0x61,0x28,0x6e,0x29,0x3f,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x35,0x36,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7c,0x7c,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x61,0x26,0x26,0x28,0x6f,0x73,0x28,0x61,0x61,0x29,0x2c,0x61,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x29,0x2c,0x52,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x5a,0x61,0x28,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x4b,0x61,0x28,0x71,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x74,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x46,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x65,0x2e,0x72,0x65,0x66,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x72,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x36,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x69,0x66,0x28,0x65,0x3d,0x4b,0x61,0x28,0x57,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x66,0x61,0x28,0x6e,0x29,0x29,0x7b,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x74,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x72,0x5b,0x64,0x6c,0x5d,0x3d,0x6e,0x2c,0x72,0x5b,0x70,0x6c,0x5d,0x3d,0x6f,0x2c,0x65,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x2c,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x64,0x69,0x61,0x6c,0x6f,0x67,0x22,0x3a,0x6a,0x72,0x28,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x2c,0x72,0x29,0x2c,0x6a,0x72,0x28,0x22,0x63,0x6c,0x6f,0x73,0x65,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x66,0x72,0x61,0x6d,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x65,0x6d,0x62,0x65,0x64,0x22,0x3a,0x6a,0x72,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x76,0x69,0x64,0x65,0x6f,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x61,0x75,0x64,0x69,0x6f,0x22,0x3a,0x66,0x6f,0x72,0x28,0x6c,0x3d,0x30,0x3b,0x6c,0x3c,0x4d,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6c,0x2b,0x2b,0x29,0x6a,0x72,0x28,0x4d,0x72,0x5b,0x6c,0x5d,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3a,0x6a,0x72,0x28,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x61,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6c,0x69,0x6e,0x6b,0x22,0x3a,0x6a,0x72,0x28,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x72,0x29,0x2c,0x6a,0x72,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x65,0x74,0x61,0x69,0x6c,0x73,0x22,0x3a,0x6a,0x72,0x28,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x58,0x28,0x72,0x2c,0x6f,0x29,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x72,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3a,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x7d,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x6c,0x65,0x28,0x72,0x2c,0x6f,0x29,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x72,0x29,0x7d,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x69,0x20,0x69,0x6e,0x20,0x79,0x65,0x28,0x74,0x2c,0x6f,0x29,0x2c,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x29,0x69,0x66,0x28,0x6f,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x69,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x73,0x3d,0x6f,0x5b,0x69,0x5d,0x3b,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x69,0x3f,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x3f,0x72,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x73,0x26,0x26,0x28,0x21,0x30,0x21,0x3d,0x3d,0x6f,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x5a,0x72,0x28,0x72,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x73,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x5b,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x2c,0x73,0x5d,0x29,0x3a,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x26,0x26,0x72,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x22,0x22,0x2b,0x73,0x26,0x26,0x28,0x21,0x30,0x21,0x3d,0x3d,0x6f,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x5a,0x72,0x28,0x72,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x73,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x5b,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x2c,0x22,0x22,0x2b,0x73,0x5d,0x29,0x3a,0x75,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x69,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x73,0x26,0x26,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3d,0x3d,0x3d,0x69,0x26,0x26,0x6a,0x72,0x28,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x2c,0x72,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x51,0x28,0x72,0x29,0x2c,0x4a,0x28,0x72,0x2c,0x6f,0x2c,0x21,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x51,0x28,0x72,0x29,0x2c,0x6f,0x65,0x28,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x22,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x72,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x4a,0x72,0x29,0x7d,0x72,0x3d,0x6c,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x3d,0x39,0x3d,0x3d,0x3d,0x6c,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6c,0x3a,0x6c,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x3d,0x75,0x65,0x28,0x74,0x29,0x29,0x2c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x22,0x3d,0x3d,0x3d,0x65,0x3f,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x3f,0x28,0x28,0x65,0x3d,0x69,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x22,0x64,0x69,0x76,0x22,0x29,0x29,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x22,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x3c,0x5c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x22,0x2c,0x65,0x3d,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x29,0x3a,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x2e,0x69,0x73,0x3f,0x65,0x3d,0x69,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x74,0x2c,0x7b,0x69,0x73,0x3a,0x72,0x2e,0x69,0x73,0x7d,0x29,0x3a,0x28,0x65,0x3d,0x69,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x74,0x29,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x28,0x69,0x3d,0x65,0x2c,0x72,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3f,0x69,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x30,0x3a,0x72,0x2e,0x73,0x69,0x7a,0x65,0x26,0x26,0x28,0x69,0x2e,0x73,0x69,0x7a,0x65,0x3d,0x72,0x2e,0x73,0x69,0x7a,0x65,0x29,0x29,0x29,0x3a,0x65,0x3d,0x69,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x4e,0x53,0x28,0x65,0x2c,0x74,0x29,0x2c,0x65,0x5b,0x64,0x6c,0x5d,0x3d,0x6e,0x2c,0x65,0x5b,0x70,0x6c,0x5d,0x3d,0x72,0x2c,0x4c,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x65,0x3b,0x65,0x3a,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x69,0x3d,0x62,0x65,0x28,0x74,0x2c,0x72,0x29,0x2c,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x64,0x69,0x61,0x6c,0x6f,0x67,0x22,0x3a,0x6a,0x72,0x28,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x2c,0x65,0x29,0x2c,0x6a,0x72,0x28,0x22,0x63,0x6c,0x6f,0x73,0x65,0x22,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x66,0x72,0x61,0x6d,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x65,0x6d,0x62,0x65,0x64,0x22,0x3a,0x6a,0x72,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x76,0x69,0x64,0x65,0x6f,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x61,0x75,0x64,0x69,0x6f,0x22,0x3a,0x66,0x6f,0x72,0x28,0x6c,0x3d,0x30,0x3b,0x6c,0x3c,0x4d,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6c,0x2b,0x2b,0x29,0x6a,0x72,0x28,0x4d,0x72,0x5b,0x6c,0x5d,0x2c,0x65,0x29,0x3b,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3a,0x6a,0x72,0x28,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x61,0x67,0x65,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6c,0x69,0x6e,0x6b,0x22,0x3a,0x6a,0x72,0x28,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x65,0x29,0x2c,0x6a,0x72,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x64,0x65,0x74,0x61,0x69,0x6c,0x73,0x22,0x3a,0x6a,0x72,0x28,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x22,0x2c,0x65,0x29,0x2c,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x58,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6c,0x3d,0x59,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x22,0x3a,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6c,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3a,0x21,0x21,0x72,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x7d,0x2c,0x6c,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x72,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x6c,0x65,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6c,0x3d,0x72,0x65,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6a,0x72,0x28,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x22,0x2c,0x65,0x29,0x7d,0x66,0x6f,0x72,0x28,0x6f,0x20,0x69,0x6e,0x20,0x79,0x65,0x28,0x74,0x2c,0x6c,0x29,0x2c,0x73,0x3d,0x6c,0x29,0x69,0x66,0x28,0x73,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6f,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x73,0x5b,0x6f,0x5d,0x3b,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x3d,0x3d,0x3d,0x6f,0x3f,0x76,0x65,0x28,0x65,0x2c,0x63,0x29,0x3a,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x3d,0x3d,0x3d,0x6f,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x63,0x3d,0x63,0x3f,0x63,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x26,0x26,0x66,0x65,0x28,0x65,0x2c,0x63,0x29,0x3a,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x6f,0x3f,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x3f,0x28,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x22,0x22,0x21,0x3d,0x3d,0x63,0x29,0x26,0x26,0x64,0x65,0x28,0x65,0x2c,0x63,0x29,0x3a,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x64,0x65,0x28,0x65,0x2c,0x22,0x22,0x2b,0x63,0x29,0x3a,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x22,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x22,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x28,0x75,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6f,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3d,0x3d,0x3d,0x6f,0x26,0x26,0x6a,0x72,0x28,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x2c,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x62,0x28,0x65,0x2c,0x6f,0x2c,0x63,0x2c,0x69,0x29,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x51,0x28,0x65,0x29,0x2c,0x4a,0x28,0x65,0x2c,0x72,0x2c,0x21,0x31,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x51,0x28,0x65,0x29,0x2c,0x6f,0x65,0x28,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x22,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x65,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x22,0x2b,0x48,0x28,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x65,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x21,0x72,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x6f,0x3d,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x3f,0x74,0x65,0x28,0x65,0x2c,0x21,0x21,0x72,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6f,0x2c,0x21,0x31,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x72,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x74,0x65,0x28,0x65,0x2c,0x21,0x21,0x72,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x72,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x21,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x65,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x4a,0x72,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x72,0x3d,0x21,0x21,0x72,0x2e,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x67,0x22,0x3a,0x72,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x3d,0x21,0x31,0x7d,0x7d,0x72,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x69,0x66,0x28,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x4f,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x72,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x36,0x29,0x29,0x3b,0x69,0x66,0x28,0x74,0x3d,0x4b,0x61,0x28,0x71,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x4b,0x61,0x28,0x57,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x66,0x61,0x28,0x6e,0x29,0x29,0x7b,0x69,0x66,0x28,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x74,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x72,0x5b,0x64,0x6c,0x5d,0x3d,0x6e,0x2c,0x28,0x6f,0x3d,0x72,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x74,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x74,0x61,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x5a,0x72,0x28,0x72,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2c,0x74,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x21,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x5a,0x72,0x28,0x72,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2c,0x74,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x7d,0x6f,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x28,0x72,0x3d,0x28,0x39,0x3d,0x3d,0x3d,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x74,0x3a,0x74,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x54,0x65,0x78,0x74,0x4e,0x6f,0x64,0x65,0x28,0x72,0x29,0x29,0x5b,0x64,0x6c,0x5d,0x3d,0x6e,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x72,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x69,0x66,0x28,0x43,0x6c,0x28,0x4a,0x61,0x29,0x2c,0x72,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6c,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x61,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x64,0x61,0x28,0x29,0x2c,0x70,0x61,0x28,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x39,0x38,0x35,0x36,0x30,0x2c,0x6f,0x3d,0x21,0x31,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6f,0x3d,0x66,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x6f,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x38,0x29,0x29,0x3b,0x69,0x66,0x28,0x21,0x28,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x3f,0x6f,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x37,0x29,0x29,0x3b,0x6f,0x5b,0x64,0x6c,0x5d,0x3d,0x6e,0x7d,0x65,0x6c,0x73,0x65,0x20,0x70,0x61,0x28,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x28,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x3b,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6f,0x3d,0x21,0x31,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x61,0x26,0x26,0x28,0x6f,0x73,0x28,0x61,0x61,0x29,0x2c,0x61,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6f,0x3d,0x21,0x30,0x3b,0x69,0x66,0x28,0x21,0x6f,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x36,0x35,0x35,0x33,0x36,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x3f,0x28,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x6e,0x29,0x3a,0x28,0x28,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x21,0x3d,0x3d,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x72,0x26,0x26,0x28,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3f,0x30,0x3d,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x28,0x4f,0x69,0x3d,0x33,0x29,0x3a,0x68,0x73,0x28,0x29,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x61,0x28,0x29,0x2c,0x52,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x24,0x72,0x28,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x2c,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x61,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x2c,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x69,0x66,0x28,0x43,0x6c,0x28,0x4a,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x72,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x69,0x3d,0x6f,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x29,0x29,0x69,0x66,0x28,0x72,0x29,0x57,0x75,0x28,0x6f,0x2c,0x21,0x31,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x4f,0x69,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x69,0x3d,0x65,0x6f,0x28,0x65,0x29,0x29,0x29,0x7b,0x66,0x6f,0x72,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x57,0x75,0x28,0x6f,0x2c,0x21,0x31,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x69,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x26,0x26,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x72,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x6e,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x72,0x3d,0x74,0x2c,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x65,0x3d,0x72,0x2c,0x28,0x6f,0x3d,0x74,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x36,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x69,0x3d,0x6f,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x3f,0x28,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x2c,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x69,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x69,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x69,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6f,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x6f,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x69,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x69,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x69,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6f,0x2e,0x74,0x79,0x70,0x65,0x3d,0x69,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x69,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x2c,0x6f,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x29,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x31,0x26,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7c,0x32,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x26,0x26,0x47,0x65,0x28,0x29,0x3e,0x24,0x69,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x72,0x3d,0x21,0x30,0x2c,0x57,0x75,0x28,0x6f,0x2c,0x21,0x31,0x29,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x72,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x6f,0x28,0x69,0x29,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x72,0x3d,0x21,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x26,0x26,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x74,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x57,0x75,0x28,0x6f,0x2c,0x21,0x30,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x26,0x26,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x26,0x26,0x21,0x69,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x21,0x6c,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x32,0x2a,0x47,0x65,0x28,0x29,0x2d,0x6f,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3e,0x24,0x69,0x26,0x26,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x72,0x3d,0x21,0x30,0x2c,0x57,0x75,0x28,0x6f,0x2c,0x21,0x31,0x29,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x3b,0x6f,0x2e,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3f,0x28,0x69,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x69,0x29,0x3a,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x6f,0x2e,0x6c,0x61,0x73,0x74,0x29,0x3f,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x69,0x3a,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x69,0x2c,0x6f,0x2e,0x6c,0x61,0x73,0x74,0x3d,0x69,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x3f,0x28,0x6e,0x3d,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x2c,0x6f,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x6e,0x2c,0x6f,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x6f,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3d,0x47,0x65,0x28,0x29,0x2c,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x3d,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x72,0x3f,0x31,0x26,0x74,0x7c,0x32,0x3a,0x31,0x26,0x74,0x29,0x2c,0x6e,0x29,0x3a,0x28,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x73,0x28,0x29,0x2c,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x29,0x2c,0x72,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3f,0x30,0x21,0x3d,0x3d,0x28,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x26,0x52,0x69,0x29,0x26,0x26,0x28,0x51,0x75,0x28,0x6e,0x29,0x2c,0x36,0x26,0x6e,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x29,0x29,0x3a,0x51,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x35,0x36,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x6c,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x46,0x6c,0x28,0x29,0x2c,0x36,0x35,0x35,0x33,0x36,0x26,0x28,0x65,0x3d,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x36,0x35,0x35,0x33,0x37,0x26,0x65,0x7c,0x31,0x32,0x38,0x2c,0x6e,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x61,0x28,0x29,0x2c,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x43,0x6c,0x28,0x4e,0x6c,0x29,0x2c,0x74,0x6f,0x28,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x36,0x35,0x35,0x33,0x36,0x26,0x28,0x65,0x3d,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x29,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x36,0x35,0x35,0x33,0x37,0x26,0x65,0x7c,0x31,0x32,0x38,0x2c,0x6e,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x69,0x66,0x28,0x43,0x6c,0x28,0x4a,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x30,0x29,0x29,0x3b,0x70,0x61,0x28,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x36,0x35,0x35,0x33,0x36,0x26,0x28,0x65,0x3d,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x3f,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x36,0x35,0x35,0x33,0x37,0x26,0x65,0x7c,0x31,0x32,0x38,0x2c,0x6e,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x43,0x6c,0x28,0x4a,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x61,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x61,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x73,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x4c,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x29,0x65,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x74,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x74,0x2c,0x74,0x3d,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x74,0x3d,0x3d,0x3d,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x2c,0x52,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x46,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x69,0x66,0x28,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7b,0x65,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x4b,0x61,0x28,0x57,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x61,0x2c,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x6c,0x3d,0x59,0x28,0x65,0x2c,0x6c,0x29,0x2c,0x72,0x3d,0x59,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x6c,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x6c,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x2c,0x72,0x3d,0x44,0x28,0x7b,0x7d,0x2c,0x72,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x6c,0x3d,0x72,0x65,0x28,0x65,0x2c,0x6c,0x29,0x2c,0x72,0x3d,0x72,0x65,0x28,0x65,0x2c,0x72,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x65,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x4a,0x72,0x29,0x7d,0x66,0x6f,0x72,0x28,0x63,0x20,0x69,0x6e,0x20,0x79,0x65,0x28,0x74,0x2c,0x72,0x29,0x2c,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x29,0x69,0x66,0x28,0x21,0x72,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x26,0x26,0x6c,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6c,0x5b,0x63,0x5d,0x29,0x69,0x66,0x28,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6c,0x5b,0x63,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x61,0x20,0x69,0x6e,0x20,0x69,0x29,0x69,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x29,0x26,0x26,0x28,0x74,0x7c,0x7c,0x28,0x74,0x3d,0x7b,0x7d,0x29,0x2c,0x74,0x5b,0x61,0x5d,0x3d,0x22,0x22,0x29,0x7d,0x65,0x6c,0x73,0x65,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x22,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x75,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x3f,0x6f,0x7c,0x7c,0x28,0x6f,0x3d,0x5b,0x5d,0x29,0x3a,0x28,0x6f,0x3d,0x6f,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x63,0x20,0x69,0x6e,0x20,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x73,0x3d,0x72,0x5b,0x63,0x5d,0x3b,0x69,0x66,0x28,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6c,0x3f,0x6c,0x5b,0x63,0x5d,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x72,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x26,0x26,0x73,0x21,0x3d,0x3d,0x69,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x73,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x69,0x29,0x29,0x69,0x66,0x28,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x3d,0x3d,0x3d,0x63,0x29,0x69,0x66,0x28,0x69,0x29,0x7b,0x66,0x6f,0x72,0x28,0x61,0x20,0x69,0x6e,0x20,0x69,0x29,0x21,0x69,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x29,0x7c,0x7c,0x73,0x26,0x26,0x73,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x29,0x7c,0x7c,0x28,0x74,0x7c,0x7c,0x28,0x74,0x3d,0x7b,0x7d,0x29,0x2c,0x74,0x5b,0x61,0x5d,0x3d,0x22,0x22,0x29,0x3b,0x66,0x6f,0x72,0x28,0x61,0x20,0x69,0x6e,0x20,0x73,0x29,0x73,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x29,0x26,0x26,0x69,0x5b,0x61,0x5d,0x21,0x3d,0x3d,0x73,0x5b,0x61,0x5d,0x26,0x26,0x28,0x74,0x7c,0x7c,0x28,0x74,0x3d,0x7b,0x7d,0x29,0x2c,0x74,0x5b,0x61,0x5d,0x3d,0x73,0x5b,0x61,0x5d,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x7c,0x7c,0x28,0x6f,0x7c,0x7c,0x28,0x6f,0x3d,0x5b,0x5d,0x29,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x74,0x29,0x29,0x2c,0x74,0x3d,0x73,0x3b,0x65,0x6c,0x73,0x65,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x73,0x3d,0x73,0x3f,0x73,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x69,0x3d,0x69,0x3f,0x69,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x73,0x26,0x26,0x69,0x21,0x3d,0x3d,0x73,0x26,0x26,0x28,0x6f,0x3d,0x6f,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x73,0x29,0x29,0x3a,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x63,0x3f,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x26,0x26,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x7c,0x7c,0x28,0x6f,0x3d,0x6f,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x22,0x22,0x2b,0x73,0x29,0x3a,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x75,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x3f,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x73,0x26,0x26,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x6a,0x72,0x28,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x2c,0x65,0x29,0x2c,0x6f,0x7c,0x7c,0x69,0x3d,0x3d,0x3d,0x73,0x7c,0x7c,0x28,0x6f,0x3d,0x5b,0x5d,0x29,0x29,0x3a,0x28,0x6f,0x3d,0x6f,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x73,0x29,0x29,0x7d,0x74,0x26,0x26,0x28,0x6f,0x3d,0x6f,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x2c,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6f,0x3b,0x28,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x63,0x29,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x7d,0x2c,0x4f,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x74,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x3b,0x76,0x61,0x72,0x20,0x59,0x75,0x3d,0x21,0x31,0x2c,0x58,0x75,0x3d,0x21,0x31,0x2c,0x47,0x75,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x57,0x65,0x61,0x6b,0x53,0x65,0x74,0x3f,0x57,0x65,0x61,0x6b,0x53,0x65,0x74,0x3a,0x53,0x65,0x74,0x2c,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x75,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x74,0x29,0x74,0x72,0x79,0x7b,0x74,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x72,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x74,0x72,0x79,0x7b,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x72,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6e,0x69,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x3f,0x72,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x69,0x66,0x28,0x28,0x6c,0x2e,0x74,0x61,0x67,0x26,0x65,0x29,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6c,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3b,0x6c,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x26,0x26,0x65,0x69,0x28,0x6e,0x2c,0x74,0x2c,0x61,0x29,0x7d,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x69,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x3f,0x6e,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x3d,0x6e,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x69,0x66,0x28,0x28,0x74,0x2e,0x74,0x61,0x67,0x26,0x65,0x29,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x3b,0x74,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3d,0x72,0x28,0x29,0x7d,0x74,0x3d,0x74,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x74,0x21,0x3d,0x3d,0x6e,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x69,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x65,0x2e,0x74,0x61,0x67,0x2c,0x65,0x3d,0x74,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x3f,0x6e,0x28,0x65,0x29,0x3a,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x69,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x69,0x28,0x6e,0x29,0x29,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x35,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x26,0x26,0x28,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x64,0x6c,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x70,0x6c,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x68,0x6c,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x76,0x6c,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x6e,0x5b,0x67,0x6c,0x5d,0x29,0x29,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x69,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x69,0x28,0x65,0x29,0x7b,0x65,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x6f,0x69,0x28,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x66,0x6f,0x72,0x28,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x35,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x38,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x32,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x65,0x3b,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x69,0x66,0x28,0x21,0x28,0x32,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x72,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x72,0x29,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6e,0x3f,0x38,0x3d,0x3d,0x3d,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x65,0x2c,0x6e,0x29,0x3a,0x74,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x65,0x2c,0x6e,0x29,0x3a,0x28,0x38,0x3d,0x3d,0x3d,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x28,0x6e,0x3d,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x29,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x65,0x2c,0x74,0x29,0x3a,0x28,0x6e,0x3d,0x74,0x29,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x29,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x7c,0x7c,0x28,0x6e,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x4a,0x72,0x29,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x29,0x66,0x6f,0x72,0x28,0x69,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x69,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x72,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x72,0x29,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6e,0x3f,0x74,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x65,0x2c,0x6e,0x29,0x3a,0x74,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x29,0x66,0x6f,0x72,0x28,0x73,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x73,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x76,0x61,0x72,0x20,0x63,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x69,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x70,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x61,0x6e,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x6e,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x74,0x72,0x79,0x7b,0x61,0x6e,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x6c,0x6e,0x2c,0x74,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x75,0x29,0x7b,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x58,0x75,0x7c,0x7c,0x4a,0x75,0x28,0x74,0x2c,0x6e,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x63,0x69,0x2c,0x6c,0x3d,0x66,0x69,0x3b,0x63,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x66,0x69,0x3d,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x63,0x69,0x3d,0x72,0x29,0x26,0x26,0x28,0x66,0x69,0x3f,0x28,0x65,0x3d,0x63,0x69,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x74,0x29,0x3a,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x74,0x29,0x29,0x3a,0x63,0x69,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x38,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x69,0x26,0x26,0x28,0x66,0x69,0x3f,0x28,0x65,0x3d,0x63,0x69,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x69,0x6c,0x28,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2c,0x74,0x29,0x3a,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x69,0x6c,0x28,0x65,0x2c,0x74,0x29,0x2c,0x42,0x6e,0x28,0x65,0x29,0x29,0x3a,0x69,0x6c,0x28,0x63,0x69,0x2c,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x3d,0x63,0x69,0x2c,0x6c,0x3d,0x66,0x69,0x2c,0x63,0x69,0x3d,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x66,0x69,0x3d,0x21,0x30,0x2c,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x63,0x69,0x3d,0x72,0x2c,0x66,0x69,0x3d,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x69,0x66,0x28,0x21,0x58,0x75,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x74,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x72,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x29,0x29,0x29,0x7b,0x6c,0x3d,0x72,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6c,0x2c,0x6f,0x3d,0x61,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3b,0x61,0x3d,0x61,0x2e,0x74,0x61,0x67,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x61,0x29,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x34,0x26,0x61,0x29,0x29,0x26,0x26,0x65,0x69,0x28,0x74,0x2c,0x6e,0x2c,0x6f,0x29,0x2c,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7d,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x21,0x58,0x75,0x26,0x26,0x28,0x4a,0x75,0x28,0x74,0x2c,0x6e,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x72,0x3d,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x74,0x72,0x79,0x7b,0x72,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x75,0x29,0x7b,0x45,0x73,0x28,0x74,0x2c,0x6e,0x2c,0x75,0x29,0x7d,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x31,0x26,0x74,0x2e,0x6d,0x6f,0x64,0x65,0x3f,0x28,0x58,0x75,0x3d,0x28,0x72,0x3d,0x58,0x75,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x58,0x75,0x3d,0x72,0x29,0x3a,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x64,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x69,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x28,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x65,0x77,0x20,0x47,0x75,0x29,0x2c,0x6e,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x4e,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x29,0x3b,0x74,0x2e,0x68,0x61,0x73,0x28,0x6e,0x29,0x7c,0x7c,0x28,0x74,0x2e,0x61,0x64,0x64,0x28,0x6e,0x29,0x2c,0x6e,0x2e,0x74,0x68,0x65,0x6e,0x28,0x72,0x2c,0x72,0x29,0x29,0x7d,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x69,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x3b,0x72,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x72,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x5b,0x72,0x5d,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x65,0x2c,0x75,0x3d,0x6e,0x2c,0x69,0x3d,0x75,0x3b,0x65,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x3b,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x69,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x69,0x3d,0x69,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x66,0x69,0x3d,0x21,0x31,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x69,0x3d,0x69,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x66,0x69,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x69,0x3d,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x30,0x29,0x29,0x3b,0x70,0x69,0x28,0x6f,0x2c,0x75,0x2c,0x6c,0x29,0x2c,0x63,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x69,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x73,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x28,0x73,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x6c,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x45,0x73,0x28,0x6c,0x2c,0x6e,0x2c,0x63,0x29,0x7d,0x7d,0x69,0x66,0x28,0x31,0x32,0x38,0x35,0x34,0x26,0x6e,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x76,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x69,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x72,0x3d,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x69,0x66,0x28,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x34,0x26,0x72,0x29,0x7b,0x74,0x72,0x79,0x7b,0x74,0x69,0x28,0x33,0x2c,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x2c,0x72,0x69,0x28,0x33,0x2c,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x74,0x72,0x79,0x7b,0x74,0x69,0x28,0x35,0x2c,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x35,0x31,0x32,0x26,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x4a,0x75,0x28,0x74,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x69,0x66,0x28,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x35,0x31,0x32,0x26,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x4a,0x75,0x28,0x74,0x2c,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x2c,0x33,0x32,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x74,0x72,0x79,0x7b,0x64,0x65,0x28,0x6c,0x2c,0x22,0x22,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x69,0x66,0x28,0x34,0x26,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x6c,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3f,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x6f,0x2c,0x69,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x73,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x29,0x74,0x72,0x79,0x7b,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x69,0x26,0x26,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6f,0x2e,0x6e,0x61,0x6d,0x65,0x26,0x26,0x47,0x28,0x6c,0x2c,0x6f,0x29,0x2c,0x62,0x65,0x28,0x69,0x2c,0x75,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x65,0x28,0x69,0x2c,0x6f,0x29,0x3b,0x66,0x6f,0x72,0x28,0x75,0x3d,0x30,0x3b,0x75,0x3c,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x75,0x2b,0x3d,0x32,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x73,0x5b,0x75,0x5d,0x2c,0x64,0x3d,0x73,0x5b,0x75,0x2b,0x31,0x5d,0x3b,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x76,0x65,0x28,0x6c,0x2c,0x64,0x29,0x3a,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x66,0x65,0x28,0x6c,0x2c,0x64,0x29,0x3a,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x64,0x65,0x28,0x6c,0x2c,0x64,0x29,0x3a,0x62,0x28,0x6c,0x2c,0x66,0x2c,0x64,0x2c,0x63,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x5a,0x28,0x6c,0x2c,0x6f,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x61,0x65,0x28,0x6c,0x2c,0x6f,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x76,0x61,0x72,0x20,0x70,0x3d,0x6c,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3b,0x6c,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6f,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6d,0x3f,0x74,0x65,0x28,0x6c,0x2c,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6d,0x2c,0x21,0x31,0x29,0x3a,0x70,0x21,0x3d,0x3d,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6f,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3f,0x74,0x65,0x28,0x6c,0x2c,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6f,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x21,0x30,0x29,0x3a,0x74,0x65,0x28,0x6c,0x2c,0x21,0x21,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6f,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3f,0x5b,0x5d,0x3a,0x22,0x22,0x2c,0x21,0x31,0x29,0x29,0x7d,0x6c,0x5b,0x70,0x6c,0x5d,0x3d,0x6f,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x69,0x66,0x28,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x34,0x26,0x72,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x32,0x29,0x29,0x3b,0x6c,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6f,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x74,0x72,0x79,0x7b,0x6c,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6f,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x69,0x66,0x28,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x34,0x26,0x72,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x74,0x72,0x79,0x7b,0x42,0x6e,0x28,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x38,0x31,0x39,0x32,0x26,0x28,0x6c,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x26,0x28,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3d,0x6f,0x2c,0x21,0x6f,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x56,0x69,0x3d,0x47,0x65,0x28,0x29,0x29,0x29,0x2c,0x34,0x26,0x72,0x26,0x26,0x6d,0x69,0x28,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x69,0x66,0x28,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x3f,0x28,0x58,0x75,0x3d,0x28,0x63,0x3d,0x58,0x75,0x29,0x7c,0x7c,0x66,0x2c,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x58,0x75,0x3d,0x63,0x29,0x3a,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x38,0x31,0x39,0x32,0x26,0x72,0x29,0x7b,0x69,0x66,0x28,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x28,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3d,0x63,0x29,0x26,0x26,0x21,0x66,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x66,0x6f,0x72,0x28,0x5a,0x75,0x3d,0x65,0x2c,0x66,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x64,0x3d,0x5a,0x75,0x3d,0x66,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6d,0x3d,0x28,0x70,0x3d,0x5a,0x75,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x70,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x74,0x69,0x28,0x34,0x2c,0x70,0x2c,0x70,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x4a,0x75,0x28,0x70,0x2c,0x70,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x70,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x68,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x72,0x3d,0x70,0x2c,0x74,0x3d,0x70,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x6e,0x3d,0x72,0x2c,0x68,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x68,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x68,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x72,0x2c,0x74,0x2c,0x76,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x4a,0x75,0x28,0x70,0x2c,0x70,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x70,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7b,0x77,0x69,0x28,0x64,0x29,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x3f,0x28,0x6d,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x70,0x2c,0x5a,0x75,0x3d,0x6d,0x29,0x3a,0x77,0x69,0x28,0x64,0x29,0x7d,0x66,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x65,0x3a,0x66,0x6f,0x72,0x28,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x3d,0x65,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x29,0x7b,0x66,0x3d,0x64,0x3b,0x74,0x72,0x79,0x7b,0x6c,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x63,0x3f,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x6f,0x3d,0x6c,0x2e,0x73,0x74,0x79,0x6c,0x65,0x29,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3f,0x6f,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x22,0x2c,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x2c,0x22,0x69,0x6d,0x70,0x6f,0x72,0x74,0x61,0x6e,0x74,0x22,0x29,0x3a,0x6f,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x3a,0x28,0x69,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x75,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x28,0x73,0x3d,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x73,0x74,0x79,0x6c,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x73,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x22,0x29,0x3f,0x73,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3d,0x68,0x65,0x28,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x22,0x2c,0x75,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x29,0x74,0x72,0x79,0x7b,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x63,0x3f,0x22,0x22,0x3a,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x76,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x76,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x28,0x32,0x32,0x21,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x26,0x26,0x32,0x33,0x21,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x64,0x3d,0x3d,0x3d,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x64,0x2c,0x64,0x3d,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x64,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x66,0x3d,0x3d,0x3d,0x64,0x26,0x26,0x28,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x64,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x66,0x3d,0x3d,0x3d,0x64,0x26,0x26,0x28,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x64,0x3d,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x68,0x69,0x28,0x6e,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x65,0x29,0x2c,0x34,0x26,0x72,0x26,0x26,0x6d,0x69,0x28,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x69,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3b,0x69,0x66,0x28,0x32,0x26,0x6e,0x29,0x7b,0x74,0x72,0x79,0x7b,0x65,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6f,0x69,0x28,0x74,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x74,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x30,0x29,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x72,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x33,0x32,0x26,0x72,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x26,0x28,0x64,0x65,0x28,0x6c,0x2c,0x22,0x22,0x29,0x2c,0x72,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x33,0x33,0x29,0x2c,0x73,0x69,0x28,0x65,0x2c,0x75,0x69,0x28,0x65,0x29,0x2c,0x6c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x76,0x61,0x72,0x20,0x6f,0x3d,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x69,0x69,0x28,0x65,0x2c,0x75,0x69,0x28,0x65,0x29,0x2c,0x6f,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x31,0x29,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x75,0x29,0x7b,0x45,0x73,0x28,0x65,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x75,0x29,0x7d,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x33,0x7d,0x34,0x30,0x39,0x36,0x26,0x6e,0x26,0x26,0x28,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x34,0x30,0x39,0x37,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x5a,0x75,0x3d,0x65,0x2c,0x62,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x69,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x5a,0x75,0x2c,0x61,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x32,0x32,0x3d,0x3d,0x3d,0x6c,0x2e,0x74,0x61,0x67,0x26,0x26,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x59,0x75,0x3b,0x69,0x66,0x28,0x21,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6c,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x58,0x75,0x3b,0x75,0x3d,0x59,0x75,0x3b,0x76,0x61,0x72,0x20,0x73,0x3d,0x58,0x75,0x3b,0x69,0x66,0x28,0x59,0x75,0x3d,0x6f,0x2c,0x28,0x58,0x75,0x3d,0x69,0x29,0x26,0x26,0x21,0x73,0x29,0x66,0x6f,0x72,0x28,0x5a,0x75,0x3d,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x69,0x3d,0x28,0x6f,0x3d,0x5a,0x75,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x32,0x32,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x53,0x69,0x28,0x6c,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x3f,0x28,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6f,0x2c,0x5a,0x75,0x3d,0x69,0x29,0x3a,0x53,0x69,0x28,0x6c,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x5a,0x75,0x3d,0x61,0x2c,0x62,0x69,0x28,0x61,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x5a,0x75,0x3d,0x6c,0x2c,0x59,0x75,0x3d,0x75,0x2c,0x58,0x75,0x3d,0x73,0x7d,0x6b,0x69,0x28,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x30,0x21,0x3d,0x3d,0x28,0x38,0x37,0x37,0x32,0x26,0x6c,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x28,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6c,0x2c,0x5a,0x75,0x3d,0x61,0x29,0x3a,0x6b,0x69,0x28,0x65,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x69,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x5a,0x75,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x38,0x37,0x37,0x32,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x38,0x37,0x37,0x32,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x58,0x75,0x7c,0x7c,0x72,0x69,0x28,0x35,0x2c,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x34,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x26,0x21,0x58,0x75,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3f,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x74,0x75,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x29,0x3b,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x6c,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x72,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x7d,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x42,0x61,0x28,0x6e,0x2c,0x6f,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x75,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x42,0x61,0x28,0x6e,0x2c,0x75,0x2c,0x74,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x69,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x34,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7b,0x74,0x3d,0x69,0x3b,0x76,0x61,0x72,0x20,0x73,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x73,0x2e,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x26,0x26,0x74,0x2e,0x66,0x6f,0x63,0x75,0x73,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x69,0x6d,0x67,0x22,0x3a,0x73,0x2e,0x73,0x72,0x63,0x26,0x26,0x28,0x74,0x2e,0x73,0x72,0x63,0x3d,0x73,0x2e,0x73,0x72,0x63,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x66,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x42,0x6e,0x28,0x64,0x29,0x7d,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x33,0x29,0x29,0x7d,0x58,0x75,0x7c,0x7c,0x35,0x31,0x32,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x26,0x6c,0x69,0x28,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x70,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x70,0x29,0x7d,0x7d,0x69,0x66,0x28,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x7b,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x5a,0x75,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x5a,0x75,0x3b,0x69,0x66,0x28,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x7b,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x5a,0x75,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x69,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x5a,0x75,0x3b,0x74,0x72,0x79,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x72,0x69,0x28,0x34,0x2c,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x74,0x2c,0x69,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x6c,0x2c,0x69,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x6c,0x69,0x28,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x61,0x2c,0x69,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x6c,0x69,0x28,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x6f,0x2c,0x69,0x29,0x7d,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x69,0x29,0x7d,0x69,0x66,0x28,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x76,0x61,0x72,0x20,0x75,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x29,0x7b,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x75,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x5a,0x75,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x76,0x61,0x72,0x20,0x78,0x69,0x2c,0x45,0x69,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x63,0x65,0x69,0x6c,0x2c,0x43,0x69,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x5f,0x69,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x50,0x69,0x3d,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x4e,0x69,0x3d,0x30,0x2c,0x7a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x54,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x69,0x3d,0x30,0x2c,0x52,0x69,0x3d,0x30,0x2c,0x46,0x69,0x3d,0x45,0x6c,0x28,0x30,0x29,0x2c,0x4f,0x69,0x3d,0x30,0x2c,0x4d,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x49,0x69,0x3d,0x30,0x2c,0x44,0x69,0x3d,0x30,0x2c,0x55,0x69,0x3d,0x30,0x2c,0x6a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x41,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x56,0x69,0x3d,0x30,0x2c,0x24,0x69,0x3d,0x31,0x2f,0x30,0x2c,0x42,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x48,0x69,0x3d,0x21,0x31,0x2c,0x57,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x51,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x69,0x3d,0x21,0x31,0x2c,0x4b,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x59,0x69,0x3d,0x30,0x2c,0x58,0x69,0x3d,0x30,0x2c,0x47,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x69,0x3d,0x2d,0x31,0x2c,0x4a,0x69,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x73,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x3f,0x47,0x65,0x28,0x29,0x3a,0x2d,0x31,0x21,0x3d,0x3d,0x5a,0x69,0x3f,0x5a,0x69,0x3a,0x5a,0x69,0x3d,0x47,0x65,0x28,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x73,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3f,0x31,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x4e,0x69,0x29,0x26,0x26,0x30,0x21,0x3d,0x3d,0x4c,0x69,0x3f,0x4c,0x69,0x26,0x2d,0x4c,0x69,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x61,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3f,0x28,0x30,0x3d,0x3d,0x3d,0x4a,0x69,0x26,0x26,0x28,0x4a,0x69,0x3d,0x76,0x6e,0x28,0x29,0x29,0x2c,0x4a,0x69,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6b,0x6e,0x29,0x3f,0x65,0x3a,0x65,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x65,0x76,0x65,0x6e,0x74,0x29,0x3f,0x31,0x36,0x3a,0x47,0x6e,0x28,0x65,0x2e,0x74,0x79,0x70,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x35,0x30,0x3c,0x58,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x58,0x69,0x3d,0x30,0x2c,0x47,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x35,0x29,0x29,0x3b,0x79,0x6e,0x28,0x65,0x2c,0x74,0x2c,0x72,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x32,0x26,0x4e,0x69,0x29,0x26,0x26,0x65,0x3d,0x3d,0x3d,0x7a,0x69,0x7c,0x7c,0x28,0x65,0x3d,0x3d,0x3d,0x7a,0x69,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x26,0x4e,0x69,0x29,0x26,0x26,0x28,0x44,0x69,0x7c,0x3d,0x74,0x29,0x2c,0x34,0x3d,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x75,0x73,0x28,0x65,0x2c,0x4c,0x69,0x29,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x4e,0x69,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x28,0x24,0x69,0x3d,0x47,0x65,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x6a,0x6c,0x26,0x26,0x24,0x6c,0x28,0x29,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3b,0x21,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x72,0x3d,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x6c,0x3d,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x2c,0x61,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x30,0x3c,0x61,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x61,0x29,0x2c,0x75,0x3d,0x31,0x3c,0x3c,0x6f,0x2c,0x69,0x3d,0x6c,0x5b,0x6f,0x5d,0x3b,0x2d,0x31,0x3d,0x3d,0x3d,0x69,0x3f,0x30,0x21,0x3d,0x3d,0x28,0x75,0x26,0x74,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x75,0x26,0x72,0x29,0x7c,0x7c,0x28,0x6c,0x5b,0x6f,0x5d,0x3d,0x6d,0x6e,0x28,0x75,0x2c,0x6e,0x29,0x29,0x3a,0x69,0x3c,0x3d,0x6e,0x26,0x26,0x28,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x75,0x29,0x2c,0x61,0x26,0x3d,0x7e,0x75,0x7d,0x7d,0x28,0x65,0x2c,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x70,0x6e,0x28,0x65,0x2c,0x65,0x3d,0x3d,0x3d,0x7a,0x69,0x3f,0x4c,0x69,0x3a,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x72,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x4b,0x65,0x28,0x74,0x29,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x3d,0x72,0x26,0x2d,0x72,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x26,0x26,0x4b,0x65,0x28,0x74,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x6e,0x29,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x6a,0x6c,0x3d,0x21,0x30,0x2c,0x56,0x6c,0x28,0x65,0x29,0x7d,0x28,0x69,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x29,0x3a,0x56,0x6c,0x28,0x69,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x29,0x2c,0x6f,0x6c,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x26,0x26,0x24,0x6c,0x28,0x29,0x7d,0x29,0x29,0x2c,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x77,0x6e,0x28,0x72,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x74,0x3d,0x4a,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x74,0x3d,0x65,0x6e,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x3d,0x6e,0x6e,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x74,0x3d,0x72,0x6e,0x7d,0x74,0x3d,0x7a,0x73,0x28,0x74,0x2c,0x6c,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x29,0x7d,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x6e,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x74,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x5a,0x69,0x3d,0x2d,0x31,0x2c,0x4a,0x69,0x3d,0x30,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x53,0x73,0x28,0x29,0x26,0x26,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x70,0x6e,0x28,0x65,0x2c,0x65,0x3d,0x3d,0x3d,0x7a,0x69,0x3f,0x4c,0x69,0x3a,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x33,0x30,0x26,0x72,0x29,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x72,0x26,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x7c,0x7c,0x6e,0x29,0x6e,0x3d,0x76,0x73,0x28,0x65,0x2c,0x72,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x6e,0x3d,0x72,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x4e,0x69,0x3b,0x4e,0x69,0x7c,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6d,0x73,0x28,0x29,0x3b,0x66,0x6f,0x72,0x28,0x7a,0x69,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x4c,0x69,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x28,0x42,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x24,0x69,0x3d,0x47,0x65,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x64,0x73,0x28,0x65,0x2c,0x6e,0x29,0x29,0x3b,0x3b,0x29,0x74,0x72,0x79,0x7b,0x79,0x73,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x69,0x29,0x7b,0x70,0x73,0x28,0x65,0x2c,0x69,0x29,0x7d,0x5f,0x61,0x28,0x29,0x2c,0x43,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6f,0x2c,0x4e,0x69,0x3d,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x69,0x3f,0x6e,0x3d,0x30,0x3a,0x28,0x7a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x69,0x3d,0x30,0x2c,0x6e,0x3d,0x4f,0x69,0x29,0x7d,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x69,0x66,0x28,0x32,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x6c,0x3d,0x68,0x6e,0x28,0x65,0x29,0x29,0x26,0x26,0x28,0x72,0x3d,0x6c,0x2c,0x6e,0x3d,0x61,0x73,0x28,0x65,0x2c,0x6c,0x29,0x29,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x74,0x3d,0x4d,0x69,0x2c,0x64,0x73,0x28,0x65,0x2c,0x30,0x29,0x2c,0x75,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x74,0x3b,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x6e,0x29,0x75,0x73,0x28,0x65,0x2c,0x72,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6c,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x33,0x30,0x26,0x72,0x29,0x26,0x26,0x21,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x31,0x36,0x33,0x38,0x34,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x74,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x29,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x3b,0x72,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x72,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x5b,0x72,0x5d,0x2c,0x61,0x3d,0x6c,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3b,0x6c,0x3d,0x6c,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x21,0x75,0x72,0x28,0x61,0x28,0x29,0x2c,0x6c,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x75,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x7d,0x69,0x66,0x28,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x31,0x36,0x33,0x38,0x34,0x26,0x6e,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x6e,0x3d,0x74,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x28,0x6c,0x29,0x26,0x26,0x28,0x32,0x3d,0x3d,0x3d,0x28,0x6e,0x3d,0x76,0x73,0x28,0x65,0x2c,0x72,0x29,0x29,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x68,0x6e,0x28,0x65,0x29,0x29,0x26,0x26,0x28,0x72,0x3d,0x6f,0x2c,0x6e,0x3d,0x61,0x73,0x28,0x65,0x2c,0x6f,0x29,0x29,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x74,0x3d,0x4d,0x69,0x2c,0x64,0x73,0x28,0x65,0x2c,0x30,0x29,0x2c,0x75,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x74,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x6c,0x2c,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x72,0x2c,0x6e,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x35,0x29,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x77,0x73,0x28,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x69,0x66,0x28,0x75,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x28,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x26,0x72,0x29,0x3d,0x3d,0x3d,0x72,0x26,0x26,0x31,0x30,0x3c,0x28,0x6e,0x3d,0x56,0x69,0x2b,0x35,0x30,0x30,0x2d,0x47,0x65,0x28,0x29,0x29,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x70,0x6e,0x28,0x65,0x2c,0x30,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x28,0x28,0x6c,0x3d,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x26,0x72,0x29,0x21,0x3d,0x3d,0x72,0x29,0x7b,0x65,0x73,0x28,0x29,0x2c,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x72,0x6c,0x28,0x77,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x2c,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x77,0x73,0x28,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x69,0x66,0x28,0x75,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x28,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x26,0x72,0x29,0x3d,0x3d,0x3d,0x72,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x2c,0x6c,0x3d,0x2d,0x31,0x3b,0x30,0x3c,0x72,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x72,0x29,0x3b,0x6f,0x3d,0x31,0x3c,0x3c,0x75,0x2c,0x28,0x75,0x3d,0x6e,0x5b,0x75,0x5d,0x29,0x3e,0x6c,0x26,0x26,0x28,0x6c,0x3d,0x75,0x29,0x2c,0x72,0x26,0x3d,0x7e,0x6f,0x7d,0x69,0x66,0x28,0x72,0x3d,0x6c,0x2c,0x31,0x30,0x3c,0x28,0x72,0x3d,0x28,0x31,0x32,0x30,0x3e,0x28,0x72,0x3d,0x47,0x65,0x28,0x29,0x2d,0x72,0x29,0x3f,0x31,0x32,0x30,0x3a,0x34,0x38,0x30,0x3e,0x72,0x3f,0x34,0x38,0x30,0x3a,0x31,0x30,0x38,0x30,0x3e,0x72,0x3f,0x31,0x30,0x38,0x30,0x3a,0x31,0x39,0x32,0x30,0x3e,0x72,0x3f,0x31,0x39,0x32,0x30,0x3a,0x33,0x65,0x33,0x3e,0x72,0x3f,0x33,0x65,0x33,0x3a,0x34,0x33,0x32,0x30,0x3e,0x72,0x3f,0x34,0x33,0x32,0x30,0x3a,0x31,0x39,0x36,0x30,0x2a,0x45,0x69,0x28,0x72,0x2f,0x31,0x39,0x36,0x30,0x29,0x29,0x2d,0x72,0x29,0x29,0x7b,0x65,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x72,0x6c,0x28,0x77,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x77,0x73,0x28,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x32,0x39,0x29,0x29,0x7d,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x74,0x3f,0x6c,0x73,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6a,0x69,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x26,0x26,0x28,0x64,0x73,0x28,0x65,0x2c,0x6e,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x29,0x2c,0x32,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x76,0x73,0x28,0x65,0x2c,0x6e,0x29,0x29,0x26,0x26,0x28,0x6e,0x3d,0x41,0x69,0x2c,0x41,0x69,0x3d,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6f,0x73,0x28,0x6e,0x29,0x29,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x73,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x41,0x69,0x3f,0x41,0x69,0x3d,0x65,0x3a,0x41,0x69,0x2e,0x70,0x75,0x73,0x68,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x41,0x69,0x2c,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x6e,0x26,0x3d,0x7e,0x55,0x69,0x2c,0x6e,0x26,0x3d,0x7e,0x44,0x69,0x2c,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x6e,0x2c,0x65,0x3d,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3b,0x30,0x3c,0x6e,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x6e,0x29,0x2c,0x72,0x3d,0x31,0x3c,0x3c,0x74,0x3b,0x65,0x5b,0x74,0x5d,0x3d,0x2d,0x31,0x2c,0x6e,0x26,0x3d,0x7e,0x72,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x53,0x73,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x70,0x6e,0x28,0x65,0x2c,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x76,0x73,0x28,0x65,0x2c,0x6e,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x32,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x68,0x6e,0x28,0x65,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x72,0x26,0x26,0x28,0x6e,0x3d,0x72,0x2c,0x74,0x3d,0x61,0x73,0x28,0x65,0x2c,0x72,0x29,0x29,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x74,0x3d,0x4d,0x69,0x2c,0x64,0x73,0x28,0x65,0x2c,0x30,0x29,0x2c,0x75,0x73,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x74,0x3b,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x35,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x6e,0x2c,0x77,0x73,0x28,0x65,0x2c,0x41,0x69,0x2c,0x42,0x69,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x4e,0x69,0x3b,0x4e,0x69,0x7c,0x3d,0x31,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x6e,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x4e,0x69,0x3d,0x74,0x29,0x26,0x26,0x28,0x24,0x69,0x3d,0x47,0x65,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x6a,0x6c,0x26,0x26,0x24,0x6c,0x28,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x73,0x28,0x65,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4b,0x69,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x4b,0x69,0x2e,0x74,0x61,0x67,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x26,0x26,0x53,0x73,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x4e,0x69,0x3b,0x4e,0x69,0x7c,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x72,0x3d,0x6b,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x6e,0x3d,0x31,0x2c,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x72,0x2c,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x74,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x36,0x26,0x28,0x4e,0x69,0x3d,0x6e,0x29,0x29,0x26,0x26,0x24,0x6c,0x28,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x73,0x28,0x29,0x7b,0x52,0x69,0x3d,0x46,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x43,0x6c,0x28,0x46,0x69,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3b,0x69,0x66,0x28,0x2d,0x31,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x65,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x2d,0x31,0x2c,0x6c,0x6c,0x28,0x74,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x69,0x29,0x66,0x6f,0x72,0x28,0x74,0x3d,0x54,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x61,0x28,0x72,0x29,0x2c,0x72,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x72,0x2e,0x74,0x79,0x70,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x29,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x72,0x26,0x26,0x46,0x6c,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x58,0x61,0x28,0x29,0x2c,0x43,0x6c,0x28,0x7a,0x6c,0x29,0x2c,0x43,0x6c,0x28,0x4e,0x6c,0x29,0x2c,0x74,0x6f,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x5a,0x61,0x28,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x58,0x61,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x43,0x6c,0x28,0x4a,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x50,0x61,0x28,0x72,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x66,0x73,0x28,0x29,0x7d,0x74,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x69,0x66,0x28,0x7a,0x69,0x3d,0x65,0x2c,0x54,0x69,0x3d,0x65,0x3d,0x46,0x73,0x28,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x4c,0x69,0x3d,0x52,0x69,0x3d,0x6e,0x2c,0x4f,0x69,0x3d,0x30,0x2c,0x4d,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x55,0x69,0x3d,0x44,0x69,0x3d,0x49,0x69,0x3d,0x30,0x2c,0x41,0x69,0x3d,0x6a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4c,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x6e,0x3d,0x30,0x3b,0x6e,0x3c,0x4c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6e,0x2b,0x2b,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x28,0x74,0x3d,0x4c,0x61,0x5b,0x6e,0x5d,0x29,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x29,0x29,0x7b,0x74,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x61,0x3d,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2c,0x72,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6f,0x7d,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x72,0x7d,0x4c,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x54,0x69,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x5f,0x61,0x28,0x29,0x2c,0x72,0x6f,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x5a,0x6f,0x2c,0x73,0x6f,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x6f,0x6f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x6c,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x72,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x73,0x6f,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x61,0x6f,0x3d,0x30,0x2c,0x69,0x6f,0x3d,0x75,0x6f,0x3d,0x6f,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x6f,0x3d,0x21,0x31,0x2c,0x66,0x6f,0x3d,0x30,0x2c,0x5f,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7b,0x4f,0x69,0x3d,0x31,0x2c,0x4d,0x69,0x3d,0x6e,0x2c,0x54,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x3a,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x65,0x2c,0x75,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x69,0x3d,0x74,0x2c,0x73,0x3d,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x3d,0x4c,0x69,0x2c,0x69,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x37,0x36,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x26,0x26,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x2e,0x74,0x68,0x65,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x73,0x2c,0x66,0x3d,0x69,0x2c,0x64,0x3d,0x66,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x66,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x31,0x31,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x31,0x35,0x3d,0x3d,0x3d,0x64,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x70,0x3d,0x66,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x70,0x3f,0x28,0x66,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x70,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x70,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x70,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x29,0x3a,0x28,0x66,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x76,0x61,0x72,0x20,0x6d,0x3d,0x76,0x75,0x28,0x75,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x29,0x7b,0x6d,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x35,0x37,0x2c,0x67,0x75,0x28,0x6d,0x2c,0x75,0x2c,0x69,0x2c,0x30,0x2c,0x6e,0x29,0x2c,0x31,0x26,0x6d,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x26,0x68,0x75,0x28,0x6f,0x2c,0x63,0x2c,0x6e,0x29,0x2c,0x73,0x3d,0x63,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x28,0x6e,0x3d,0x6d,0x29,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x29,0x7b,0x76,0x61,0x72,0x20,0x76,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x3b,0x76,0x2e,0x61,0x64,0x64,0x28,0x73,0x29,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x76,0x7d,0x65,0x6c,0x73,0x65,0x20,0x68,0x2e,0x61,0x64,0x64,0x28,0x73,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x6e,0x29,0x29,0x7b,0x68,0x75,0x28,0x6f,0x2c,0x63,0x2c,0x6e,0x29,0x2c,0x68,0x73,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x73,0x3d,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x36,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6c,0x61,0x26,0x26,0x31,0x26,0x69,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x76,0x75,0x28,0x75,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x36,0x35,0x35,0x33,0x36,0x26,0x67,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x28,0x67,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x29,0x2c,0x67,0x75,0x28,0x67,0x2c,0x75,0x2c,0x69,0x2c,0x30,0x2c,0x6e,0x29,0x2c,0x6d,0x61,0x28,0x73,0x75,0x28,0x73,0x2c,0x69,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x7d,0x6f,0x3d,0x73,0x3d,0x73,0x75,0x28,0x73,0x2c,0x69,0x29,0x2c,0x34,0x21,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x28,0x4f,0x69,0x3d,0x32,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6a,0x69,0x3f,0x6a,0x69,0x3d,0x5b,0x6f,0x5d,0x3a,0x6a,0x69,0x2e,0x70,0x75,0x73,0x68,0x28,0x6f,0x29,0x2c,0x6f,0x3d,0x75,0x3b,0x64,0x6f,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6f,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x6f,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x2c,0x6e,0x26,0x3d,0x2d,0x6e,0x2c,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x56,0x61,0x28,0x6f,0x2c,0x70,0x75,0x28,0x30,0x2c,0x73,0x2c,0x6e,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x3d,0x73,0x3b,0x76,0x61,0x72,0x20,0x79,0x3d,0x6f,0x2e,0x74,0x79,0x70,0x65,0x2c,0x62,0x3d,0x6f,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6f,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x79,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x69,0x7c,0x7c,0x21,0x51,0x69,0x2e,0x68,0x61,0x73,0x28,0x62,0x29,0x29,0x29,0x29,0x7b,0x6f,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x2c,0x6e,0x26,0x3d,0x2d,0x6e,0x2c,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6e,0x2c,0x56,0x61,0x28,0x6f,0x2c,0x6d,0x75,0x28,0x6f,0x2c,0x69,0x2c,0x6e,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x7d,0x6f,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x29,0x7d,0x6b,0x73,0x28,0x74,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x6e,0x3d,0x6b,0x2c,0x54,0x69,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x54,0x69,0x3d,0x74,0x3d,0x74,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x73,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x43,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x43,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x5a,0x6f,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x5a,0x6f,0x3a,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x73,0x28,0x29,0x7b,0x30,0x21,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x33,0x21,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x32,0x21,0x3d,0x3d,0x4f,0x69,0x7c,0x7c,0x28,0x4f,0x69,0x3d,0x34,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x7a,0x69,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x26,0x49,0x69,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x26,0x44,0x69,0x29,0x7c,0x7c,0x75,0x73,0x28,0x7a,0x69,0x2c,0x4c,0x69,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x4e,0x69,0x3b,0x4e,0x69,0x7c,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6d,0x73,0x28,0x29,0x3b,0x66,0x6f,0x72,0x28,0x7a,0x69,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x4c,0x69,0x3d,0x3d,0x3d,0x6e,0x7c,0x7c,0x28,0x42,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x73,0x28,0x65,0x2c,0x6e,0x29,0x29,0x3b,0x3b,0x29,0x74,0x72,0x79,0x7b,0x67,0x73,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x70,0x73,0x28,0x65,0x2c,0x6c,0x29,0x7d,0x69,0x66,0x28,0x5f,0x61,0x28,0x29,0x2c,0x4e,0x69,0x3d,0x74,0x2c,0x43,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x36,0x31,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x69,0x3d,0x30,0x2c,0x4f,0x69,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x73,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x69,0x3b,0x29,0x62,0x73,0x28,0x54,0x69,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x73,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x54,0x69,0x26,0x26,0x21,0x59,0x65,0x28,0x29,0x3b,0x29,0x62,0x73,0x28,0x54,0x69,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x73,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x78,0x69,0x28,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x65,0x2c,0x52,0x69,0x29,0x3b,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x3f,0x6b,0x73,0x28,0x65,0x29,0x3a,0x54,0x69,0x3d,0x6e,0x2c,0x5f,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x73,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x65,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x33,0x32,0x37,0x36,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x71,0x75,0x28,0x74,0x2c,0x6e,0x2c,0x52,0x69,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x28,0x54,0x69,0x3d,0x74,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x74,0x3d,0x4b,0x75,0x28,0x74,0x2c,0x6e,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x33,0x32,0x37,0x36,0x37,0x2c,0x76,0x6f,0x69,0x64,0x28,0x54,0x69,0x3d,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x69,0x3d,0x36,0x2c,0x76,0x6f,0x69,0x64,0x28,0x54,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x37,0x36,0x38,0x2c,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x65,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6e,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x28,0x54,0x69,0x3d,0x6e,0x29,0x3b,0x54,0x69,0x3d,0x6e,0x3d,0x65,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x3b,0x30,0x3d,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x28,0x4f,0x69,0x3d,0x35,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6b,0x6e,0x2c,0x6c,0x3d,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x6e,0x3d,0x31,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x64,0x6f,0x7b,0x53,0x73,0x28,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4b,0x69,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x74,0x3d,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x74,0x3d,0x3d,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x37,0x37,0x29,0x29,0x3b,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x26,0x7e,0x6e,0x3b,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x6e,0x2c,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x6e,0x2c,0x65,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x6e,0x2c,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x6e,0x2c,0x6e,0x3d,0x65,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x65,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3b,0x30,0x3c,0x74,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x33,0x31,0x2d,0x6f,0x6e,0x28,0x74,0x29,0x2c,0x61,0x3d,0x31,0x3c,0x3c,0x6c,0x3b,0x6e,0x5b,0x6c,0x5d,0x3d,0x30,0x2c,0x72,0x5b,0x6c,0x5d,0x3d,0x2d,0x31,0x2c,0x65,0x5b,0x6c,0x5d,0x3d,0x2d,0x31,0x2c,0x74,0x26,0x3d,0x7e,0x61,0x7d,0x7d,0x28,0x65,0x2c,0x6f,0x29,0x2c,0x65,0x3d,0x3d,0x3d,0x7a,0x69,0x26,0x26,0x28,0x54,0x69,0x3d,0x7a,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x69,0x3d,0x30,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x30,0x36,0x34,0x26,0x74,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x32,0x30,0x36,0x34,0x26,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7c,0x7c,0x71,0x69,0x7c,0x7c,0x28,0x71,0x69,0x3d,0x21,0x30,0x2c,0x7a,0x73,0x28,0x6e,0x6e,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x73,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x29,0x29,0x2c,0x6f,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x35,0x39,0x39,0x30,0x26,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x35,0x39,0x39,0x30,0x26,0x74,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x7c,0x7c,0x6f,0x29,0x7b,0x6f,0x3d,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6b,0x6e,0x3b,0x6b,0x6e,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x4e,0x69,0x3b,0x4e,0x69,0x7c,0x3d,0x34,0x2c,0x5f,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x65,0x6c,0x3d,0x57,0x6e,0x2c,0x70,0x72,0x28,0x65,0x3d,0x64,0x72,0x28,0x29,0x29,0x29,0x7b,0x69,0x66,0x28,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x69,0x6e,0x20,0x65,0x29,0x76,0x61,0x72,0x20,0x74,0x3d,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x65,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x65,0x6e,0x64,0x3a,0x65,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x7d,0x3b,0x65,0x6c,0x73,0x65,0x20,0x65,0x3a,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x28,0x74,0x3d,0x28,0x74,0x3d,0x65,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x26,0x26,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x26,0x26,0x74,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x69,0x66,0x28,0x72,0x26,0x26,0x30,0x21,0x3d,0x3d,0x72,0x2e,0x72,0x61,0x6e,0x67,0x65,0x43,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x74,0x3d,0x72,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x72,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x6f,0x3d,0x72,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x3b,0x72,0x3d,0x72,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x3b,0x74,0x72,0x79,0x7b,0x74,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x2c,0x6f,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x77,0x29,0x7b,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x76,0x61,0x72,0x20,0x75,0x3d,0x30,0x2c,0x69,0x3d,0x2d,0x31,0x2c,0x73,0x3d,0x2d,0x31,0x2c,0x63,0x3d,0x30,0x2c,0x66,0x3d,0x30,0x2c,0x64,0x3d,0x65,0x2c,0x70,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6d,0x3b,0x64,0x21,0x3d,0x3d,0x74,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x33,0x21,0x3d,0x3d,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x28,0x69,0x3d,0x75,0x2b,0x6c,0x29,0x2c,0x64,0x21,0x3d,0x3d,0x6f,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x72,0x26,0x26,0x33,0x21,0x3d,0x3d,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x28,0x73,0x3d,0x75,0x2b,0x72,0x29,0x2c,0x33,0x3d,0x3d,0x3d,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x28,0x75,0x2b,0x3d,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6d,0x3d,0x64,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x3b,0x29,0x70,0x3d,0x64,0x2c,0x64,0x3d,0x6d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x64,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x6e,0x3b,0x69,0x66,0x28,0x70,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x2b,0x2b,0x63,0x3d,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x69,0x3d,0x75,0x29,0x2c,0x70,0x3d,0x3d,0x3d,0x6f,0x26,0x26,0x2b,0x2b,0x66,0x3d,0x3d,0x3d,0x72,0x26,0x26,0x28,0x73,0x3d,0x75,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6d,0x3d,0x64,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x70,0x3d,0x28,0x64,0x3d,0x70,0x29,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x64,0x3d,0x6d,0x7d,0x74,0x3d,0x2d,0x31,0x3d,0x3d,0x3d,0x69,0x7c,0x7c,0x2d,0x31,0x3d,0x3d,0x3d,0x73,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x69,0x2c,0x65,0x6e,0x64,0x3a,0x73,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x74,0x3d,0x74,0x7c,0x7c,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x30,0x2c,0x65,0x6e,0x64,0x3a,0x30,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x6e,0x6c,0x3d,0x7b,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x45,0x6c,0x65,0x6d,0x3a,0x65,0x2c,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x52,0x61,0x6e,0x67,0x65,0x3a,0x74,0x7d,0x2c,0x57,0x6e,0x3d,0x21,0x31,0x2c,0x5a,0x75,0x3d,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x69,0x66,0x28,0x65,0x3d,0x28,0x6e,0x3d,0x5a,0x75,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x30,0x32,0x38,0x26,0x6e,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2c,0x5a,0x75,0x3d,0x65,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x6e,0x3d,0x5a,0x75,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x31,0x30,0x32,0x34,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x76,0x61,0x72,0x20,0x76,0x3d,0x68,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x67,0x3d,0x68,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x79,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x62,0x3d,0x79,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3f,0x76,0x3a,0x74,0x75,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x76,0x29,0x2c,0x67,0x29,0x3b,0x79,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x62,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x6b,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x31,0x3d,0x3d,0x3d,0x6b,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6b,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x22,0x3a,0x39,0x3d,0x3d,0x3d,0x6b,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x6b,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x26,0x26,0x6b,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x6b,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x36,0x33,0x29,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x77,0x29,0x7b,0x45,0x73,0x28,0x6e,0x2c,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x77,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6e,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x7b,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x5a,0x75,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x68,0x3d,0x6e,0x69,0x2c,0x6e,0x69,0x3d,0x21,0x31,0x7d,0x28,0x65,0x2c,0x74,0x29,0x2c,0x76,0x69,0x28,0x74,0x2c,0x65,0x29,0x2c,0x6d,0x72,0x28,0x6e,0x6c,0x29,0x2c,0x57,0x6e,0x3d,0x21,0x21,0x65,0x6c,0x2c,0x6e,0x6c,0x3d,0x65,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x74,0x2c,0x79,0x69,0x28,0x74,0x2c,0x65,0x2c,0x6c,0x29,0x2c,0x58,0x65,0x28,0x29,0x2c,0x4e,0x69,0x3d,0x69,0x2c,0x6b,0x6e,0x3d,0x75,0x2c,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6f,0x7d,0x65,0x6c,0x73,0x65,0x20,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x74,0x3b,0x69,0x66,0x28,0x71,0x69,0x26,0x26,0x28,0x71,0x69,0x3d,0x21,0x31,0x2c,0x4b,0x69,0x3d,0x65,0x2c,0x59,0x69,0x3d,0x6c,0x29,0x2c,0x6f,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x30,0x3d,0x3d,0x3d,0x6f,0x26,0x26,0x28,0x51,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x61,0x6e,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x6e,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x29,0x74,0x72,0x79,0x7b,0x61,0x6e,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x28,0x6c,0x6e,0x2c,0x65,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x31,0x32,0x38,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x7d,0x7d,0x28,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x66,0x6f,0x72,0x28,0x72,0x3d,0x65,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x2c,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x74,0x2b,0x2b,0x29,0x6c,0x3d,0x6e,0x5b,0x74,0x5d,0x2c,0x72,0x28,0x6c,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x7b,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x53,0x74,0x61,0x63,0x6b,0x3a,0x6c,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x6c,0x2e,0x64,0x69,0x67,0x65,0x73,0x74,0x7d,0x29,0x3b,0x69,0x66,0x28,0x48,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x48,0x69,0x3d,0x21,0x31,0x2c,0x65,0x3d,0x57,0x69,0x2c,0x57,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x59,0x69,0x29,0x26,0x26,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x53,0x73,0x28,0x29,0x2c,0x6f,0x3d,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x26,0x6f,0x29,0x3f,0x65,0x3d,0x3d,0x3d,0x47,0x69,0x3f,0x58,0x69,0x2b,0x2b,0x3a,0x28,0x58,0x69,0x3d,0x30,0x2c,0x47,0x69,0x3d,0x65,0x29,0x3a,0x58,0x69,0x3d,0x30,0x2c,0x24,0x6c,0x28,0x29,0x7d,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6c,0x2c,0x6b,0x6e,0x3d,0x72,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x73,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4b,0x69,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x77,0x6e,0x28,0x59,0x69,0x29,0x2c,0x6e,0x3d,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x74,0x3d,0x6b,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x6e,0x3d,0x31,0x36,0x3e,0x65,0x3f,0x31,0x36,0x3a,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4b,0x69,0x29,0x76,0x61,0x72,0x20,0x72,0x3d,0x21,0x31,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x65,0x3d,0x4b,0x69,0x2c,0x4b,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x59,0x69,0x3d,0x30,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x33,0x31,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x4e,0x69,0x3b,0x66,0x6f,0x72,0x28,0x4e,0x69,0x7c,0x3d,0x34,0x2c,0x5a,0x75,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x5a,0x75,0x2c,0x75,0x3d,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x31,0x36,0x26,0x5a,0x75,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6f,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x30,0x3b,0x73,0x3c,0x69,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x73,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x69,0x5b,0x73,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x5a,0x75,0x3d,0x63,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x5a,0x75,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x66,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x74,0x69,0x28,0x38,0x2c,0x66,0x2c,0x6f,0x29,0x7d,0x76,0x61,0x72,0x20,0x64,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x66,0x2c,0x5a,0x75,0x3d,0x64,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x70,0x3d,0x28,0x66,0x3d,0x5a,0x75,0x29,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x6d,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x61,0x69,0x28,0x66,0x29,0x2c,0x66,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x70,0x29,0x7b,0x70,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6d,0x2c,0x5a,0x75,0x3d,0x70,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x5a,0x75,0x3d,0x6d,0x7d,0x7d,0x7d,0x76,0x61,0x72,0x20,0x68,0x3d,0x6f,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x76,0x61,0x72,0x20,0x76,0x3d,0x68,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x76,0x29,0x7b,0x68,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x76,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x76,0x3d,0x67,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x76,0x29,0x7d,0x7d,0x5a,0x75,0x3d,0x6f,0x7d,0x7d,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x32,0x30,0x36,0x34,0x26,0x6f,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x29,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6f,0x2c,0x5a,0x75,0x3d,0x75,0x3b,0x65,0x6c,0x73,0x65,0x20,0x65,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x32,0x30,0x34,0x38,0x26,0x28,0x6f,0x3d,0x5a,0x75,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6f,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x74,0x69,0x28,0x39,0x2c,0x6f,0x2c,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7d,0x76,0x61,0x72,0x20,0x79,0x3d,0x6f,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x79,0x29,0x7b,0x79,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x79,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x5a,0x75,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x76,0x61,0x72,0x20,0x62,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x66,0x6f,0x72,0x28,0x5a,0x75,0x3d,0x62,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x28,0x75,0x3d,0x5a,0x75,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x32,0x30,0x36,0x34,0x26,0x75,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x29,0x6b,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x75,0x2c,0x5a,0x75,0x3d,0x6b,0x3b,0x65,0x6c,0x73,0x65,0x20,0x65,0x3a,0x66,0x6f,0x72,0x28,0x75,0x3d,0x62,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5a,0x75,0x3b,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x32,0x30,0x34,0x38,0x26,0x28,0x69,0x3d,0x5a,0x75,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x74,0x72,0x79,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x69,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x72,0x69,0x28,0x39,0x2c,0x69,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x53,0x29,0x7b,0x45,0x73,0x28,0x69,0x2c,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x53,0x29,0x7d,0x69,0x66,0x28,0x69,0x3d,0x3d,0x3d,0x75,0x29,0x7b,0x5a,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x76,0x61,0x72,0x20,0x77,0x3d,0x69,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x77,0x29,0x7b,0x77,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5a,0x75,0x3d,0x77,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x5a,0x75,0x3d,0x69,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x69,0x66,0x28,0x4e,0x69,0x3d,0x6c,0x2c,0x24,0x6c,0x28,0x29,0x2c,0x61,0x6e,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x6e,0x2e,0x6f,0x6e,0x50,0x6f,0x73,0x74,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x29,0x74,0x72,0x79,0x7b,0x61,0x6e,0x2e,0x6f,0x6e,0x50,0x6f,0x73,0x74,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x28,0x6c,0x6e,0x2c,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x53,0x29,0x7b,0x7d,0x72,0x3d,0x21,0x30,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x74,0x2c,0x50,0x69,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x65,0x3d,0x6a,0x61,0x28,0x65,0x2c,0x6e,0x3d,0x70,0x75,0x28,0x30,0x2c,0x6e,0x3d,0x73,0x75,0x28,0x74,0x2c,0x6e,0x29,0x2c,0x31,0x29,0x2c,0x31,0x29,0x2c,0x6e,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x79,0x6e,0x28,0x65,0x2c,0x31,0x2c,0x6e,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x6e,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x78,0x73,0x28,0x65,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x78,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x7c,0x7c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x69,0x7c,0x7c,0x21,0x51,0x69,0x2e,0x68,0x61,0x73,0x28,0x72,0x29,0x29,0x29,0x7b,0x6e,0x3d,0x6a,0x61,0x28,0x6e,0x2c,0x65,0x3d,0x6d,0x75,0x28,0x6e,0x2c,0x65,0x3d,0x73,0x75,0x28,0x74,0x2c,0x65,0x29,0x2c,0x31,0x29,0x2c,0x31,0x29,0x2c,0x65,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x79,0x6e,0x28,0x6e,0x2c,0x31,0x2c,0x65,0x29,0x2c,0x72,0x73,0x28,0x6e,0x2c,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x72,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x29,0x2c,0x6e,0x3d,0x65,0x73,0x28,0x29,0x2c,0x65,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x65,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x74,0x2c,0x7a,0x69,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x4c,0x69,0x26,0x74,0x29,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x28,0x34,0x3d,0x3d,0x3d,0x4f,0x69,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x4f,0x69,0x26,0x26,0x28,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x26,0x4c,0x69,0x29,0x3d,0x3d,0x3d,0x4c,0x69,0x26,0x26,0x35,0x30,0x30,0x3e,0x47,0x65,0x28,0x29,0x2d,0x56,0x69,0x3f,0x64,0x73,0x28,0x65,0x2c,0x30,0x29,0x3a,0x55,0x69,0x7c,0x3d,0x74,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x26,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x3f,0x6e,0x3d,0x31,0x3a,0x28,0x6e,0x3d,0x66,0x6e,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x26,0x28,0x66,0x6e,0x3c,0x3c,0x3d,0x31,0x29,0x29,0x26,0x26,0x28,0x66,0x6e,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x73,0x28,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x4f,0x61,0x28,0x65,0x2c,0x6e,0x29,0x29,0x26,0x26,0x28,0x79,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x74,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x73,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x74,0x3d,0x30,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x74,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x29,0x2c,0x5f,0x73,0x28,0x65,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x30,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6c,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x74,0x3d,0x6c,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x31,0x34,0x29,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x26,0x26,0x72,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x29,0x2c,0x5f,0x73,0x28,0x65,0x2c,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x71,0x65,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x67,0x3d,0x65,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6b,0x65,0x79,0x3d,0x74,0x2c,0x74,0x68,0x69,0x73,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x74,0x68,0x69,0x73,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x30,0x2c,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6d,0x6f,0x64,0x65,0x3d,0x72,0x2c,0x74,0x68,0x69,0x73,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x74,0x68,0x69,0x73,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x65,0x77,0x20,0x54,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x73,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x28,0x65,0x3d,0x65,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x21,0x65,0x2e,0x69,0x73,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x3f,0x28,0x28,0x74,0x3d,0x4c,0x73,0x28,0x65,0x2e,0x74,0x61,0x67,0x2c,0x6e,0x2c,0x65,0x2e,0x6b,0x65,0x79,0x2c,0x65,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x65,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x2c,0x74,0x2e,0x74,0x79,0x70,0x65,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x65,0x2c,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x74,0x29,0x3a,0x28,0x74,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x2c,0x74,0x2e,0x74,0x79,0x70,0x65,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x74,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x74,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x74,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x3d,0x65,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x2c,0x74,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6e,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x2c,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x74,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x65,0x2e,0x69,0x6e,0x64,0x65,0x78,0x2c,0x74,0x2e,0x72,0x65,0x66,0x3d,0x65,0x2e,0x72,0x65,0x66,0x2c,0x74,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x32,0x3b,0x69,0x66,0x28,0x72,0x3d,0x65,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x52,0x73,0x28,0x65,0x29,0x26,0x26,0x28,0x75,0x3d,0x31,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x75,0x3d,0x35,0x3b,0x65,0x6c,0x73,0x65,0x20,0x65,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x78,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x73,0x28,0x74,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x6c,0x2c,0x6f,0x2c,0x6e,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x45,0x3a,0x75,0x3d,0x38,0x2c,0x6c,0x7c,0x3d,0x38,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x43,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x31,0x32,0x2c,0x74,0x2c,0x6e,0x2c,0x32,0x7c,0x6c,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x43,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6f,0x2c,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x7a,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x31,0x33,0x2c,0x74,0x2c,0x6e,0x2c,0x6c,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x7a,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6f,0x2c,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x54,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x31,0x39,0x2c,0x74,0x2c,0x6e,0x2c,0x6c,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x54,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6f,0x2c,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x46,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x49,0x73,0x28,0x74,0x2c,0x6c,0x2c,0x6f,0x2c,0x6e,0x29,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5f,0x3a,0x75,0x3d,0x31,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x50,0x3a,0x75,0x3d,0x39,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x4e,0x3a,0x75,0x3d,0x31,0x31,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x4c,0x3a,0x75,0x3d,0x31,0x34,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x52,0x3a,0x75,0x3d,0x31,0x36,0x2c,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x33,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x3f,0x65,0x3a,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2c,0x22,0x22,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x4c,0x73,0x28,0x75,0x2c,0x74,0x2c,0x6e,0x2c,0x6c,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x65,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3d,0x72,0x2c,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6f,0x2c,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x37,0x2c,0x65,0x2c,0x72,0x2c,0x6e,0x29,0x29,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x32,0x32,0x2c,0x65,0x2c,0x72,0x2c,0x6e,0x29,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x46,0x2c,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x7b,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3a,0x21,0x31,0x7d,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x4c,0x73,0x28,0x36,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x29,0x29,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x6e,0x3d,0x4c,0x73,0x28,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3f,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x5d,0x2c,0x65,0x2e,0x6b,0x65,0x79,0x2c,0x6e,0x29,0x29,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x7b,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x65,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x7d,0x2c,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x67,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3d,0x65,0x2c,0x74,0x68,0x69,0x73,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x2d,0x31,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x2c,0x74,0x68,0x69,0x73,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3d,0x67,0x6e,0x28,0x30,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3d,0x67,0x6e,0x28,0x2d,0x31,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x74,0x68,0x69,0x73,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3d,0x67,0x6e,0x28,0x30,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x3d,0x72,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x3d,0x6c,0x2c,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x2c,0x75,0x2c,0x69,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x6e,0x65,0x77,0x20,0x6a,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x75,0x2c,0x69,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x6e,0x3f,0x28,0x6e,0x3d,0x31,0x2c,0x21,0x30,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x6e,0x7c,0x3d,0x38,0x29,0x29,0x3a,0x6e,0x3d,0x30,0x2c,0x61,0x3d,0x4c,0x73,0x28,0x33,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x29,0x2c,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x61,0x2c,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x65,0x2c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x72,0x2c,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x74,0x2c,0x63,0x61,0x63,0x68,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x49,0x61,0x28,0x61,0x29,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x73,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x6c,0x3b,0x65,0x3a,0x7b,0x69,0x66,0x28,0x24,0x65,0x28,0x65,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x29,0x21,0x3d,0x3d,0x65,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x37,0x30,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x3b,0x64,0x6f,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x6e,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x52,0x6c,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x29,0x7b,0x6e,0x3d,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x7d,0x6e,0x3d,0x6e,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x37,0x31,0x29,0x29,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x52,0x6c,0x28,0x74,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x6c,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x2c,0x75,0x2c,0x69,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x41,0x73,0x28,0x74,0x2c,0x72,0x2c,0x21,0x30,0x2c,0x65,0x2c,0x30,0x2c,0x61,0x2c,0x30,0x2c,0x75,0x2c,0x69,0x29,0x29,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x56,0x73,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x74,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x28,0x61,0x3d,0x55,0x61,0x28,0x72,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6c,0x3d,0x6e,0x73,0x28,0x74,0x29,0x29,0x29,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6a,0x61,0x28,0x74,0x2c,0x61,0x2c,0x6c,0x29,0x2c,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x6c,0x2c,0x79,0x6e,0x28,0x65,0x2c,0x6c,0x2c,0x72,0x29,0x2c,0x72,0x73,0x28,0x65,0x2c,0x72,0x29,0x2c,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x61,0x3d,0x65,0x73,0x28,0x29,0x2c,0x6f,0x3d,0x6e,0x73,0x28,0x6c,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3d,0x56,0x73,0x28,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3f,0x6e,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x74,0x3a,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x74,0x2c,0x28,0x6e,0x3d,0x55,0x61,0x28,0x61,0x2c,0x6f,0x29,0x29,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x65,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x72,0x29,0x26,0x26,0x28,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x72,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x6a,0x61,0x28,0x6c,0x2c,0x6e,0x2c,0x6f,0x29,0x29,0x26,0x26,0x28,0x74,0x73,0x28,0x65,0x2c,0x6c,0x2c,0x6f,0x2c,0x61,0x29,0x2c,0x41,0x61,0x28,0x65,0x2c,0x6c,0x2c,0x6f,0x29,0x29,0x2c,0x6f,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x73,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3f,0x28,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x74,0x61,0x67,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3b,0x65,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3d,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x74,0x3c,0x6e,0x3f,0x74,0x3a,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x57,0x73,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x28,0x65,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x57,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x78,0x69,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x69,0x66,0x28,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x21,0x3d,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x7a,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x62,0x75,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x74,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x75,0x3d,0x21,0x31,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x7a,0x75,0x28,0x6e,0x29,0x2c,0x70,0x61,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x47,0x61,0x28,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x52,0x6c,0x28,0x6e,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x49,0x6c,0x28,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x59,0x61,0x28,0x6e,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x6c,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x5f,0x6c,0x28,0x53,0x61,0x2c,0x72,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x2c,0x72,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x72,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3f,0x28,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x31,0x26,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x74,0x26,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3f,0x44,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3a,0x28,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x31,0x26,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x65,0x3d,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x29,0x3f,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x31,0x26,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x69,0x66,0x28,0x72,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x74,0x26,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x31,0x32,0x38,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x29,0x7b,0x69,0x66,0x28,0x72,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x24,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6c,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x28,0x6c,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x5f,0x6c,0x28,0x4a,0x61,0x2c,0x4a,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x72,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x45,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x75,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x31,0x33,0x31,0x30,0x37,0x32,0x26,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x62,0x75,0x3d,0x21,0x31,0x2c,0x6c,0x61,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x26,0x26,0x4a,0x6c,0x28,0x6e,0x2c,0x51,0x6c,0x2c,0x6e,0x2e,0x69,0x6e,0x64,0x65,0x78,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3b,0x42,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x65,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x4c,0x6c,0x28,0x6e,0x2c,0x4e,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x7a,0x61,0x28,0x6e,0x2c,0x74,0x29,0x2c,0x6c,0x3d,0x76,0x6f,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x6c,0x2c,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x67,0x6f,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6c,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3f,0x28,0x6e,0x2e,0x74,0x61,0x67,0x3d,0x31,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x52,0x6c,0x28,0x72,0x29,0x3f,0x28,0x6f,0x3d,0x21,0x30,0x2c,0x49,0x6c,0x28,0x6e,0x29,0x29,0x3a,0x6f,0x3d,0x21,0x31,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3f,0x6c,0x2e,0x73,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x49,0x61,0x28,0x6e,0x29,0x2c,0x6c,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x6c,0x75,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6c,0x2c,0x6c,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3d,0x6e,0x2c,0x69,0x75,0x28,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x74,0x29,0x2c,0x6e,0x3d,0x4e,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x21,0x30,0x2c,0x6f,0x2c,0x74,0x29,0x29,0x3a,0x28,0x6e,0x2e,0x74,0x61,0x67,0x3d,0x30,0x2c,0x6c,0x61,0x26,0x26,0x6f,0x26,0x26,0x65,0x61,0x28,0x6e,0x29,0x2c,0x6b,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x6c,0x2c,0x74,0x29,0x2c,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x2c,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3b,0x65,0x3a,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x42,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x65,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x72,0x3d,0x28,0x6c,0x3d,0x72,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x29,0x28,0x72,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3d,0x72,0x2c,0x6c,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x73,0x28,0x65,0x29,0x3f,0x31,0x3a,0x30,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x69,0x66,0x28,0x28,0x65,0x3d,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x3d,0x3d,0x3d,0x4e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x31,0x3b,0x69,0x66,0x28,0x65,0x3d,0x3d,0x3d,0x4c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x34,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x7d,0x28,0x72,0x29,0x2c,0x65,0x3d,0x74,0x75,0x28,0x72,0x2c,0x65,0x29,0x2c,0x6c,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x6e,0x3d,0x5f,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x6e,0x3d,0x50,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x6e,0x3d,0x77,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x6e,0x3d,0x53,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x75,0x28,0x72,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x29,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x30,0x36,0x2c,0x72,0x2c,0x22,0x22,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x5f,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6c,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x72,0x3f,0x6c,0x3a,0x74,0x75,0x28,0x72,0x2c,0x6c,0x29,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x50,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6c,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x72,0x3f,0x6c,0x3a,0x74,0x75,0x28,0x72,0x2c,0x6c,0x29,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x65,0x3a,0x7b,0x69,0x66,0x28,0x7a,0x75,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x38,0x37,0x29,0x29,0x3b,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6c,0x3d,0x28,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x44,0x61,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x24,0x61,0x28,0x6e,0x2c,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x72,0x3d,0x75,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x6f,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6f,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x72,0x2c,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x21,0x31,0x2c,0x63,0x61,0x63,0x68,0x65,0x3a,0x75,0x2e,0x63,0x61,0x63,0x68,0x65,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x3a,0x75,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x75,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x7d,0x2c,0x6e,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x6f,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6f,0x2c,0x32,0x35,0x36,0x26,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x29,0x7b,0x6e,0x3d,0x54,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x2c,0x6c,0x3d,0x73,0x75,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x33,0x29,0x29,0x2c,0x6e,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x69,0x66,0x28,0x72,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x6e,0x3d,0x54,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x2c,0x6c,0x3d,0x73,0x75,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x32,0x34,0x29,0x29,0x2c,0x6e,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x66,0x6f,0x72,0x28,0x72,0x61,0x3d,0x73,0x6c,0x28,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x2c,0x74,0x61,0x3d,0x6e,0x2c,0x6c,0x61,0x3d,0x21,0x30,0x2c,0x61,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x3d,0x77,0x61,0x28,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x74,0x3b,0x74,0x3b,0x29,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x2d,0x33,0x26,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x34,0x30,0x39,0x36,0x2c,0x74,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x70,0x61,0x28,0x29,0x2c,0x72,0x3d,0x3d,0x3d,0x6c,0x29,0x7b,0x6e,0x3d,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x29,0x7d,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x73,0x61,0x28,0x6e,0x29,0x2c,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x74,0x6c,0x28,0x72,0x2c,0x6c,0x29,0x3f,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x26,0x26,0x74,0x6c,0x28,0x72,0x2c,0x6f,0x29,0x26,0x26,0x28,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x29,0x2c,0x43,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x75,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x73,0x61,0x28,0x6e,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x59,0x61,0x28,0x6e,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x2c,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6b,0x61,0x28,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2c,0x74,0x29,0x3a,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x77,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6c,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x72,0x3f,0x6c,0x3a,0x74,0x75,0x28,0x72,0x2c,0x6c,0x29,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x65,0x3a,0x7b,0x69,0x66,0x28,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6f,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x75,0x3d,0x6c,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x5f,0x6c,0x28,0x53,0x61,0x2c,0x72,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x2c,0x72,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x75,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x29,0x69,0x66,0x28,0x75,0x72,0x28,0x6f,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x75,0x29,0x29,0x7b,0x69,0x66,0x28,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x3d,0x3d,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x26,0x26,0x21,0x7a,0x6c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x7b,0x6e,0x3d,0x48,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x26,0x26,0x28,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3d,0x6f,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x69,0x29,0x7b,0x75,0x3d,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x69,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x73,0x3b,0x29,0x7b,0x69,0x66,0x28,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x3d,0x3d,0x72,0x29,0x7b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x29,0x7b,0x28,0x73,0x3d,0x55,0x61,0x28,0x2d,0x31,0x2c,0x74,0x26,0x2d,0x74,0x29,0x29,0x2e,0x74,0x61,0x67,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6f,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x28,0x63,0x3d,0x63,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x29,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x73,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x73,0x3a,0x28,0x73,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x66,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x73,0x29,0x2c,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x73,0x7d,0x7d,0x6f,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x73,0x3d,0x6f,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x28,0x73,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x29,0x2c,0x4e,0x61,0x28,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x2c,0x6e,0x29,0x2c,0x69,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x73,0x3d,0x73,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x30,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x29,0x75,0x3d,0x6f,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x38,0x3d,0x3d,0x3d,0x6f,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x75,0x3d,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x34,0x31,0x29,0x29,0x3b,0x75,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x69,0x3d,0x75,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x28,0x69,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x74,0x29,0x2c,0x4e,0x61,0x28,0x75,0x2c,0x74,0x2c,0x6e,0x29,0x2c,0x75,0x3d,0x6f,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x65,0x6c,0x73,0x65,0x20,0x75,0x3d,0x6f,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x29,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6f,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x75,0x3d,0x6f,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x3b,0x29,0x7b,0x69,0x66,0x28,0x75,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x6f,0x3d,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x7b,0x6f,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x75,0x3d,0x6f,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x75,0x3d,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6f,0x3d,0x75,0x7d,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x74,0x29,0x2c,0x6e,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x3b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x72,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x7a,0x61,0x28,0x6e,0x2c,0x74,0x29,0x2c,0x72,0x3d,0x72,0x28,0x6c,0x3d,0x54,0x61,0x28,0x6c,0x29,0x29,0x2c,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x6b,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x3d,0x74,0x75,0x28,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x2c,0x53,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x2c,0x6c,0x3d,0x74,0x75,0x28,0x72,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x29,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x78,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x3d,0x6e,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6c,0x3d,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6c,0x3d,0x6e,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x72,0x3f,0x6c,0x3a,0x74,0x75,0x28,0x72,0x2c,0x6c,0x29,0x2c,0x42,0x75,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x3d,0x31,0x2c,0x52,0x6c,0x28,0x72,0x29,0x3f,0x28,0x65,0x3d,0x21,0x30,0x2c,0x49,0x6c,0x28,0x6e,0x29,0x29,0x3a,0x65,0x3d,0x21,0x31,0x2c,0x7a,0x61,0x28,0x6e,0x2c,0x74,0x29,0x2c,0x6f,0x75,0x28,0x6e,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x69,0x75,0x28,0x6e,0x2c,0x72,0x2c,0x6c,0x2c,0x74,0x29,0x2c,0x4e,0x75,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2c,0x72,0x2c,0x21,0x30,0x2c,0x65,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x24,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x45,0x75,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x35,0x36,0x2c,0x6e,0x2e,0x74,0x61,0x67,0x29,0x29,0x7d,0x3b,0x76,0x61,0x72,0x20,0x71,0x73,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x45,0x72,0x72,0x6f,0x72,0x3f,0x72,0x65,0x70,0x6f,0x72,0x74,0x45,0x72,0x72,0x6f,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x65,0x29,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x73,0x28,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x73,0x28,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x73,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x65,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x39,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x31,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x73,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x65,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x39,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x31,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x28,0x38,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x22,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x6d,0x6f,0x75,0x6e,0x74,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x2d,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x20,0x22,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x73,0x28,0x29,0x7b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x61,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6c,0x3b,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x48,0x73,0x28,0x6f,0x29,0x3b,0x75,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x29,0x7d,0x7d,0x42,0x73,0x28,0x6e,0x2c,0x6f,0x2c,0x65,0x2c,0x6c,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x2c,0x6c,0x29,0x7b,0x69,0x66,0x28,0x6c,0x29,0x7b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x72,0x3b,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x48,0x73,0x28,0x6f,0x29,0x3b,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6f,0x3d,0x24,0x73,0x28,0x6e,0x2c,0x72,0x2c,0x65,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x30,0x2c,0x22,0x22,0x2c,0x5a,0x73,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x6f,0x2c,0x65,0x5b,0x6d,0x6c,0x5d,0x3d,0x6f,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x24,0x72,0x28,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x65,0x29,0x2c,0x63,0x73,0x28,0x29,0x2c,0x6f,0x7d,0x66,0x6f,0x72,0x28,0x3b,0x6c,0x3d,0x65,0x2e,0x6c,0x61,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x6c,0x29,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x72,0x3b,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x48,0x73,0x28,0x69,0x29,0x3b,0x75,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x69,0x3d,0x41,0x73,0x28,0x65,0x2c,0x30,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x2c,0x21,0x31,0x2c,0x30,0x2c,0x22,0x22,0x2c,0x5a,0x73,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x69,0x2c,0x65,0x5b,0x6d,0x6c,0x5d,0x3d,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x24,0x72,0x28,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x65,0x29,0x2c,0x63,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x42,0x73,0x28,0x6e,0x2c,0x69,0x2c,0x74,0x2c,0x72,0x29,0x7d,0x29,0x29,0x2c,0x69,0x7d,0x28,0x74,0x2c,0x6e,0x2c,0x65,0x2c,0x6c,0x2c,0x72,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x73,0x28,0x6f,0x29,0x7d,0x59,0x73,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x4b,0x73,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x30,0x39,0x29,0x29,0x3b,0x42,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x2c,0x59,0x73,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x3d,0x4b,0x73,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x63,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x42,0x73,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x29,0x29,0x2c,0x6e,0x5b,0x6d,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x2c,0x59,0x73,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x43,0x6e,0x28,0x29,0x3b,0x65,0x3d,0x7b,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x65,0x2c,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3a,0x6e,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x74,0x3d,0x30,0x3b,0x74,0x3c,0x4f,0x6e,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x30,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x3c,0x4f,0x6e,0x5b,0x74,0x5d,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3b,0x74,0x2b,0x2b,0x29,0x3b,0x4f,0x6e,0x2e,0x73,0x70,0x6c,0x69,0x63,0x65,0x28,0x74,0x2c,0x30,0x2c,0x65,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x74,0x26,0x26,0x55,0x6e,0x28,0x65,0x29,0x7d,0x7d,0x2c,0x53,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x64,0x6e,0x28,0x6e,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x62,0x6e,0x28,0x6e,0x2c,0x31,0x7c,0x74,0x29,0x2c,0x72,0x73,0x28,0x6e,0x2c,0x47,0x65,0x28,0x29,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x36,0x26,0x4e,0x69,0x29,0x26,0x26,0x28,0x24,0x69,0x3d,0x47,0x65,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x24,0x6c,0x28,0x29,0x29,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x63,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x4f,0x61,0x28,0x65,0x2c,0x31,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x73,0x28,0x29,0x3b,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x31,0x2c,0x74,0x29,0x7d,0x7d,0x29,0x29,0x2c,0x51,0x73,0x28,0x65,0x2c,0x31,0x29,0x7d,0x7d,0x2c,0x78,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x4f,0x61,0x28,0x65,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x74,0x73,0x28,0x6e,0x2c,0x65,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x2c,0x65,0x73,0x28,0x29,0x29,0x3b,0x51,0x73,0x28,0x65,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x29,0x7d,0x7d,0x2c,0x45,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6e,0x73,0x28,0x65,0x29,0x2c,0x74,0x3d,0x4f,0x61,0x28,0x65,0x2c,0x6e,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x74,0x73,0x28,0x74,0x2c,0x65,0x2c,0x6e,0x2c,0x65,0x73,0x28,0x29,0x29,0x3b,0x51,0x73,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x7d,0x2c,0x43,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x6e,0x7d,0x2c,0x5f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6b,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x6e,0x3d,0x65,0x2c,0x6e,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6b,0x6e,0x3d,0x74,0x7d,0x7d,0x2c,0x53,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x3a,0x69,0x66,0x28,0x5a,0x28,0x65,0x2c,0x74,0x29,0x2c,0x6e,0x3d,0x74,0x2e,0x6e,0x61,0x6d,0x65,0x2c,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x3d,0x3d,0x3d,0x74,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x29,0x7b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x65,0x3b,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x29,0x74,0x3d,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x66,0x6f,0x72,0x28,0x74,0x3d,0x74,0x2e,0x71,0x75,0x65,0x72,0x79,0x53,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x41,0x6c,0x6c,0x28,0x22,0x69,0x6e,0x70,0x75,0x74,0x5b,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x2b,0x4a,0x53,0x4f,0x4e,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x69,0x66,0x79,0x28,0x22,0x22,0x2b,0x6e,0x29,0x2b,0x27,0x5d,0x5b,0x74,0x79,0x70,0x65,0x3d,0x22,0x72,0x61,0x64,0x69,0x6f,0x22,0x5d,0x27,0x29,0x2c,0x6e,0x3d,0x30,0x3b,0x6e,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6e,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x5b,0x6e,0x5d,0x3b,0x69,0x66,0x28,0x72,0x21,0x3d,0x3d,0x65,0x26,0x26,0x72,0x2e,0x66,0x6f,0x72,0x6d,0x3d,0x3d,0x3d,0x65,0x2e,0x66,0x6f,0x72,0x6d,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x77,0x6c,0x28,0x72,0x29,0x3b,0x69,0x66,0x28,0x21,0x6c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x39,0x30,0x29,0x29,0x3b,0x71,0x28,0x72,0x29,0x2c,0x5a,0x28,0x72,0x2c,0x6c,0x29,0x7d,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x22,0x3a,0x61,0x65,0x28,0x65,0x2c,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x22,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x28,0x6e,0x3d,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x26,0x26,0x74,0x65,0x28,0x65,0x2c,0x21,0x21,0x74,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x6e,0x2c,0x21,0x31,0x29,0x7d,0x7d,0x2c,0x4e,0x65,0x3d,0x73,0x73,0x2c,0x7a,0x65,0x3d,0x63,0x73,0x3b,0x76,0x61,0x72,0x20,0x65,0x63,0x3d,0x7b,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x3a,0x21,0x31,0x2c,0x45,0x76,0x65,0x6e,0x74,0x73,0x3a,0x5b,0x62,0x6c,0x2c,0x6b,0x6c,0x2c,0x77,0x6c,0x2c,0x5f,0x65,0x2c,0x50,0x65,0x2c,0x73,0x73,0x5d,0x7d,0x2c,0x6e,0x63,0x3d,0x7b,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x79,0x6c,0x2c,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x3a,0x30,0x2c,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x22,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x3a,0x22,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x22,0x7d,0x2c,0x74,0x63,0x3d,0x7b,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x3a,0x6e,0x63,0x2e,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x2c,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x6e,0x63,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x3a,0x6e,0x63,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3a,0x6e,0x63,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x45,0x72,0x72,0x6f,0x72,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x52,0x65,0x66,0x3a,0x6b,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x42,0x79,0x46,0x69,0x62,0x65,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x57,0x65,0x28,0x65,0x29,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x2c,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x6e,0x63,0x2e,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x7c,0x7c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x73,0x46,0x6f,0x72,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x6f,0x6f,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x46,0x69,0x62,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x2d,0x6e,0x65,0x78,0x74,0x2d,0x66,0x31,0x33,0x33,0x38,0x66,0x38,0x30,0x38,0x30,0x2d,0x32,0x30,0x32,0x34,0x30,0x34,0x32,0x36,0x22,0x7d,0x3b,0x69,0x66,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x63,0x3d,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x3b,0x69,0x66,0x28,0x21,0x72,0x63,0x2e,0x69,0x73,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x26,0x26,0x72,0x63,0x2e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x46,0x69,0x62,0x65,0x72,0x29,0x74,0x72,0x79,0x7b,0x6c,0x6e,0x3d,0x72,0x63,0x2e,0x69,0x6e,0x6a,0x65,0x63,0x74,0x28,0x74,0x63,0x29,0x2c,0x61,0x6e,0x3d,0x72,0x63,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x65,0x29,0x7b,0x7d,0x7d,0x6e,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x3d,0x65,0x63,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x50,0x6f,0x72,0x74,0x61,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x32,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x32,0x5d,0x3f,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x32,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x21,0x58,0x73,0x28,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x33,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x33,0x5d,0x3f,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x33,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x53,0x2c,0x6b,0x65,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x22,0x22,0x2b,0x72,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x65,0x2c,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x6e,0x2c,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x74,0x7d,0x7d,0x28,0x65,0x2c,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x21,0x58,0x73,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x39,0x39,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x21,0x31,0x2c,0x72,0x3d,0x22,0x22,0x2c,0x6c,0x3d,0x71,0x73,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x21,0x30,0x3d,0x3d,0x3d,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x26,0x26,0x28,0x74,0x3d,0x21,0x30,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x26,0x26,0x28,0x72,0x3d,0x6e,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x26,0x26,0x28,0x6c,0x3d,0x6e,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x29,0x29,0x2c,0x6e,0x3d,0x41,0x73,0x28,0x65,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x2c,0x74,0x2c,0x30,0x2c,0x72,0x2c,0x6c,0x29,0x2c,0x65,0x5b,0x6d,0x6c,0x5d,0x3d,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x24,0x72,0x28,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x65,0x29,0x2c,0x6e,0x65,0x77,0x20,0x4b,0x73,0x28,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x66,0x69,0x6e,0x64,0x44,0x4f,0x4d,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x65,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x22,0x2c,0x22,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x36,0x38,0x2c,0x65,0x29,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x65,0x3d,0x57,0x65,0x28,0x6e,0x29,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x2c,0x6e,0x2e,0x66,0x6c,0x75,0x73,0x68,0x53,0x79,0x6e,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x73,0x28,0x65,0x29,0x7d,0x2c,0x6e,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x21,0x47,0x73,0x28,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4a,0x73,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x21,0x30,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x21,0x58,0x73,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x30,0x35,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x26,0x26,0x74,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x53,0x6f,0x75,0x72,0x63,0x65,0x73,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x3d,0x21,0x31,0x2c,0x6f,0x3d,0x22,0x22,0x2c,0x75,0x3d,0x71,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x21,0x30,0x3d,0x3d,0x3d,0x74,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x26,0x26,0x28,0x6c,0x3d,0x21,0x30,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x26,0x26,0x28,0x6f,0x3d,0x74,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x26,0x26,0x28,0x75,0x3d,0x74,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x29,0x29,0x2c,0x6e,0x3d,0x24,0x73,0x28,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x74,0x3f,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x2c,0x30,0x2c,0x6f,0x2c,0x75,0x29,0x2c,0x65,0x5b,0x6d,0x6c,0x5d,0x3d,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x24,0x72,0x28,0x65,0x29,0x2c,0x72,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x6c,0x3d,0x28,0x6c,0x3d,0x28,0x74,0x3d,0x72,0x5b,0x65,0x5d,0x29,0x2e,0x5f,0x67,0x65,0x74,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x29,0x28,0x74,0x2e,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3f,0x6e,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3d,0x5b,0x74,0x2c,0x6c,0x5d,0x3a,0x6e,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x2c,0x6c,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x65,0x77,0x20,0x59,0x73,0x28,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x21,0x47,0x73,0x28,0x6e,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4a,0x73,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x6e,0x2c,0x21,0x31,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x41,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x47,0x73,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x34,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x21,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x26,0x26,0x28,0x63,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4a,0x73,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x21,0x31,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x5b,0x6d,0x6c,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x29,0x7d,0x29,0x29,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x62,0x61,0x74,0x63,0x68,0x65,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x73,0x3d,0x73,0x73,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x6e,0x64,0x65,0x72,0x53,0x75,0x62,0x74,0x72,0x65,0x65,0x49,0x6e,0x74,0x6f,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x21,0x47,0x73,0x28,0x74,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x61,0x28,0x33,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4a,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x2c,0x21,0x31,0x2c,0x72,0x29,0x7d,0x2c,0x6e,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x2d,0x6e,0x65,0x78,0x74,0x2d,0x66,0x31,0x33,0x33,0x38,0x66,0x38,0x30,0x38,0x30,0x2d,0x32,0x30,0x32,0x34,0x30,0x34,0x32,0x36,0x22,0x7d,0x2c,0x33,0x39,0x31,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x28,0x39,0x35,0x30,0x29,0x3b,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x72,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x2c,0x6e,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x72,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x7d,0x2c,0x39,0x35,0x30,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x21,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x28,0x29,0x7b,0x69,0x66,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x2e,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x29,0x74,0x72,0x79,0x7b,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x2e,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x28,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x29,0x7b,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x6e,0x29,0x7d,0x7d,0x28,0x29,0x2c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3d,0x74,0x28,0x37,0x33,0x30,0x29,0x7d,0x2c,0x31,0x35,0x33,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x28,0x34,0x33,0x29,0x2c,0x6c,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x6f,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x75,0x3d,0x72,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x69,0x3d,0x7b,0x6b,0x65,0x79,0x3a,0x21,0x30,0x2c,0x72,0x65,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x65,0x6c,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x2c,0x61,0x3d,0x7b,0x7d,0x2c,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x72,0x20,0x69,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x74,0x26,0x26,0x28,0x73,0x3d,0x22,0x22,0x2b,0x74,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x73,0x3d,0x22,0x22,0x2b,0x6e,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x63,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x29,0x2c,0x6e,0x29,0x6f,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x2c,0x72,0x29,0x26,0x26,0x21,0x69,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x72,0x29,0x26,0x26,0x28,0x61,0x5b,0x72,0x5d,0x3d,0x6e,0x5b,0x72,0x5d,0x29,0x3b,0x69,0x66,0x28,0x65,0x26,0x26,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x66,0x6f,0x72,0x28,0x72,0x20,0x69,0x6e,0x20,0x6e,0x3d,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x5b,0x72,0x5d,0x26,0x26,0x28,0x61,0x5b,0x72,0x5d,0x3d,0x6e,0x5b,0x72,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x6c,0x2c,0x74,0x79,0x70,0x65,0x3a,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x73,0x2c,0x72,0x65,0x66,0x3a,0x63,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x61,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x75,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7d,0x7d,0x6e,0x2e,0x6a,0x73,0x78,0x3d,0x73,0x2c,0x6e,0x2e,0x6a,0x73,0x78,0x73,0x3d,0x73,0x7d,0x2c,0x32,0x30,0x32,0x3a,0x28,0x65,0x2c,0x6e,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x72,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x6f,0x72,0x74,0x61,0x6c,0x22,0x29,0x2c,0x6c,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x29,0x2c,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x74,0x72,0x69,0x63,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x22,0x29,0x2c,0x6f,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x22,0x29,0x2c,0x75,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x22,0x29,0x2c,0x69,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x29,0x2c,0x73,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x5f,0x72,0x65,0x66,0x22,0x29,0x2c,0x63,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x29,0x2c,0x66,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x22,0x29,0x2c,0x64,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x61,0x7a,0x79,0x22,0x29,0x2c,0x70,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x7b,0x69,0x73,0x4d,0x6f,0x75,0x6e,0x74,0x65,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x7d,0x2c,0x68,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x61,0x73,0x73,0x69,0x67,0x6e,0x2c,0x76,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x65,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x73,0x3d,0x76,0x2c,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x74,0x7c,0x7c,0x6d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x28,0x29,0x7b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x65,0x2c,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x2c,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x73,0x3d,0x76,0x2c,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x74,0x7c,0x7c,0x6d,0x7d,0x67,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x69,0x73,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x7b,0x7d,0x2c,0x67,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x28,0x2e,0x2e,0x2e,0x29,0x3a,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,0x61,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x20,0x74,0x6f,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x6f,0x72,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x2e,0x22,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x28,0x74,0x68,0x69,0x73,0x2c,0x65,0x2c,0x6e,0x2c,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x22,0x29,0x7d,0x2c,0x67,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x66,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x74,0x68,0x69,0x73,0x2c,0x65,0x2c,0x22,0x66,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x29,0x7d,0x2c,0x79,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3d,0x67,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3d,0x6e,0x65,0x77,0x20,0x79,0x3b,0x6b,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x3d,0x62,0x2c,0x68,0x28,0x6b,0x2c,0x67,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x29,0x2c,0x6b,0x2e,0x69,0x73,0x50,0x75,0x72,0x65,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x77,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x2c,0x53,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x78,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x45,0x3d,0x7b,0x6b,0x65,0x79,0x3a,0x21,0x30,0x2c,0x72,0x65,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x65,0x6c,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x2c,0x61,0x3d,0x7b,0x7d,0x2c,0x6f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x29,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x75,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x6f,0x3d,0x22,0x22,0x2b,0x6e,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x6e,0x29,0x53,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x2c,0x6c,0x29,0x26,0x26,0x21,0x45,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x26,0x26,0x28,0x61,0x5b,0x6c,0x5d,0x3d,0x6e,0x5b,0x6c,0x5d,0x29,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x32,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x69,0x29,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x72,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x3c,0x69,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x41,0x72,0x72,0x61,0x79,0x28,0x69,0x29,0x2c,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x69,0x3b,0x63,0x2b,0x2b,0x29,0x73,0x5b,0x63,0x5d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x63,0x2b,0x32,0x5d,0x3b,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x73,0x7d,0x69,0x66,0x28,0x65,0x26,0x26,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x69,0x3d,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x5b,0x6c,0x5d,0x26,0x26,0x28,0x61,0x5b,0x6c,0x5d,0x3d,0x69,0x5b,0x6c,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x74,0x2c,0x74,0x79,0x70,0x65,0x3a,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x6f,0x2c,0x72,0x65,0x66,0x3a,0x75,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x61,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x78,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x74,0x7d,0x76,0x61,0x72,0x20,0x50,0x3d,0x2f,0x5c,0x2f,0x2b,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x2e,0x6b,0x65,0x79,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x7b,0x22,0x3d,0x22,0x3a,0x22,0x3d,0x30,0x22,0x2c,0x22,0x3a,0x22,0x3a,0x22,0x3d,0x32,0x22,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x24,0x22,0x2b,0x65,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x2f,0x5b,0x3d,0x3a,0x5d,0x2f,0x67,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x5b,0x65,0x5d,0x7d,0x29,0x29,0x7d,0x28,0x22,0x22,0x2b,0x65,0x2e,0x6b,0x65,0x79,0x29,0x3a,0x6e,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x28,0x65,0x2c,0x6e,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x3b,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x75,0x26,0x26,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x21,0x3d,0x3d,0x75,0x7c,0x7c,0x28,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x76,0x61,0x72,0x20,0x69,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x69,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x75,0x29,0x7b,0x63,0x61,0x73,0x65,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x3a,0x63,0x61,0x73,0x65,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3a,0x69,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x74,0x3a,0x63,0x61,0x73,0x65,0x20,0x72,0x3a,0x69,0x3d,0x21,0x30,0x7d,0x7d,0x69,0x66,0x28,0x69,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x3d,0x6f,0x28,0x69,0x3d,0x65,0x29,0x2c,0x65,0x3d,0x22,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x22,0x2e,0x22,0x2b,0x4e,0x28,0x69,0x2c,0x30,0x29,0x3a,0x61,0x2c,0x77,0x28,0x6f,0x29,0x3f,0x28,0x6c,0x3d,0x22,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x26,0x26,0x28,0x6c,0x3d,0x65,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x50,0x2c,0x22,0x24,0x26,0x2f,0x22,0x29,0x2b,0x22,0x2f,0x22,0x29,0x2c,0x7a,0x28,0x6f,0x2c,0x6e,0x2c,0x6c,0x2c,0x22,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x29,0x29,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6f,0x26,0x26,0x28,0x5f,0x28,0x6f,0x29,0x26,0x26,0x28,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x74,0x2c,0x74,0x79,0x70,0x65,0x3a,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x6e,0x2c,0x72,0x65,0x66,0x3a,0x65,0x2e,0x72,0x65,0x66,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x65,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x65,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x7d,0x7d,0x28,0x6f,0x2c,0x6c,0x2b,0x28,0x21,0x6f,0x2e,0x6b,0x65,0x79,0x7c,0x7c,0x69,0x26,0x26,0x69,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x6f,0x2e,0x6b,0x65,0x79,0x3f,0x22,0x22,0x3a,0x28,0x22,0x22,0x2b,0x6f,0x2e,0x6b,0x65,0x79,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x50,0x2c,0x22,0x24,0x26,0x2f,0x22,0x29,0x2b,0x22,0x2f,0x22,0x29,0x2b,0x65,0x29,0x29,0x2c,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x6f,0x29,0x29,0x2c,0x31,0x3b,0x69,0x66,0x28,0x69,0x3d,0x30,0x2c,0x61,0x3d,0x22,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x22,0x2e,0x22,0x3a,0x61,0x2b,0x22,0x3a,0x22,0x2c,0x77,0x28,0x65,0x29,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x30,0x3b,0x73,0x3c,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x73,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2b,0x4e,0x28,0x75,0x3d,0x65,0x5b,0x73,0x5d,0x2c,0x73,0x29,0x3b,0x69,0x2b,0x3d,0x7a,0x28,0x75,0x2c,0x6e,0x2c,0x6c,0x2c,0x63,0x2c,0x6f,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x65,0x3d,0x70,0x26,0x26,0x65,0x5b,0x70,0x5d,0x7c,0x7c,0x65,0x5b,0x22,0x40,0x40,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x22,0x5d,0x29,0x3f,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x28,0x65,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x66,0x6f,0x72,0x28,0x65,0x3d,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x29,0x2c,0x73,0x3d,0x30,0x3b,0x21,0x28,0x75,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x29,0x69,0x2b,0x3d,0x7a,0x28,0x75,0x3d,0x75,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6e,0x2c,0x6c,0x2c,0x63,0x3d,0x61,0x2b,0x4e,0x28,0x75,0x2c,0x73,0x2b,0x2b,0x29,0x2c,0x6f,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x75,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x6e,0x3d,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x65,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x22,0x4f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x61,0x73,0x20,0x61,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x63,0x68,0x69,0x6c,0x64,0x20,0x28,0x66,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x22,0x2b,0x28,0x22,0x5b,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x5d,0x22,0x3d,0x3d,0x3d,0x6e,0x3f,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x6b,0x65,0x79,0x73,0x20,0x7b,0x22,0x2b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x65,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x22,0x2c,0x20,0x22,0x29,0x2b,0x22,0x7d,0x22,0x3a,0x6e,0x29,0x2b,0x22,0x29,0x2e,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,0x20,0x6d,0x65,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x72,0x65,0x6e,0x64,0x65,0x72,0x20,0x61,0x20,0x63,0x6f,0x6c,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x20,0x75,0x73,0x65,0x20,0x61,0x6e,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x2e,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x5b,0x5d,0x2c,0x6c,0x3d,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x28,0x65,0x2c,0x72,0x2c,0x22,0x22,0x2c,0x22,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x74,0x2c,0x65,0x2c,0x6c,0x2b,0x2b,0x29,0x7d,0x29,0x29,0x2c,0x72,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x2d,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x28,0x6e,0x3d,0x6e,0x28,0x29,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x7b,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x26,0x26,0x2d,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x7c,0x7c,0x28,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x31,0x2c,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x6e,0x29,0x7d,0x29,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x7b,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x26,0x26,0x2d,0x31,0x21,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x7c,0x7c,0x28,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x32,0x2c,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x6e,0x29,0x7d,0x29,0x29,0x2c,0x2d,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x26,0x26,0x28,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x30,0x2c,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x6e,0x29,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x65,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x7d,0x76,0x61,0x72,0x20,0x52,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x46,0x3d,0x7b,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x4f,0x3d,0x7b,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x3a,0x52,0x2c,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3a,0x46,0x2c,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x3a,0x78,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x22,0x61,0x63,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x20,0x69,0x6e,0x20,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x75,0x69,0x6c,0x64,0x73,0x20,0x6f,0x66,0x20,0x52,0x65,0x61,0x63,0x74,0x2e,0x22,0x29,0x7d,0x6e,0x2e,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x7b,0x6d,0x61,0x70,0x3a,0x54,0x2c,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x54,0x28,0x65,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6e,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x29,0x2c,0x74,0x29,0x7d,0x2c,0x63,0x6f,0x75,0x6e,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x28,0x65,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6e,0x2b,0x2b,0x7d,0x29,0x29,0x2c,0x6e,0x7d,0x2c,0x74,0x6f,0x41,0x72,0x72,0x61,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x28,0x65,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x29,0x29,0x7c,0x7c,0x5b,0x5d,0x7d,0x2c,0x6f,0x6e,0x6c,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x5f,0x28,0x65,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x22,0x52,0x65,0x61,0x63,0x74,0x2e,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2e,0x6f,0x6e,0x6c,0x79,0x20,0x65,0x78,0x70,0x65,0x63,0x74,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20,0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x20,0x63,0x68,0x69,0x6c,0x64,0x2e,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x7d,0x2c,0x6e,0x2e,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x67,0x2c,0x6e,0x2e,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x3d,0x6c,0x2c,0x6e,0x2e,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x3d,0x6f,0x2c,0x6e,0x2e,0x50,0x75,0x72,0x65,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x62,0x2c,0x6e,0x2e,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x3d,0x61,0x2c,0x6e,0x2e,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x3d,0x63,0x2c,0x6e,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x3d,0x4f,0x2c,0x6e,0x2e,0x61,0x63,0x74,0x3d,0x4d,0x2c,0x6e,0x2e,0x63,0x6c,0x6f,0x6e,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x72,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x22,0x52,0x65,0x61,0x63,0x74,0x2e,0x63,0x6c,0x6f,0x6e,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x3a,0x20,0x54,0x68,0x65,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x61,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x20,0x62,0x75,0x74,0x20,0x79,0x6f,0x75,0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x20,0x22,0x2b,0x65,0x2b,0x22,0x2e,0x22,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x68,0x28,0x7b,0x7d,0x2c,0x65,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x2c,0x61,0x3d,0x65,0x2e,0x6b,0x65,0x79,0x2c,0x6f,0x3d,0x65,0x2e,0x72,0x65,0x66,0x2c,0x75,0x3d,0x65,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6e,0x29,0x7b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x6f,0x3d,0x6e,0x2e,0x72,0x65,0x66,0x2c,0x75,0x3d,0x78,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x61,0x3d,0x22,0x22,0x2b,0x6e,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x65,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x65,0x2e,0x74,0x79,0x70,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x76,0x61,0x72,0x20,0x69,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x3b,0x66,0x6f,0x72,0x28,0x73,0x20,0x69,0x6e,0x20,0x6e,0x29,0x53,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6e,0x2c,0x73,0x29,0x26,0x26,0x21,0x45,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x73,0x29,0x26,0x26,0x28,0x6c,0x5b,0x73,0x5d,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x5b,0x73,0x5d,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x69,0x3f,0x69,0x5b,0x73,0x5d,0x3a,0x6e,0x5b,0x73,0x5d,0x29,0x7d,0x76,0x61,0x72,0x20,0x73,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x32,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x73,0x29,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x72,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x3c,0x73,0x29,0x7b,0x69,0x3d,0x41,0x72,0x72,0x61,0x79,0x28,0x73,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x73,0x3b,0x63,0x2b,0x2b,0x29,0x69,0x5b,0x63,0x5d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x63,0x2b,0x32,0x5d,0x3b,0x6c,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x69,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x74,0x2c,0x74,0x79,0x70,0x65,0x3a,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x61,0x2c,0x72,0x65,0x66,0x3a,0x6f,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x6c,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x75,0x7d,0x7d,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x65,0x3d,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x69,0x2c,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x65,0x2c,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x3a,0x65,0x2c,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x30,0x2c,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x4e,0x61,0x6d,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x3d,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x75,0x2c,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x7d,0x2c,0x65,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x3d,0x65,0x7d,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x43,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x46,0x61,0x63,0x74,0x6f,0x72,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x43,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x74,0x79,0x70,0x65,0x3d,0x65,0x2c,0x6e,0x7d,0x2c,0x6e,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x2c,0x6e,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x73,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x3a,0x65,0x7d,0x7d,0x2c,0x6e,0x2e,0x69,0x73,0x56,0x61,0x6c,0x69,0x64,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x5f,0x2c,0x6e,0x2e,0x6c,0x61,0x7a,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x64,0x2c,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x7b,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3a,0x2d,0x31,0x2c,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3a,0x65,0x7d,0x2c,0x5f,0x69,0x6e,0x69,0x74,0x3a,0x4c,0x7d,0x7d,0x2c,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x66,0x2c,0x74,0x79,0x70,0x65,0x3a,0x65,0x2c,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x6e,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x7d,0x7d,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x46,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x46,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x7b,0x7d,0x3b,0x74,0x72,0x79,0x7b,0x65,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x46,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x7d,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x61,0x63,0x74,0x3d,0x4d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x28,0x65,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x28,0x65,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x49,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x64,0x28,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x52,0x65,0x66,0x28,0x65,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x65,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7d,0x2c,0x6e,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x22,0x7d,0x2c,0x34,0x33,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3d,0x74,0x28,0x32,0x30,0x32,0x29,0x7d,0x2c,0x35,0x37,0x39,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3d,0x74,0x28,0x31,0x35,0x33,0x29,0x7d,0x2c,0x32,0x33,0x34,0x3a,0x28,0x65,0x2c,0x6e,0x29,0x3d,0x3e,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2e,0x70,0x75,0x73,0x68,0x28,0x6e,0x29,0x3b,0x65,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x74,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x2d,0x31,0x3e,0x3e,0x3e,0x31,0x2c,0x6c,0x3d,0x65,0x5b,0x72,0x5d,0x3b,0x69,0x66,0x28,0x21,0x28,0x30,0x3c,0x61,0x28,0x6c,0x2c,0x6e,0x29,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x65,0x5b,0x72,0x5d,0x3d,0x6e,0x2c,0x65,0x5b,0x74,0x5d,0x3d,0x6c,0x2c,0x74,0x3d,0x72,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x65,0x5b,0x30,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x65,0x5b,0x30,0x5d,0x2c,0x74,0x3d,0x65,0x2e,0x70,0x6f,0x70,0x28,0x29,0x3b,0x69,0x66,0x28,0x74,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x65,0x5b,0x30,0x5d,0x3d,0x74,0x3b,0x65,0x3a,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x3d,0x30,0x2c,0x6c,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x6f,0x3d,0x6c,0x3e,0x3e,0x3e,0x31,0x3b,0x72,0x3c,0x6f,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x32,0x2a,0x28,0x72,0x2b,0x31,0x29,0x2d,0x31,0x2c,0x69,0x3d,0x65,0x5b,0x75,0x5d,0x2c,0x73,0x3d,0x75,0x2b,0x31,0x2c,0x63,0x3d,0x65,0x5b,0x73,0x5d,0x3b,0x69,0x66,0x28,0x30,0x3e,0x61,0x28,0x69,0x2c,0x74,0x29,0x29,0x73,0x3c,0x6c,0x26,0x26,0x30,0x3e,0x61,0x28,0x63,0x2c,0x69,0x29,0x3f,0x28,0x65,0x5b,0x72,0x5d,0x3d,0x63,0x2c,0x65,0x5b,0x73,0x5d,0x3d,0x74,0x2c,0x72,0x3d,0x73,0x29,0x3a,0x28,0x65,0x5b,0x72,0x5d,0x3d,0x69,0x2c,0x65,0x5b,0x75,0x5d,0x3d,0x74,0x2c,0x72,0x3d,0x75,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x28,0x73,0x3c,0x6c,0x26,0x26,0x30,0x3e,0x61,0x28,0x63,0x2c,0x74,0x29,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x3b,0x65,0x5b,0x72,0x5d,0x3d,0x63,0x2c,0x65,0x5b,0x73,0x5d,0x3d,0x74,0x2c,0x72,0x3d,0x73,0x7d,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x2d,0x6e,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x74,0x3f,0x74,0x3a,0x65,0x2e,0x69,0x64,0x2d,0x6e,0x2e,0x69,0x64,0x7d,0x69,0x66,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x26,0x26,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x3b,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x75,0x3d,0x44,0x61,0x74,0x65,0x2c,0x69,0x3d,0x75,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x69,0x7d,0x7d,0x76,0x61,0x72,0x20,0x73,0x3d,0x5b,0x5d,0x2c,0x63,0x3d,0x5b,0x5d,0x2c,0x66,0x3d,0x31,0x2c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x70,0x3d,0x33,0x2c,0x6d,0x3d,0x21,0x31,0x2c,0x68,0x3d,0x21,0x31,0x2c,0x76,0x3d,0x21,0x31,0x2c,0x67,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x3d,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x3d,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x3f,0x73,0x65,0x74,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x28,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x3d,0x72,0x28,0x63,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x29,0x6c,0x28,0x63,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x28,0x6e,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x3d,0x65,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x6c,0x28,0x63,0x29,0x2c,0x6e,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x6e,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x2c,0x74,0x28,0x73,0x2c,0x6e,0x29,0x7d,0x6e,0x3d,0x72,0x28,0x63,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x76,0x3d,0x21,0x31,0x2c,0x6b,0x28,0x65,0x29,0x2c,0x21,0x68,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x28,0x73,0x29,0x29,0x68,0x3d,0x21,0x30,0x2c,0x46,0x28,0x53,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x72,0x28,0x63,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x4f,0x28,0x77,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x65,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x28,0x65,0x2c,0x74,0x29,0x7b,0x68,0x3d,0x21,0x31,0x2c,0x76,0x26,0x26,0x28,0x76,0x3d,0x21,0x31,0x2c,0x79,0x28,0x5f,0x29,0x2c,0x5f,0x3d,0x2d,0x31,0x29,0x2c,0x6d,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x70,0x3b,0x74,0x72,0x79,0x7b,0x66,0x6f,0x72,0x28,0x6b,0x28,0x74,0x29,0x2c,0x64,0x3d,0x72,0x28,0x73,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x21,0x28,0x64,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3e,0x74,0x29,0x7c,0x7c,0x65,0x26,0x26,0x21,0x7a,0x28,0x29,0x29,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x64,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6f,0x29,0x7b,0x64,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x70,0x3d,0x64,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x6f,0x28,0x64,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3c,0x3d,0x74,0x29,0x3b,0x74,0x3d,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x2c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x75,0x3f,0x64,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x75,0x3a,0x64,0x3d,0x3d,0x3d,0x72,0x28,0x73,0x29,0x26,0x26,0x6c,0x28,0x73,0x29,0x2c,0x6b,0x28,0x74,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6c,0x28,0x73,0x29,0x3b,0x64,0x3d,0x72,0x28,0x73,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x76,0x61,0x72,0x20,0x69,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x72,0x28,0x63,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x4f,0x28,0x77,0x2c,0x66,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x74,0x29,0x2c,0x69,0x3d,0x21,0x31,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x70,0x3d,0x61,0x2c,0x6d,0x3d,0x21,0x31,0x7d,0x7d,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x2e,0x69,0x73,0x49,0x6e,0x70,0x75,0x74,0x50,0x65,0x6e,0x64,0x69,0x6e,0x67,0x26,0x26,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x2e,0x69,0x73,0x49,0x6e,0x70,0x75,0x74,0x50,0x65,0x6e,0x64,0x69,0x6e,0x67,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x76,0x61,0x72,0x20,0x78,0x2c,0x45,0x3d,0x21,0x31,0x2c,0x43,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x3d,0x2d,0x31,0x2c,0x50,0x3d,0x35,0x2c,0x4e,0x3d,0x2d,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x4e,0x3c,0x50,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x43,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x4e,0x3d,0x65,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x21,0x30,0x3b,0x74,0x72,0x79,0x7b,0x74,0x3d,0x43,0x28,0x21,0x30,0x2c,0x65,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x74,0x3f,0x78,0x28,0x29,0x3a,0x28,0x45,0x3d,0x21,0x31,0x2c,0x43,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x45,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x78,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x28,0x54,0x29,0x7d,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x4c,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x52,0x3d,0x4c,0x2e,0x70,0x6f,0x72,0x74,0x32,0x3b,0x4c,0x2e,0x70,0x6f,0x72,0x74,0x31,0x2e,0x6f,0x6e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x3d,0x54,0x2c,0x78,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x52,0x2e,0x70,0x6f,0x73,0x74,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x78,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x67,0x28,0x54,0x2c,0x30,0x29,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x28,0x65,0x29,0x7b,0x43,0x3d,0x65,0x2c,0x45,0x7c,0x7c,0x28,0x45,0x3d,0x21,0x30,0x2c,0x78,0x28,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x28,0x65,0x2c,0x74,0x29,0x7b,0x5f,0x3d,0x67,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x65,0x28,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x29,0x7d,0x29,0x2c,0x74,0x29,0x7d,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x64,0x6c,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x35,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x31,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4c,0x6f,0x77,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x34,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x33,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x50,0x72,0x6f,0x66,0x69,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x55,0x73,0x65,0x72,0x42,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x32,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x61,0x6e,0x63,0x65,0x6c,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x68,0x7c,0x7c,0x6d,0x7c,0x7c,0x28,0x68,0x3d,0x21,0x30,0x2c,0x46,0x28,0x53,0x29,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x66,0x6f,0x72,0x63,0x65,0x46,0x72,0x61,0x6d,0x65,0x52,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x30,0x3e,0x65,0x7c,0x7c,0x31,0x32,0x35,0x3c,0x65,0x3f,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x66,0x6f,0x72,0x63,0x65,0x46,0x72,0x61,0x6d,0x65,0x52,0x61,0x74,0x65,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,0x61,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x20,0x69,0x6e,0x74,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x30,0x20,0x61,0x6e,0x64,0x20,0x31,0x32,0x35,0x2c,0x20,0x66,0x6f,0x72,0x63,0x69,0x6e,0x67,0x20,0x66,0x72,0x61,0x6d,0x65,0x20,0x72,0x61,0x74,0x65,0x73,0x20,0x68,0x69,0x67,0x68,0x65,0x72,0x20,0x74,0x68,0x61,0x6e,0x20,0x31,0x32,0x35,0x20,0x66,0x70,0x73,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x22,0x29,0x3a,0x50,0x3d,0x30,0x3c,0x65,0x3f,0x4d,0x61,0x74,0x68,0x2e,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x31,0x65,0x33,0x2f,0x65,0x29,0x3a,0x35,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x46,0x69,0x72,0x73,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x28,0x73,0x29,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x70,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x6e,0x3d,0x33,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x6e,0x3d,0x70,0x7d,0x76,0x61,0x72,0x20,0x74,0x3d,0x70,0x3b,0x70,0x3d,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x70,0x3d,0x74,0x7d,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x70,0x61,0x75,0x73,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x50,0x61,0x69,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x75,0x6e,0x57,0x69,0x74,0x68,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6e,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x33,0x7d,0x76,0x61,0x72,0x20,0x74,0x3d,0x70,0x3b,0x70,0x3d,0x65,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x70,0x3d,0x74,0x7d,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x6c,0x2c,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x3d,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x61,0x3d,0x61,0x2e,0x64,0x65,0x6c,0x61,0x79,0x29,0x26,0x26,0x30,0x3c,0x61,0x3f,0x6f,0x2b,0x61,0x3a,0x6f,0x3a,0x61,0x3d,0x6f,0x2c,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x75,0x3d,0x2d,0x31,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x75,0x3d,0x32,0x35,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x75,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x33,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x75,0x3d,0x31,0x65,0x34,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x75,0x3d,0x35,0x65,0x33,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x7b,0x69,0x64,0x3a,0x66,0x2b,0x2b,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x6c,0x2c,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3a,0x65,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x61,0x2c,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3a,0x75,0x3d,0x61,0x2b,0x75,0x2c,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3a,0x2d,0x31,0x7d,0x2c,0x61,0x3e,0x6f,0x3f,0x28,0x65,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x61,0x2c,0x74,0x28,0x63,0x2c,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x28,0x73,0x29,0x26,0x26,0x65,0x3d,0x3d,0x3d,0x72,0x28,0x63,0x29,0x26,0x26,0x28,0x76,0x3f,0x28,0x79,0x28,0x5f,0x29,0x2c,0x5f,0x3d,0x2d,0x31,0x29,0x3a,0x76,0x3d,0x21,0x30,0x2c,0x4f,0x28,0x77,0x2c,0x61,0x2d,0x6f,0x29,0x29,0x29,0x3a,0x28,0x65,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x75,0x2c,0x74,0x28,0x73,0x2c,0x65,0x29,0x2c,0x68,0x7c,0x7c,0x6d,0x7c,0x7c,0x28,0x68,0x3d,0x21,0x30,0x2c,0x46,0x28,0x53,0x29,0x29,0x29,0x2c,0x65,0x7d,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x68,0x6f,0x75,0x6c,0x64,0x59,0x69,0x65,0x6c,0x64,0x3d,0x7a,0x2c,0x6e,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x77,0x72,0x61,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x70,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x70,0x3b,0x70,0x3d,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x70,0x3d,0x74,0x7d,0x7d,0x7d,0x7d,0x2c,0x38,0x35,0x33,0x3a,0x28,0x65,0x2c,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3d,0x74,0x28,0x32,0x33,0x34,0x29,0x7d,0x7d,0x2c,0x6e,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x28,0x72,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x5b,0x72,0x5d,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x5b,0x72,0x5d,0x3d,0x7b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3a,0x7b,0x7d,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x5b,0x72,0x5d,0x28,0x61,0x2c,0x61,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x74,0x29,0x2c,0x61,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x7d,0x74,0x2e,0x6d,0x3d,0x65,0x2c,0x74,0x2e,0x64,0x3d,0x28,0x65,0x2c,0x6e,0x29,0x3d,0x3e,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x72,0x20,0x69,0x6e,0x20,0x6e,0x29,0x74,0x2e,0x6f,0x28,0x6e,0x2c,0x72,0x29,0x26,0x26,0x21,0x74,0x2e,0x6f,0x28,0x65,0x2c,0x72,0x29,0x26,0x26,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x2c,0x72,0x2c,0x7b,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x3a,0x21,0x30,0x2c,0x67,0x65,0x74,0x3a,0x6e,0x5b,0x72,0x5d,0x7d,0x29,0x7d,0x2c,0x74,0x2e,0x66,0x3d,0x7b,0x7d,0x2c,0x74,0x2e,0x65,0x3d,0x65,0x3d,0x3e,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x2e,0x61,0x6c,0x6c,0x28,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x74,0x2e,0x66,0x29,0x2e,0x72,0x65,0x64,0x75,0x63,0x65,0x28,0x28,0x28,0x6e,0x2c,0x72,0x29,0x3d,0x3e,0x28,0x74,0x2e,0x66,0x5b,0x72,0x5d,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x6e,0x29,0x29,0x2c,0x5b,0x5d,0x29,0x29,0x2c,0x74,0x2e,0x75,0x3d,0x65,0x3d,0x3e,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x22,0x2b,0x65,0x2b,0x22,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x22,0x2c,0x74,0x2e,0x6d,0x69,0x6e,0x69,0x43,0x73,0x73,0x46,0x3d,0x65,0x3d,0x3e,0x7b,0x7d,0x2c,0x74,0x2e,0x6f,0x3d,0x28,0x65,0x2c,0x6e,0x29,0x3d,0x3e,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x2c,0x6e,0x29,0x2c,0x28,0x28,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x7d,0x2c,0x6e,0x3d,0x22,0x77,0x65,0x62,0x75,0x69,0x2d,0x72,0x65,0x61,0x63,0x74,0x2d,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3a,0x22,0x3b,0x74,0x2e,0x6c,0x3d,0x28,0x72,0x2c,0x6c,0x2c,0x61,0x2c,0x6f,0x29,0x3d,0x3e,0x7b,0x69,0x66,0x28,0x65,0x5b,0x72,0x5d,0x29,0x65,0x5b,0x72,0x5d,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x75,0x2c,0x69,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x73,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x42,0x79,0x54,0x61,0x67,0x4e,0x61,0x6d,0x65,0x28,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x29,0x2c,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x73,0x5b,0x63,0x5d,0x3b,0x69,0x66,0x28,0x66,0x2e,0x67,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x73,0x72,0x63,0x22,0x29,0x3d,0x3d,0x72,0x7c,0x7c,0x66,0x2e,0x67,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x64,0x61,0x74,0x61,0x2d,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x22,0x29,0x3d,0x3d,0x6e,0x2b,0x61,0x29,0x7b,0x75,0x3d,0x66,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x75,0x7c,0x7c,0x28,0x69,0x3d,0x21,0x30,0x2c,0x28,0x75,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x29,0x29,0x2e,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x2c,0x75,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3d,0x31,0x32,0x30,0x2c,0x74,0x2e,0x6e,0x63,0x26,0x26,0x75,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x6e,0x6f,0x6e,0x63,0x65,0x22,0x2c,0x74,0x2e,0x6e,0x63,0x29,0x2c,0x75,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x22,0x64,0x61,0x74,0x61,0x2d,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x22,0x2c,0x6e,0x2b,0x61,0x29,0x2c,0x75,0x2e,0x73,0x72,0x63,0x3d,0x72,0x29,0x2c,0x65,0x5b,0x72,0x5d,0x3d,0x5b,0x6c,0x5d,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x28,0x6e,0x2c,0x74,0x29,0x3d,0x3e,0x7b,0x75,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x3d,0x75,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x70,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x65,0x5b,0x72,0x5d,0x3b,0x69,0x66,0x28,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x65,0x5b,0x72,0x5d,0x2c,0x75,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x26,0x26,0x75,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x75,0x29,0x2c,0x6c,0x26,0x26,0x6c,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x65,0x3d,0x3e,0x65,0x28,0x74,0x29,0x29,0x29,0x2c,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x28,0x74,0x29,0x7d,0x2c,0x70,0x3d,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x64,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x7b,0x74,0x79,0x70,0x65,0x3a,0x22,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x22,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x75,0x7d,0x29,0x2c,0x31,0x32,0x65,0x34,0x29,0x3b,0x75,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x3d,0x64,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x29,0x2c,0x75,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x3d,0x64,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x69,0x26,0x26,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x68,0x65,0x61,0x64,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x75,0x29,0x7d,0x7d,0x7d,0x29,0x28,0x29,0x2c,0x74,0x2e,0x72,0x3d,0x65,0x3d,0x3e,0x7b,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x26,0x26,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x54,0x61,0x67,0x26,0x26,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x2c,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x54,0x61,0x67,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x22,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x22,0x7d,0x29,0x2c,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x2c,0x22,0x5f,0x5f,0x65,0x73,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x22,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x21,0x30,0x7d,0x29,0x7d,0x2c,0x74,0x2e,0x70,0x3d,0x22,0x2f,0x22,0x2c,0x28,0x28,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x37,0x39,0x32,0x3a,0x30,0x7d,0x3b,0x74,0x2e,0x66,0x2e,0x6a,0x3d,0x28,0x6e,0x2c,0x72,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x74,0x2e,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x3f,0x65,0x5b,0x6e,0x5d,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x6c,0x29,0x69,0x66,0x28,0x6c,0x29,0x72,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x5b,0x32,0x5d,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6e,0x65,0x77,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x28,0x28,0x28,0x74,0x2c,0x72,0x29,0x3d,0x3e,0x6c,0x3d,0x65,0x5b,0x6e,0x5d,0x3d,0x5b,0x74,0x2c,0x72,0x5d,0x29,0x29,0x3b,0x72,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x5b,0x32,0x5d,0x3d,0x61,0x29,0x3b,0x76,0x61,0x72,0x20,0x6f,0x3d,0x74,0x2e,0x70,0x2b,0x74,0x2e,0x75,0x28,0x6e,0x29,0x2c,0x75,0x3d,0x6e,0x65,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x3b,0x74,0x2e,0x6c,0x28,0x6f,0x2c,0x28,0x72,0x3d,0x3e,0x7b,0x69,0x66,0x28,0x74,0x2e,0x6f,0x28,0x65,0x2c,0x6e,0x29,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x6c,0x3d,0x65,0x5b,0x6e,0x5d,0x29,0x26,0x26,0x28,0x65,0x5b,0x6e,0x5d,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x2c,0x6c,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x72,0x26,0x26,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x3d,0x3d,0x3d,0x72,0x2e,0x74,0x79,0x70,0x65,0x3f,0x22,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x22,0x3a,0x72,0x2e,0x74,0x79,0x70,0x65,0x29,0x2c,0x6f,0x3d,0x72,0x26,0x26,0x72,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x26,0x26,0x72,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x73,0x72,0x63,0x3b,0x75,0x2e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x3d,0x22,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x22,0x2b,0x6e,0x2b,0x22,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x2e,0x5c,0x6e,0x28,0x22,0x2b,0x61,0x2b,0x22,0x3a,0x20,0x22,0x2b,0x6f,0x2b,0x22,0x29,0x22,0x2c,0x75,0x2e,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x75,0x2e,0x74,0x79,0x70,0x65,0x3d,0x61,0x2c,0x75,0x2e,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x3d,0x6f,0x2c,0x6c,0x5b,0x31,0x5d,0x28,0x75,0x29,0x7d,0x7d,0x29,0x2c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x2d,0x22,0x2b,0x6e,0x2c,0x6e,0x29,0x7d,0x7d,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x28,0x6e,0x2c,0x72,0x29,0x3d,0x3e,0x7b,0x76,0x61,0x72,0x20,0x6c,0x2c,0x61,0x2c,0x6f,0x3d,0x72,0x5b,0x30,0x5d,0x2c,0x75,0x3d,0x72,0x5b,0x31,0x5d,0x2c,0x69,0x3d,0x72,0x5b,0x32,0x5d,0x2c,0x73,0x3d,0x30,0x3b,0x69,0x66,0x28,0x6f,0x2e,0x73,0x6f,0x6d,0x65,0x28,0x28,0x6e,0x3d,0x3e,0x30,0x21,0x3d,0x3d,0x65,0x5b,0x6e,0x5d,0x29,0x29,0x29,0x7b,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x75,0x29,0x74,0x2e,0x6f,0x28,0x75,0x2c,0x6c,0x29,0x26,0x26,0x28,0x74,0x2e,0x6d,0x5b,0x6c,0x5d,0x3d,0x75,0x5b,0x6c,0x5d,0x29,0x3b,0x69,0x66,0x28,0x69,0x29,0x69,0x28,0x74,0x29,0x7d,0x66,0x6f,0x72,0x28,0x6e,0x26,0x26,0x6e,0x28,0x72,0x29,0x3b,0x73,0x3c,0x6f,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x73,0x2b,0x2b,0x29,0x61,0x3d,0x6f,0x5b,0x73,0x5d,0x2c,0x74,0x2e,0x6f,0x28,0x65,0x2c,0x61,0x29,0x26,0x26,0x65,0x5b,0x61,0x5d,0x26,0x26,0x65,0x5b,0x61,0x5d,0x5b,0x30,0x5d,0x28,0x29,0x2c,0x65,0x5b,0x61,0x5d,0x3d,0x30,0x7d,0x2c,0x72,0x3d,0x73,0x65,0x6c,0x66,0x2e,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3d,0x73,0x65,0x6c,0x66,0x2e,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x7c,0x7c,0x5b,0x5d,0x3b,0x72,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x6e,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x29,0x29,0x2c,0x72,0x2e,0x70,0x75,0x73,0x68,0x3d,0x6e,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x2e,0x70,0x75,0x73,0x68,0x2e,0x62,0x69,0x6e,0x64,0x28,0x72,0x29,0x29,0x7d,0x29,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x74,0x28,0x34,0x33,0x29,0x2c,0x6c,0x3d,0x74,0x28,0x33,0x39,0x31,0x29,0x2c,0x61,0x3d,0x74,0x28,0x35,0x37,0x39,0x29,0x3b,0x63,0x6f,0x6e,0x73,0x74,0x20,0x6f,0x3d,0x28,0x29,0x3d,0x3e,0x7b,0x63,0x6f,0x6e,0x73,0x74,0x5b,0x65,0x2c,0x6e,0x5d,0x3d,0x28,0x30,0x2c,0x72,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x29,0x28,0x22,0x22,0x29,0x2c,0x5b,0x74,0x2c,0x6c,0x5d,0x3d,0x28,0x30,0x2c,0x72,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x29,0x28,0x22,0x22,0x29,0x2c,0x5b,0x6f,0x2c,0x75,0x5d,0x3d,0x28,0x30,0x2c,0x72,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x29,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x73,0x29,0x28,0x22,0x64,0x69,0x76,0x22,0x2c,0x7b,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x22,0x32,0x30,0x70,0x78,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x46,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x22,0x41,0x72,0x69,0x61,0x6c,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x69,0x6d,0x67,0x22,0x2c,0x7b,0x73,0x72,0x63,0x3a,0x22,0x6c,0x6f,0x67,0x6f,0x31,0x39,0x32,0x2e,0x70,0x6e,0x67,0x22,0x2c,0x77,0x69,0x64,0x74,0x68,0x3a,0x22,0x36,0x34,0x22,0x2c,0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x22,0x36,0x34,0x22,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x68,0x32,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x57,0x65,0x62,0x55,0x49,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x22,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x73,0x29,0x28,0x22,0x64,0x69,0x76,0x22,0x2c,0x7b,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x42,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x22,0x31,0x30,0x70,0x78,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x6c,0x61,0x62,0x65,0x6c,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x73,0x74,0x72,0x6f,0x6e,0x67,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x49,0x6e,0x70,0x75,0x74,0x20,0x31,0x3a,0x22,0x7d,0x29,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x7b,0x74,0x79,0x70,0x65,0x3a,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x65,0x2c,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x3a,0x65,0x3d,0x3e,0x6e,0x28,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x4c,0x65,0x66,0x74,0x3a,0x22,0x31,0x30,0x70,0x78,0x22,0x2c,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x22,0x35,0x70,0x78,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x22,0x31,0x36,0x70,0x78,0x22,0x7d,0x7d,0x29,0x5d,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x73,0x29,0x28,0x22,0x64,0x69,0x76,0x22,0x2c,0x7b,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x42,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x22,0x31,0x30,0x70,0x78,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x6c,0x61,0x62,0x65,0x6c,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x73,0x74,0x72,0x6f,0x6e,0x67,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x49,0x6e,0x70,0x75,0x74,0x20,0x32,0x3a,0x22,0x7d,0x29,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x7b,0x74,0x79,0x70,0x65,0x3a,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x74,0x2c,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x3a,0x65,0x3d,0x3e,0x6c,0x28,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x4c,0x65,0x66,0x74,0x3a,0x22,0x31,0x30,0x70,0x78,0x22,0x2c,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x22,0x35,0x70,0x78,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x22,0x31,0x36,0x70,0x78,0x22,0x7d,0x7d,0x29,0x5d,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x2c,0x7b,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x3a,0x28,0x29,0x3d,0x3e,0x7b,0x63,0x6f,0x6e,0x73,0x74,0x20,0x6e,0x3d,0x70,0x61,0x72,0x73,0x65,0x46,0x6c,0x6f,0x61,0x74,0x28,0x65,0x7c,0x7c,0x30,0x29,0x2b,0x70,0x61,0x72,0x73,0x65,0x46,0x6c,0x6f,0x61,0x74,0x28,0x74,0x7c,0x7c,0x30,0x29,0x3b,0x75,0x28,0x6e,0x29,0x7d,0x2c,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x22,0x31,0x30,0x70,0x78,0x20,0x32,0x30,0x70,0x78,0x22,0x2c,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6c,0x6f,0x72,0x3a,0x22,0x23,0x34,0x43,0x41,0x46,0x35,0x30,0x22,0x2c,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x22,0x31,0x36,0x70,0x78,0x22,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x52,0x61,0x64,0x69,0x75,0x73,0x3a,0x22,0x35,0x70,0x78,0x22,0x2c,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x22,0x2c,0x6d,0x61,0x72,0x67,0x69,0x6e,0x52,0x69,0x67,0x68,0x74,0x3a,0x22,0x31,0x30,0x70,0x78,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x43,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x20,0x28,0x52,0x65,0x61,0x63,0x74,0x20,0x46,0x72,0x6f,0x6e,0x74,0x65,0x6e,0x64,0x29,0x22,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x2c,0x7b,0x69,0x64,0x3a,0x22,0x45,0x78,0x69,0x74,0x22,0x2c,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x22,0x31,0x30,0x70,0x78,0x20,0x32,0x30,0x70,0x78,0x22,0x2c,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6c,0x6f,0x72,0x3a,0x22,0x23,0x66,0x34,0x34,0x33,0x33,0x36,0x22,0x2c,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x22,0x31,0x36,0x70,0x78,0x22,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x52,0x61,0x64,0x69,0x75,0x73,0x3a,0x22,0x35,0x70,0x78,0x22,0x2c,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x45,0x78,0x69,0x74,0x20,0x28,0x57,0x65,0x62,0x55,0x49,0x20,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x29,0x22,0x7d,0x29,0x2c,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x73,0x29,0x28,0x22,0x64,0x69,0x76,0x22,0x2c,0x7b,0x73,0x74,0x79,0x6c,0x65,0x3a,0x7b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x54,0x6f,0x70,0x3a,0x22,0x32,0x30,0x70,0x78,0x22,0x2c,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x22,0x31,0x38,0x70,0x78,0x22,0x7d,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x22,0x73,0x74,0x72,0x6f,0x6e,0x67,0x22,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x22,0x52,0x65,0x73,0x75,0x6c,0x74,0x3a,0x22,0x7d,0x29,0x2c,0x22,0x20,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6f,0x3f,0x6f,0x3a,0x22,0x4e,0x2f,0x41,0x22,0x5d,0x7d,0x29,0x5d,0x7d,0x29,0x7d,0x2c,0x75,0x3d,0x65,0x3d,0x3e,0x7b,0x65,0x26,0x26,0x65,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x6f,0x66,0x20,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x26,0x26,0x74,0x2e,0x65,0x28,0x34,0x35,0x33,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x74,0x2e,0x62,0x69,0x6e,0x64,0x28,0x74,0x2c,0x34,0x35,0x33,0x29,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x6e,0x3d,0x3e,0x7b,0x6c,0x65,0x74,0x7b,0x67,0x65,0x74,0x43,0x4c,0x53,0x3a,0x74,0x2c,0x67,0x65,0x74,0x46,0x49,0x44,0x3a,0x72,0x2c,0x67,0x65,0x74,0x46,0x43,0x50,0x3a,0x6c,0x2c,0x67,0x65,0x74,0x4c,0x43,0x50,0x3a,0x61,0x2c,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x3a,0x6f,0x7d,0x3d,0x6e,0x3b,0x74,0x28,0x65,0x29,0x2c,0x72,0x28,0x65,0x29,0x2c,0x6c,0x28,0x65,0x29,0x2c,0x61,0x28,0x65,0x29,0x2c,0x6f,0x28,0x65,0x29,0x7d,0x29,0x29,0x7d,0x3b,0x6c,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x28,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x72,0x6f,0x6f,0x74,0x22,0x29,0x29,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x28,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x72,0x2e,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x2c,0x7b,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x28,0x30,0x2c,0x61,0x2e,0x6a,0x73,0x78,0x29,0x28,0x6f,0x2c,0x7b,0x7d,0x29,0x7d,0x29,0x29,0x2c,0x75,0x28,0x29,0x7d,0x29,0x28,0x29,0x3b,0x0a,0x2f,0x2f,0x23,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x4d,0x61,0x70,0x70,0x69,0x6e,0x67,0x55,0x52,0x4c,0x3d,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70};
+
+static const unsigned char FILE_8[] = {0x2f,0x2a,0x2a,0x0a,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x0a,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x0a,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x0a,0x20,0x2a,0x2f,0x0a,0x0a,0x2f,0x2a,0x2a,0x0a,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x0a,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x0a,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x0a,0x20,0x2a,0x2f,0x0a,0x0a,0x2f,0x2a,0x2a,0x0a,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x0a,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x0a,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x0a,0x20,0x2a,0x2f,0x0a,0x0a,0x2f,0x2a,0x2a,0x0a,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x0a,0x20,0x2a,0x20,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x0a,0x20,0x2a,0x0a,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x0a,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x0a,0x20,0x2a,0x2f,0x0a};
+
+static const unsigned char FILE_9[] = {0x7b,0x22,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x3a,0x33,0x2c,0x22,0x66,0x69,0x6c,0x65,0x22,0x3a,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x63,0x35,0x63,0x37,0x64,0x61,0x33,0x37,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x73,0x22,0x3a,0x22,0x3b,0x77,0x43,0x41,0x59,0x61,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x79,0x44,0x41,0x41,0x79,0x44,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x49,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x46,0x2c,0x55,0x41,0x41,0x55,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x67,0x48,0x41,0x41,0x67,0x48,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x4b,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x54,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x45,0x41,0x41,0x47,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x45,0x41,0x41,0x47,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x62,0x2c,0x53,0x41,0x41,0x53,0x53,0x2c,0x45,0x41,0x41,0x47,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x52,0x4f,0x2c,0x45,0x41,0x41,0x47,0x52,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x49,0x41,0x41,0x49,0x4d,0x2c,0x45,0x41,0x41,0x47,0x4b,0x2c,0x49,0x41,0x41,0x49,0x56,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x35,0x44,0x2c,0x49,0x41,0x41,0x49,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x41,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x65,0x41,0x41,0x65,0x43,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x65,0x41,0x41,0x65,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x38,0x56,0x41,0x41,0x38,0x56,0x43,0x2c,0x45,0x41,0x43,0x70,0x67,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x69,0x4e,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x63,0x41,0x41,0x63,0x4e,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x4e,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x49,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x4b,0x2c,0x61,0x41,0x41,0x61,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x4f,0x2c,0x59,0x41,0x41,0x59,0x54,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x51,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x54,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x70,0x62,0x2c,0x75,0x49,0x41,0x41,0x75,0x49,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x65,0x41,0x41,0x65,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x61,0x41,0x41,0x61,0x2c,0x53,0x41,0x41,0x53,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x43,0x31,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x44,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x38,0x4f,0x41,0x41,0x38,0x4f,0x73,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x43,0x78,0x62,0x2c,0x43,0x41,0x41,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x57,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x51,0x2c,0x59,0x41,0x41,0x59,0x44,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x59,0x41,0x41,0x59,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x31,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x32,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x49,0x78,0x5a,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x59,0x2c,0x45,0x41,0x41,0x45,0x6c,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x50,0x39,0x49,0x2c,0x53,0x41,0x41,0x59,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x41,0x2c,0x47,0x41,0x44,0x71,0x45,0x2c,0x53,0x41,0x41,0x59,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x63,0x41,0x41,0x63,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x47,0x75,0x42,0x2c,0x49,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x67,0x42,0x41,0x41,0x6d,0x44,0x2c,0x57,0x41,0x41,0x6e,0x43,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x73,0x42,0x2c,0x55,0x41,0x41,0x55,0x37,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x2f,0x54,0x38,0x43,0x2c,0x43,0x41,0x41,0x47,0x39,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x4f,0x74,0x45,0x2b,0x43,0x2c,0x43,0x41,0x41,0x47,0x2f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x52,0x78,0x4b,0x2c,0x53,0x41,0x41,0x59,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x47,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x42,0x2c,0x45,0x41,0x41,0x47,0x74,0x42,0x2c,0x4b,0x41,0x41,0x65,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x42,0x2c,0x45,0x41,0x41,0x47,0x72,0x42,0x2c,0x4b,0x41,0x41,0x65,0x6f,0x42,0x2c,0x45,0x41,0x41,0x47,0x38,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x44,0x2c,0x47,0x41,0x41,0x55,0x73,0x42,0x2c,0x45,0x41,0x41,0x47,0x74,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x72,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x51,0x77,0x44,0x6d,0x44,0x2c,0x43,0x41,0x41,0x47,0x6c,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6e,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x61,0x41,0x41,0x61,0x70,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x4f,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x63,0x41,0x41,0x63,0x4e,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6e,0x44,0x2c,0x49,0x41,0x41,0x61,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x58,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x4f,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x54,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x44,0x2c,0x65,0x41,0x41,0x65,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x61,0x41,0x41,0x61,0x70,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x43,0x41,0x48,0x6a,0x64,0x2c,0x30,0x6a,0x43,0x41,0x41,0x30,0x6a,0x43,0x6f,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x64,0x2c,0x45,0x41,0x43,0x7a,0x6d,0x43,0x43,0x2c,0x47,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x32,0x45,0x41,0x41,0x32,0x45,0x73,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x64,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x67,0x43,0x41,0x41,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x57,0x41,0x41,0x57,0x2c,0x61,0x41,0x41,0x61,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x64,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x77,0x43,0x41,0x41,0x75,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x65,0x41,0x41,0x65,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x43,0x6c,0x64,0x48,0x2c,0x45,0x41,0x41,0x45,0x6d,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x2c,0x67,0x43,0x41,0x41,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x2c,0x63,0x41,0x41,0x63,0x67,0x42,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x45,0x35,0x4c,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x37,0x44,0x2c,0x45,0x41,0x41,0x47,0x38,0x44,0x2c,0x6d,0x44,0x41,0x41,0x6d,0x44,0x43,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x43,0x2c,0x45,0x41,0x41,0x47,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x45,0x2c,0x45,0x41,0x41,0x47,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x47,0x2c,0x45,0x41,0x41,0x47,0x4a,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x49,0x2c,0x45,0x41,0x41,0x47,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4b,0x2c,0x45,0x41,0x41,0x47,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4d,0x2c,0x45,0x41,0x41,0x47,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x4f,0x2c,0x45,0x41,0x41,0x47,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x51,0x2c,0x45,0x41,0x41,0x47,0x54,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x53,0x2c,0x45,0x41,0x41,0x47,0x56,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x55,0x2c,0x45,0x41,0x41,0x47,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x57,0x2c,0x45,0x41,0x41,0x47,0x5a,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x65,0x41,0x41,0x65,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x30,0x42,0x41,0x43,0x6a,0x65,0x2c,0x49,0x41,0x41,0x49,0x59,0x2c,0x45,0x41,0x41,0x47,0x62,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x65,0x41,0x41,0x65,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x61,0x2c,0x45,0x41,0x41,0x47,0x64,0x2c,0x4f,0x41,0x41,0x4f,0x65,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x35,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x77,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6e,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x47,0x41,0x41,0x49,0x31,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x49,0x41,0x41,0x4b,0x31,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x65,0x41,0x41,0x30,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x6f,0x42,0x36,0x45,0x2c,0x45,0x41,0x41,0x68,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x44,0x2c,0x4f,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x68,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x36,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x49,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x50,0x2c,0x45,0x41,0x41,0x47,0x35,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x45,0x2c,0x45,0x41,0x41,0x47,0x37,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x7a,0x62,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x71,0x46,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x4d,0x2c,0x75,0x42,0x41,0x41,0x6b,0x42,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x74,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x68,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x76,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x75,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x52,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x53,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x55,0x41,0x41,0x55,0x31,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x46,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x55,0x41,0x41,0x55,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x44,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x57,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x35,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x56,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x7a,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x56,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x43,0x6e,0x66,0x5a,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x58,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x72,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x79,0x46,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x45,0x2c,0x49,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4a,0x6b,0x45,0x2c,0x47,0x41,0x41,0x53,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x36,0x46,0x2c,0x4f,0x41,0x41,0x72,0x46,0x76,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x61,0x41,0x41,0x61,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x63,0x41,0x41,0x63,0x76,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x63,0x41,0x41,0x71,0x42,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x4a,0x2c,0x4d,0x41,0x41,0x4d,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x72,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x61,0x41,0x41,0x61,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6a,0x42,0x2c,0x45,0x41,0x41,0x47,0x68,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x39,0x5a,0x2c,0x53,0x41,0x41,0x53,0x6b,0x47,0x2c,0x45,0x41,0x41,0x47,0x6c,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x47,0x68,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x46,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x46,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x45,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x47,0x2c,0x45,0x41,0x41,0x45,0x73,0x46,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x78,0x52,0x2c,0x53,0x41,0x41,0x53,0x6d,0x45,0x2c,0x45,0x41,0x41,0x47,0x72,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x61,0x41,0x41,0x61,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x4b,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x65,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x53,0x41,0x41,0x53,0x52,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x47,0x2c,0x4f,0x41,0x43,0x37,0x5a,0x2c,0x4f,0x41,0x44,0x6f,0x61,0x70,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x65,0x41,0x43,0x6e,0x64,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x44,0x69,0x65,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x61,0x41,0x43,0x6c,0x66,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x59,0x2c,0x63,0x41,0x41,0x63,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x71,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x36,0x42,0x2c,0x51,0x41,0x41,0x74,0x42,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x63,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x47,0x2c,0x45,0x41,0x41,0x47,0x72,0x47,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x43,0x2c,0x45,0x41,0x41,0x47,0x76,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x47,0x2c,0x53,0x41,0x41,0x53,0x78,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x45,0x41,0x41,0x47,0x72,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x33,0x4d,0x2c,0x53,0x41,0x41,0x53,0x77,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x53,0x41,0x41,0x53,0x52,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x6b,0x42,0x2f,0x46,0x2c,0x47,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x51,0x41,0x41,0x57,0x4c,0x2c,0x61,0x41,0x41,0x61,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x68,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x47,0x2c,0x45,0x41,0x41,0x47,0x70,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x2b,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x59,0x41,0x43,0x74,0x66,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x61,0x41,0x41,0x61,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x47,0x2c,0x45,0x41,0x41,0x47,0x33,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x72,0x61,0x2c,0x53,0x41,0x41,0x53,0x34,0x47,0x2c,0x45,0x41,0x41,0x47,0x35,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x55,0x41,0x41,0x55,0x37,0x47,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x61,0x41,0x41,0x61,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x45,0x74,0x46,0x2c,0x53,0x41,0x41,0x53,0x36,0x47,0x2c,0x45,0x41,0x41,0x47,0x39,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2f,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x47,0x2c,0x63,0x41,0x44,0x76,0x44,0x2c,0x53,0x41,0x41,0x59,0x2f,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x47,0x2c,0x45,0x41,0x41,0x47,0x35,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x51,0x45,0x2c,0x45,0x41,0x41,0x45,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x46,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x68,0x48,0x2c,0x45,0x41,0x41,0x45,0x69,0x48,0x2c,0x59,0x41,0x41,0x59,0x2f,0x46,0x2c,0x55,0x41,0x41,0x55,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x48,0x2c,0x45,0x41,0x41,0x45,0x75,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x68,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x48,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x46,0x2c,0x49,0x41,0x41,0x69,0x4c,0x2c,0x4f,0x41,0x41,0x37,0x4b,0x78,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6b,0x48,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x36,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x7a,0x46,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x48,0x2c,0x57,0x41,0x41,0x57,0x6c,0x48,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x61,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x74,0x48,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x48,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x76,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x47,0x2c,0x63,0x41,0x43,0x78,0x66,0x2c,0x59,0x41,0x41,0x59,0x2f,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x6b,0x44,0x75,0x48,0x2c,0x43,0x41,0x41,0x47,0x78,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x48,0x2c,0x45,0x41,0x41,0x47,0x7a,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x47,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x39,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x48,0x2c,0x57,0x41,0x41,0x65,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x71,0x44,0x2c,0x4f,0x41,0x41,0x6c,0x44,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x46,0x2c,0x45,0x41,0x41,0x47,0x35,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x51,0x41,0x41,0x4f,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x61,0x74,0x42,0x2c,0x49,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x48,0x2c,0x53,0x41,0x41,0x53,0x74,0x48,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x48,0x2c,0x45,0x41,0x41,0x47,0x35,0x48,0x2c,0x47,0x41,0x41,0x77,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x78,0x44,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x63,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x63,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x64,0x2c,0x45,0x41,0x41,0x45,0x36,0x48,0x2c,0x65,0x41,0x41,0x65,0x37,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x70,0x61,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2b,0x48,0x2c,0x6f,0x42,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x4f,0x43,0x2c,0x6b,0x42,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x4f,0x4e,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x4f,0x44,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x48,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x47,0x70,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x61,0x41,0x41,0x61,0x7a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x51,0x41,0x41,0x51,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x51,0x41,0x41,0x51,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x48,0x2c,0x65,0x41,0x41,0x65,0x39,0x48,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x65,0x41,0x41,0x65,0x33,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x61,0x41,0x41,0x61,0x6e,0x49,0x2c,0x45,0x41,0x41,0x45,0x6f,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x61,0x41,0x41,0x61,0x72,0x49,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x59,0x2c,0x45,0x41,0x41,0x47,0x76,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x5a,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x55,0x41,0x41,0x69,0x42,0x39,0x45,0x2c,0x45,0x41,0x41,0x47,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x39,0x64,0x2c,0x53,0x41,0x41,0x53,0x75,0x49,0x2c,0x45,0x41,0x41,0x47,0x78,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x49,0x2c,0x45,0x41,0x41,0x47,0x76,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x43,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x73,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x48,0x2c,0x4b,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x7a,0x48,0x2c,0x47,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x7a,0x48,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x7a,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x38,0x42,0x2c,0x59,0x41,0x41,0x33,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x67,0x42,0x6e,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x53,0x41,0x41,0x53,0x73,0x48,0x2c,0x47,0x41,0x41,0x47,0x7a,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x73,0x48,0x2c,0x47,0x41,0x41,0x47,0x7a,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x45,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x48,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x48,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x43,0x6c,0x61,0x2c,0x53,0x41,0x41,0x53,0x55,0x2c,0x45,0x41,0x41,0x47,0x31,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x55,0x41,0x41,0x55,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x4b,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x47,0x2c,0x61,0x41,0x41,0x61,0x6e,0x49,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x51,0x41,0x41,0x51,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x48,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x61,0x41,0x41,0x61,0x68,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x54,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x51,0x41,0x41,0x63,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x49,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x7a,0x56,0x2c,0x53,0x41,0x41,0x53,0x75,0x49,0x2c,0x47,0x41,0x41,0x47,0x7a,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x44,0x2c,0x47,0x41,0x41,0x47,0x32,0x48,0x2c,0x45,0x41,0x41,0x47,0x35,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x49,0x2c,0x49,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x6a,0x49,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x47,0x2c,0x61,0x41,0x41,0x61,0x72,0x49,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x65,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x2f,0x48,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2f,0x48,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x49,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x51,0x41,0x43,0x37,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x5a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x4a,0x2c,0x51,0x41,0x41,0x57,0x2f,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x49,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2b,0x49,0x2c,0x57,0x41,0x41,0x57,0x78,0x48,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2b,0x49,0x2c,0x53,0x41,0x41,0x53,0x78,0x48,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x67,0x4a,0x2c,0x69,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x6c,0x42,0x68,0x4a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x47,0x2c,0x45,0x41,0x41,0x47,0x7a,0x47,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x53,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x47,0x2c,0x51,0x41,0x41,0x51,0x7a,0x48,0x2c,0x45,0x41,0x41,0x69,0x44,0x2c,0x4f,0x41,0x41,0x39,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x48,0x2c,0x55,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x47,0x7a,0x48,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x48,0x2c,0x69,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x4a,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x48,0x2c,0x57,0x41,0x41,0x57,0x6c,0x4a,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x4a,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x78,0x59,0x2c,0x53,0x41,0x41,0x53,0x47,0x2c,0x47,0x41,0x41,0x47,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x48,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x4f,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x4f,0x71,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x47,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x4a,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x2b,0x42,0x2c,0x47,0x41,0x41,0x39,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x4a,0x2c,0x53,0x41,0x41,0x53,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x61,0x41,0x41,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x36,0x49,0x2c,0x47,0x41,0x41,0x47,0x31,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x47,0x2c,0x61,0x41,0x41,0x61,0x31,0x42,0x2c,0x45,0x41,0x41,0x47,0x7a,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x6e,0x59,0x2c,0x53,0x41,0x41,0x53,0x73,0x4a,0x2c,0x47,0x41,0x41,0x47,0x78,0x4a,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x46,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x48,0x2c,0x4b,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x4b,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x51,0x41,0x41,0x51,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x49,0x2c,0x63,0x41,0x41,0x63,0x6a,0x49,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x65,0x41,0x41,0x65,0x2f,0x48,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x61,0x41,0x41,0x61,0x2f,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x7a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x49,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x4a,0x2c,0x59,0x41,0x41,0x59,0x7a,0x4a,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x47,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x4a,0x2c,0x47,0x41,0x41,0x47,0x33,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x71,0x43,0x41,0x41,0x71,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x2c,0x43,0x41,0x43,0x37,0x63,0x2c,0x53,0x41,0x41,0x53,0x34,0x4a,0x2c,0x47,0x41,0x41,0x47,0x35,0x4a,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x4a,0x2c,0x47,0x41,0x41,0x47,0x31,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x68,0x4b,0x2c,0x49,0x41,0x41,0x49,0x36,0x4a,0x2c,0x47,0x41,0x41,0x65,0x37,0x4a,0x2c,0x47,0x41,0x41,0x5a,0x38,0x4a,0x2c,0x49,0x41,0x41,0x59,0x39,0x4a,0x2c,0x47,0x41,0x41,0x73,0x4a,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4a,0x2c,0x63,0x41,0x41,0x63,0x2c,0x63,0x41,0x41,0x63,0x2f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2f,0x4a,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x32,0x46,0x2c,0x4b,0x41,0x41,0x31,0x46,0x34,0x4a,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x2f,0x49,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x55,0x69,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x51,0x2f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x67,0x4b,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x61,0x6a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x34,0x4a,0x2c,0x47,0x41,0x41,0x47,0x4d,0x2c,0x57,0x41,0x41,0x57,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x70,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x71,0x4b,0x2c,0x59,0x41,0x41,0x59,0x70,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x76,0x62,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x79,0x42,0x41,0x41,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x4b,0x2c,0x47,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x43,0x74,0x4b,0x2c,0x53,0x41,0x41,0x53,0x77,0x4b,0x2c,0x47,0x41,0x41,0x47,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x6a,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x76,0x4b,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x77,0x42,0x2c,0x59,0x41,0x41,0x64,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x55,0x41,0x41,0x55,0x31,0x4b,0x2c,0x45,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x4a,0x2c,0x59,0x41,0x41,0x59,0x7a,0x4a,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x74,0x48,0x2c,0x49,0x41,0x41,0x49,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x79,0x42,0x41,0x41,0x77,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6b,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x69,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x57,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x65,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x67,0x42,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x69,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x57,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x43,0x6c,0x66,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x69,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x65,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x36,0x48,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4e,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4a,0x2c,0x65,0x41,0x41,0x65,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x34,0x4b,0x2c,0x47,0x41,0x41,0x47,0x35,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x7a,0x62,0x2c,0x53,0x41,0x41,0x53,0x79,0x4e,0x2c,0x47,0x41,0x41,0x47,0x31,0x4e,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x4b,0x41,0x41,0x6c,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x4e,0x2c,0x4d,0x41,0x41,0x6d,0x42,0x31,0x4e,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x4e,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x4d,0x2c,0x45,0x41,0x41,0x45,0x67,0x4d,0x2c,0x47,0x41,0x41,0x47,0x76,0x4e,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x59,0x41,0x41,0x59,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x4e,0x2c,0x59,0x41,0x41,0x59,0x33,0x4e,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x44,0x59,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x44,0x2c,0x49,0x41,0x41,0x49,0x72,0x49,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x4e,0x2c,0x47,0x41,0x41,0x47,0x6a,0x4c,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x70,0x4c,0x2c,0x63,0x41,0x41,0x63,0x33,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x70,0x44,0x2c,0x47,0x41,0x41,0x47,0x33,0x4b,0x2c,0x47,0x41,0x41,0x47,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x35,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x43,0x68,0x49,0x2c,0x49,0x41,0x41,0x49,0x69,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6e,0x4a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6f,0x4a,0x2c,0x55,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x43,0x6c,0x54,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6a,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x71,0x4a,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x57,0x41,0x41,0x57,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x31,0x4e,0x2c,0x45,0x41,0x41,0x45,0x30,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6c,0x57,0x2c,0x53,0x41,0x41,0x53,0x6f,0x50,0x2c,0x47,0x41,0x41,0x47,0x6e,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x4e,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x33,0x4e,0x2c,0x45,0x41,0x41,0x45,0x6d,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x50,0x2c,0x47,0x41,0x41,0x36,0x46,0x2c,0x4f,0x41,0x41,0x31,0x46,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x51,0x41,0x41,0x51,0x76,0x50,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x59,0x41,0x41,0x59,0x33,0x4f,0x2c,0x51,0x41,0x41,0x53,0x34,0x4f,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x7a,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x50,0x2c,0x79,0x42,0x41,0x41,0x67,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x50,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x31,0x50,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x43,0x70,0x63,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x47,0x41,0x41,0x47,0x2f,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x32,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x47,0x41,0x41,0x47,0x68,0x51,0x2c,0x47,0x41,0x41,0x47,0x30,0x50,0x2c,0x47,0x41,0x41,0x47,0x33,0x50,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x51,0x2c,0x47,0x41,0x41,0x47,0x6c,0x51,0x2c,0x47,0x41,0x41,0x47,0x34,0x50,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x47,0x41,0x41,0x47,0x36,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x37,0x50,0x2c,0x47,0x41,0x41,0x47,0x34,0x50,0x2c,0x47,0x41,0x41,0x47,0x35,0x50,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x50,0x2c,0x45,0x41,0x41,0x45,0x34,0x50,0x2c,0x47,0x41,0x41,0x47,0x33,0x50,0x2c,0x45,0x41,0x41,0x45,0x34,0x50,0x2c,0x47,0x41,0x41,0x6f,0x42,0x2c,0x47,0x41,0x41,0x6a,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x39,0x50,0x2c,0x47,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x49,0x41,0x41,0x49,0x38,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x50,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x51,0x2c,0x47,0x41,0x41,0x47,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x71,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x51,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x57,0x71,0x51,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x58,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x4d,0x41,0x41,0x47,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x68,0x62,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2f,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x59,0x41,0x41,0x71,0x42,0x33,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x59,0x41,0x41,0x62,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x43,0x6c,0x65,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x51,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x39,0x50,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2b,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x6d,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x7a,0x4a,0x2c,0x49,0x41,0x41,0x49,0x2c,0x57,0x41,0x41,0x57,0x77,0x4a,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x37,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x50,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x39,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x51,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x51,0x2c,0x49,0x41,0x41,0x47,0x30,0x51,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x49,0x2c,0x47,0x41,0x41,0x47,0x39,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x48,0x2c,0x55,0x41,0x41,0x55,0x32,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x4c,0x2c,0x47,0x41,0x41,0x47,0x70,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x50,0x2c,0x51,0x41,0x41,0x51,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x4c,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x6a,0x52,0x2c,0x47,0x41,0x41,0x47,0x6b,0x52,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x75,0x52,0x2c,0x47,0x41,0x41,0x47,0x76,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6f,0x4c,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x4c,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6e,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x43,0x6a,0x57,0x2c,0x53,0x41,0x41,0x53,0x71,0x52,0x2c,0x47,0x41,0x41,0x47,0x78,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x51,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x6a,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x53,0x32,0x52,0x2c,0x53,0x41,0x41,0x63,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x51,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x61,0x41,0x41,0x61,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x52,0x2c,0x47,0x41,0x41,0x47,0x35,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x73,0x45,0x2c,0x47,0x41,0x41,0x78,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x49,0x41,0x41,0x6b,0x42,0x2c,0x51,0x41,0x41,0x64,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x61,0x41,0x41,0x71,0x42,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x77,0x52,0x2c,0x47,0x41,0x41,0x47,0x78,0x52,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x45,0x31,0x53,0x2c,0x53,0x41,0x41,0x53,0x69,0x53,0x2c,0x47,0x41,0x41,0x47,0x68,0x53,0x2c,0x47,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x44,0x74,0x4e,0x2c,0x53,0x41,0x41,0x59,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x47,0x41,0x41,0x47,0x78,0x52,0x2c,0x49,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x64,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x51,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x51,0x41,0x41,0x51,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x52,0x2c,0x47,0x41,0x41,0x47,0x74,0x51,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x51,0x2c,0x47,0x41,0x41,0x47,0x74,0x51,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x53,0x41,0x41,0x53,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x49,0x41,0x41,0x49,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x47,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x43,0x35,0x66,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x6f,0x45,0x2c,0x49,0x41,0x41,0x49,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x47,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x59,0x41,0x41,0x59,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x43,0x2c,0x55,0x41,0x41,0x55,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x6b,0x42,0x6d,0x53,0x2c,0x43,0x41,0x41,0x47,0x70,0x53,0x2c,0x49,0x41,0x41,0x6d,0x42,0x71,0x53,0x2c,0x47,0x41,0x41,0x47,0x72,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x53,0x2c,0x47,0x41,0x41,0x47,0x72,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x53,0x2c,0x47,0x41,0x41,0x47,0x72,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x31,0x58,0x2c,0x49,0x41,0x41,0x49,0x49,0x2c,0x47,0x41,0x41,0x47,0x78,0x53,0x2c,0x45,0x41,0x41,0x47,0x79,0x53,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x53,0x2c,0x45,0x41,0x41,0x47,0x32,0x53,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x53,0x2c,0x45,0x41,0x41,0x47,0x36,0x53,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x53,0x2c,0x45,0x41,0x41,0x47,0x2b,0x53,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x43,0x2c,0x47,0x41,0x41,0x45,0x68,0x54,0x2c,0x45,0x41,0x41,0x47,0x69,0x54,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x54,0x2c,0x45,0x41,0x41,0x47,0x6d,0x54,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x54,0x2c,0x45,0x41,0x41,0x47,0x71,0x54,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x54,0x2c,0x45,0x41,0x41,0x47,0x75,0x54,0x2c,0x38,0x42,0x41,0x41,0x38,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x54,0x2c,0x45,0x41,0x41,0x47,0x79,0x54,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x54,0x2c,0x45,0x41,0x41,0x47,0x32,0x54,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x45,0x41,0x41,0x47,0x36,0x54,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x43,0x76,0x56,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4d,0x41,0x41,0x69,0x43,0x2c,0x53,0x41,0x41,0x59,0x68,0x55,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x50,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x69,0x55,0x2c,0x47,0x41,0x41,0x47,0x6a,0x55,0x2c,0x47,0x41,0x41,0x47,0x6b,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x2f,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x49,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x4b,0x2c,0x49,0x41,0x41,0x34,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x43,0x37,0x48,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x51,0x41,0x41,0x46,0x41,0x2c,0x45,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x55,0x41,0x41,0x46,0x41,0x2c,0x45,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x57,0x41,0x43,0x7a,0x67,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x55,0x2c,0x47,0x41,0x41,0x47,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x76,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x68,0x54,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x59,0x41,0x41,0x59,0x68,0x54,0x2c,0x45,0x41,0x41,0x49,0x2c,0x55,0x41,0x41,0x46,0x7a,0x42,0x2c,0x45,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x53,0x2c,0x47,0x41,0x41,0x47,0x31,0x4f,0x2c,0x47,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4c,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x55,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x53,0x2c,0x47,0x41,0x41,0x47,0x37,0x53,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x50,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x47,0x41,0x41,0x51,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x53,0x2c,0x47,0x41,0x41,0x47,0x35,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x53,0x2c,0x47,0x41,0x41,0x47,0x37,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x4b,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x46,0x43,0x2c,0x49,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x30,0x43,0x2c,0x47,0x41,0x41,0x78,0x43,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x46,0x74,0x42,0x2c,0x47,0x41,0x41,0x34,0x42,0x2c,0x4b,0x41,0x41,0x74,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x55,0x2c,0x67,0x42,0x41,0x41,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x35,0x55,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x55,0x2c,0x63,0x41,0x41,0x63,0x35,0x55,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x63,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x62,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x34,0x54,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x49,0x41,0x41,0x55,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x76,0x63,0x2c,0x53,0x41,0x41,0x53,0x73,0x54,0x2c,0x47,0x41,0x41,0x47,0x39,0x55,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x75,0x4a,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x72,0x4e,0x2c,0x53,0x41,0x41,0x53,0x38,0x55,0x2c,0x47,0x41,0x41,0x47,0x2f,0x55,0x2c,0x47,0x41,0x41,0x67,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x70,0x43,0x41,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x57,0x41,0x41,0x68,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x63,0x41,0x41,0x73,0x43,0x7a,0x55,0x2c,0x45,0x41,0x41,0x49,0x2c,0x57,0x41,0x41,0x46,0x41,0x2c,0x45,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x56,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x68,0x56,0x2c,0x45,0x41,0x41,0x45,0x71,0x55,0x2c,0x47,0x41,0x41,0x6f,0x43,0x2c,0x4f,0x41,0x41,0x31,0x42,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x66,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x71,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x57,0x72,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x56,0x2c,0x47,0x41,0x41,0x47,0x6a,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x33,0x61,0x2c,0x53,0x41,0x41,0x53,0x69,0x56,0x2c,0x47,0x41,0x41,0x47,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x63,0x41,0x41,0x63,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x31,0x55,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x47,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x59,0x41,0x41,0x57,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x36,0x54,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x49,0x41,0x41,0x51,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x48,0x2c,0x53,0x41,0x41,0x53,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x70,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x55,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x55,0x2c,0x63,0x41,0x41,0x63,0x33,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x34,0x54,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x56,0x2c,0x47,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x62,0x41,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x55,0x41,0x41,0x46,0x41,0x2c,0x47,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x56,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x50,0x41,0x41,0x36,0x50,0x2f,0x54,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x43,0x68,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x67,0x55,0x2c,0x47,0x41,0x41,0x47,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x38,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x47,0x41,0x41,0x47,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x75,0x57,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x4c,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x75,0x57,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x43,0x6e,0x54,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x57,0x2c,0x63,0x41,0x41,0x63,0x68,0x56,0x2c,0x47,0x41,0x41,0x53,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x31,0x57,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x61,0x41,0x41,0x61,0x31,0x57,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x59,0x41,0x41,0x59,0x68,0x56,0x2c,0x45,0x41,0x41,0x45,0x6f,0x56,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x72,0x56,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x49,0x41,0x41,0x59,0x2c,0x51,0x41,0x41,0x52,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x47,0x41,0x41,0x47,0x39,0x50,0x2c,0x4b,0x41,0x41,0x61,0x75,0x56,0x2c,0x47,0x41,0x41,0x47,0x76,0x56,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x57,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x56,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x4e,0x2c,0x51,0x41,0x41,0x51,0x6e,0x4d,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x4f,0x2c,0x47,0x41,0x41,0x55,0x7a,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x45,0x70,0x52,0x2c,0x53,0x41,0x41,0x53,0x2b,0x57,0x2c,0x47,0x41,0x41,0x47,0x2f,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x57,0x2c,0x47,0x41,0x41,0x47,0x68,0x58,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x52,0x2c,0x47,0x41,0x41,0x47,0x76,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x52,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x47,0x41,0x41,0x47,0x31,0x52,0x2c,0x49,0x41,0x41,0x34,0x44,0x2c,0x4f,0x41,0x41,0x2f,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x31,0x57,0x2c,0x4f,0x41,0x41,0x45,0x30,0x56,0x2c,0x47,0x41,0x41,0x47,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x69,0x58,0x2c,0x55,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x43,0x2c,0x51,0x41,0x41,0x51,0x4e,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x61,0x41,0x41,0x6d,0x45,0x2c,0x59,0x41,0x41,0x72,0x44,0x6c,0x58,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x7a,0x57,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x6e,0x58,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x6c,0x54,0x2c,0x53,0x41,0x41,0x53,0x53,0x2c,0x47,0x41,0x41,0x47,0x70,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x31,0x57,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x57,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x58,0x2c,0x47,0x41,0x41,0x47,0x72,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x57,0x2c,0x61,0x41,0x41,0x61,0x35,0x57,0x2c,0x45,0x41,0x41,0x45,0x36,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x35,0x57,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x57,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x57,0x2c,0x45,0x41,0x41,0x69,0x47,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x50,0x2c,0x4b,0x41,0x41,0x61,0x73,0x56,0x2c,0x47,0x41,0x41,0x47,0x76,0x56,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x7a,0x57,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x33,0x48,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x74,0x42,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x57,0x2c,0x61,0x41,0x41,0x77,0x42,0x7a,0x50,0x2c,0x59,0x41,0x41,0x59,0x2f,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6d,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x4e,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x48,0x2c,0x63,0x41,0x41,0x63,0x39,0x56,0x2c,0x47,0x41,0x41,0x47,0x36,0x4e,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x30,0x44,0x70,0x50,0x2c,0x45,0x41,0x41,0x45,0x73,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x58,0x2c,0x47,0x41,0x41,0x47,0x70,0x58,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x54,0x2c,0x51,0x41,0x41,0x51,0x69,0x56,0x2c,0x49,0x41,0x41,0x49,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x51,0x41,0x41,0x51,0x69,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x6e,0x66,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x47,0x41,0x41,0x47,0x31,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x59,0x41,0x41,0x59,0x31,0x57,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x66,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x39,0x56,0x2c,0x45,0x41,0x41,0x47,0x79,0x53,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x7a,0x53,0x2c,0x45,0x41,0x41,0x47,0x79,0x54,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x6b,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x35,0x48,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x47,0x41,0x41,0x47,0x33,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x58,0x2c,0x47,0x41,0x41,0x47,0x7a,0x58,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x56,0x2c,0x47,0x41,0x41,0x47,0x7a,0x56,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x73,0x58,0x2c,0x47,0x41,0x41,0x47,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x37,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x7a,0x56,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x55,0x2c,0x47,0x41,0x41,0x47,0x33,0x56,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x59,0x41,0x41,0x59,0x33,0x57,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x79,0x46,0x2c,0x49,0x41,0x41,0x78,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x62,0x2c,0x49,0x41,0x41,0x49,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x56,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x57,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x57,0x2c,0x47,0x41,0x41,0x47,0x69,0x57,0x2c,0x47,0x41,0x41,0x47,0x31,0x54,0x2c,0x51,0x41,0x41,0x51,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x51,0x41,0x41,0x51,0x74,0x43,0x2c,0x47,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x68,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x4b,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x55,0x2c,0x47,0x41,0x41,0x47,0x6c,0x57,0x2c,0x49,0x41,0x41,0x4b,0x79,0x57,0x2c,0x59,0x41,0x41,0x59,0x33,0x57,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x50,0x2c,0x47,0x41,0x41,0x47,0x68,0x57,0x2c,0x51,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x52,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x59,0x4f,0x2c,0x57,0x41,0x41,0x59,0x49,0x2c,0x47,0x41,0x41,0x47,0x37,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x57,0x2c,0x57,0x41,0x41,0x57,0x50,0x2c,0x47,0x41,0x41,0x47,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x4b,0x2c,0x47,0x41,0x41,0x47,0x6e,0x55,0x2c,0x45,0x41,0x41,0x47,0x6f,0x55,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x35,0x61,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x54,0x2c,0x47,0x41,0x41,0x45,0x33,0x54,0x2c,0x45,0x41,0x41,0x45,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x4a,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x36,0x54,0x2c,0x47,0x41,0x41,0x45,0x35,0x54,0x2c,0x45,0x41,0x41,0x45,0x6d,0x57,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x74,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x57,0x2c,0x47,0x41,0x41,0x47,0x6c,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x54,0x2c,0x47,0x41,0x41,0x45,0x33,0x54,0x2c,0x45,0x41,0x41,0x45,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x4a,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x36,0x54,0x2c,0x47,0x41,0x41,0x45,0x35,0x54,0x2c,0x45,0x41,0x41,0x45,0x6d,0x57,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x57,0x41,0x41,0x57,0x74,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x4f,0x2c,0x53,0x41,0x41,0x53,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x73,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x57,0x2c,0x45,0x41,0x41,0x45,0x34,0x56,0x2c,0x47,0x41,0x41,0x47,0x72,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x57,0x2c,0x47,0x41,0x41,0x47,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x57,0x2c,0x47,0x41,0x41,0x47,0x6c,0x59,0x2c,0x47,0x41,0x41,0x47,0x6f,0x57,0x2c,0x47,0x41,0x41,0x47,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x4e,0x74,0x46,0x2c,0x53,0x41,0x41,0x59,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x56,0x2c,0x47,0x41,0x41,0x47,0x57,0x2c,0x47,0x41,0x41,0x47,0x58,0x2c,0x47,0x41,0x41,0x47,0x39,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x55,0x2c,0x47,0x41,0x41,0x47,0x55,0x2c,0x47,0x41,0x41,0x47,0x56,0x2c,0x47,0x41,0x41,0x47,0x2f,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x55,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x47,0x41,0x41,0x47,0x54,0x2c,0x47,0x41,0x41,0x47,0x68,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x55,0x41,0x41,0x6b,0x44,0x2c,0x4f,0x41,0x41,0x78,0x43,0x50,0x2c,0x47,0x41,0x41,0x47,0x78,0x51,0x2c,0x49,0x41,0x41,0x49,0x2f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x47,0x41,0x41,0x47,0x52,0x2c,0x47,0x41,0x41,0x47,0x2f,0x4f,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x55,0x41,0x41,0x55,0x4c,0x2c,0x47,0x41,0x41,0x47,0x31,0x51,0x2c,0x49,0x41,0x41,0x49,0x2f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x47,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x6a,0x50,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x4d,0x31,0x51,0x34,0x57,0x2c,0x43,0x41,0x41,0x47,0x35,0x57,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x57,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x46,0x76,0x42,0x2c,0x49,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x6f,0x57,0x2c,0x47,0x41,0x41,0x47,0x7a,0x49,0x2c,0x51,0x41,0x41,0x51,0x35,0x4e,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x4f,0x2c,0x47,0x41,0x41,0x47,0x74,0x4f,0x2c,0x47,0x41,0x41,0x30,0x44,0x2c,0x47,0x41,0x41,0x76,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x54,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x72,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x4b,0x41,0x41,0x61,0x32,0x57,0x2c,0x47,0x41,0x41,0x47,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x57,0x2c,0x47,0x41,0x41,0x47,0x6c,0x59,0x2c,0x47,0x41,0x41,0x4d,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x48,0x2c,0x47,0x41,0x41,0x47,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x43,0x70,0x55,0x2c,0x53,0x41,0x41,0x53,0x66,0x2c,0x47,0x41,0x41,0x47,0x72,0x58,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x32,0x42,0x2c,0x47,0x41,0x41,0x78,0x42,0x34,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x58,0x70,0x59,0x2c,0x45,0x41,0x41,0x45,0x67,0x58,0x2c,0x47,0x41,0x41,0x56,0x68,0x58,0x2c,0x45,0x41,0x41,0x45,0x73,0x50,0x2c,0x47,0x41,0x41,0x47,0x39,0x4e,0x2c,0x4b,0x41,0x41,0x75,0x42,0x2c,0x47,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x52,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x47,0x41,0x41,0x47,0x78,0x52,0x2c,0x49,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x52,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x58,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x47,0x41,0x41,0x47,0x33,0x52,0x2c,0x49,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x43,0x2c,0x51,0x41,0x41,0x51,0x4e,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6a,0x58,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4c,0x6f,0x59,0x2c,0x47,0x41,0x41,0x47,0x70,0x59,0x2c,0x45,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x37,0x53,0x2c,0x53,0x41,0x41,0x53,0x75,0x59,0x2c,0x47,0x41,0x41,0x47,0x76,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x65,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x65,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x43,0x70,0x71,0x43,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x54,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x59,0x2c,0x45,0x41,0x41,0x6b,0x42,0x77,0x42,0x2c,0x45,0x41,0x41,0x68,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x59,0x2c,0x47,0x41,0x41,0x47,0x76,0x59,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4f,0x41,0x41,0x53,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x2b,0x57,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x37,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x51,0x2c,0x47,0x41,0x41,0x47,0x39,0x4f,0x2c,0x59,0x41,0x41,0x59,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x72,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x58,0x2c,0x47,0x41,0x41,0x47,0x6a,0x58,0x2c,0x45,0x41,0x41,0x45,0x6f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x78,0x59,0x2c,0x53,0x41,0x41,0x53,0x6f,0x58,0x2c,0x47,0x41,0x41,0x47,0x35,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x51,0x41,0x41,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x76,0x45,0x2c,0x61,0x41,0x41,0x61,0x37,0x59,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x62,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x59,0x2c,0x57,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x59,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x35,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x36,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x6c,0x48,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x58,0x2c,0x57,0x41,0x41,0x57,0x6a,0x5a,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x58,0x2c,0x59,0x41,0x41,0x59,0x31,0x58,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x55,0x2c,0x59,0x41,0x41,0x59,0x68,0x56,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x4e,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x58,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x70,0x5a,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x42,0x2c,0x65,0x41,0x41,0x65,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x49,0x41,0x41,0x67,0x49,0x2c,0x4f,0x41,0x41,0x35,0x48,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x58,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x58,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x35,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x58,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x4b,0x35,0x58,0x2c,0x45,0x41,0x41,0x45,0x36,0x58,0x2c,0x61,0x41,0x41,0x61,0x52,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x58,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x52,0x2c,0x47,0x41,0x41,0x55,0x70,0x58,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x39,0x45,0x2c,0x4f,0x41,0x44,0x2b,0x45,0x6b,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x75,0x59,0x2c,0x65,0x41,0x41,0x65,0x2c,0x57,0x41,0x41,0x57,0x37,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x58,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x5a,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x55,0x2c,0x59,0x41,0x41,0x59,0x31,0x57,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x5a,0x2c,0x65,0x41,0x41,0x65,0x7a,0x5a,0x2c,0x45,0x41,0x41,0x45,0x79,0x5a,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x7a,0x5a,0x2c,0x45,0x41,0x41,0x45,0x75,0x5a,0x2c,0x63,0x41,0x43,0x37,0x65,0x76,0x5a,0x2c,0x45,0x41,0x41,0x45,0x75,0x5a,0x2c,0x61,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x49,0x33,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x58,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x4e,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x54,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x74,0x59,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x55,0x2c,0x59,0x41,0x41,0x59,0x31,0x57,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x59,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x74,0x59,0x2c,0x45,0x41,0x41,0x45,0x73,0x59,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x74,0x59,0x2c,0x45,0x41,0x41,0x45,0x30,0x5a,0x2c,0x65,0x41,0x41,0x65,0x31,0x5a,0x2c,0x45,0x41,0x41,0x45,0x30,0x5a,0x2c,0x63,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x49,0x39,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x58,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x54,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x59,0x2c,0x51,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x61,0x41,0x41,0x61,0x62,0x2c,0x4b,0x41,0x41,0x59,0x39,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x52,0x2c,0x49,0x41,0x41,0x6f,0x4c,0x34,0x5a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x74,0x4c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x70,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x61,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x68,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x65,0x2c,0x49,0x41,0x41,0x49,0x53,0x2c,0x47,0x41,0x41,0x47,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x49,0x41,0x41,0x61,0x49,0x2c,0x47,0x41,0x41,0x47,0x2f,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x53,0x35,0x62,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x62,0x2c,0x63,0x41,0x41,0x63,0x35,0x62,0x2c,0x45,0x41,0x41,0x45,0x36,0x62,0x2c,0x63,0x41,0x41,0x63,0x37,0x62,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x57,0x41,0x41,0x57,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x38,0x62,0x2c,0x55,0x41,0x41,0x55,0x39,0x62,0x2c,0x45,0x41,0x41,0x45,0x36,0x62,0x2c,0x59,0x41,0x41,0x59,0x37,0x62,0x2c,0x45,0x41,0x41,0x45,0x34,0x62,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x2f,0x62,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x47,0x2c,0x63,0x41,0x43,0x33,0x65,0x41,0x2c,0x45,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x62,0x2c,0x57,0x41,0x41,0x55,0x2f,0x62,0x2c,0x49,0x41,0x41,0x49,0x2b,0x5a,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x2f,0x5a,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x58,0x2c,0x47,0x41,0x41,0x47,0x37,0x5a,0x2c,0x45,0x41,0x41,0x45,0x38,0x61,0x2c,0x51,0x41,0x41,0x51,0x66,0x2c,0x47,0x41,0x41,0x47,0x65,0x2c,0x51,0x41,0x41,0x51,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2b,0x61,0x2c,0x51,0x41,0x41,0x51,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2f,0x5a,0x2c,0x47,0x41,0x41,0x55,0x36,0x5a,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x68,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x63,0x2c,0x55,0x41,0x41,0x55,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x44,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x49,0x41,0x41,0x69,0x43,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x37,0x42,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x73,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x34,0x43,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x44,0x2c,0x47,0x41,0x41,0x39,0x42,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x6d,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x30,0x45,0x53,0x2c,0x47,0x41,0x41,0x47,0x70,0x44,0x2c,0x47,0x41,0x41,0x35,0x44,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x73,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x63,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x30,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x53,0x31,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x63,0x2c,0x63,0x41,0x41,0x63,0x37,0x62,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x62,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x44,0x2c,0x47,0x41,0x41,0x47,0x77,0x44,0x2c,0x49,0x41,0x41,0x79,0x42,0x47,0x2c,0x47,0x41,0x41,0x47,0x33,0x44,0x2c,0x47,0x41,0x41,0x72,0x42,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x36,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x63,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x43,0x78,0x66,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x43,0x74,0x66,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x55,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x57,0x2c,0x45,0x41,0x41,0x45,0x75,0x62,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x76,0x62,0x2c,0x45,0x41,0x41,0x45,0x75,0x62,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x78,0x62,0x2c,0x4d,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x64,0x2c,0x47,0x41,0x41,0x47,0x35,0x64,0x2c,0x4f,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x62,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x68,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x30,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x6e,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x47,0x41,0x41,0x47,0x39,0x63,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x65,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x52,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x59,0x2c,0x47,0x41,0x41,0x47,0x35,0x59,0x2c,0x49,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x51,0x6f,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x61,0x41,0x41,0x61,0x72,0x65,0x2c,0x47,0x41,0x41,0x49,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x62,0x2c,0x47,0x41,0x41,0x47,0x33,0x64,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x55,0x41,0x41,0x55,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x6e,0x44,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x69,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6a,0x44,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x39,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x57,0x2c,0x47,0x41,0x41,0x47,0x35,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x37,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x53,0x41,0x41,0x53,0x31,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x43,0x37,0x65,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x57,0x2c,0x47,0x41,0x41,0x47,0x35,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x31,0x46,0x2c,0x47,0x41,0x41,0x47,0x69,0x46,0x2c,0x49,0x41,0x41,0x69,0x49,0x55,0x2c,0x47,0x41,0x41,0x47,0x33,0x46,0x2c,0x47,0x41,0x41,0x37,0x48,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x72,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x45,0x71,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x6d,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x47,0x2c,0x47,0x41,0x41,0x72,0x48,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x38,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x43,0x2c,0x4d,0x41,0x41,0x30,0x45,0x69,0x45,0x2c,0x47,0x41,0x41,0x47,0x7a,0x47,0x2c,0x47,0x41,0x41,0x33,0x44,0x6e,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2f,0x58,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x73,0x61,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x63,0x6d,0x44,0x2c,0x47,0x41,0x41,0x47,0x37,0x61,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2b,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x35,0x66,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x35,0x66,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x66,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x6e,0x66,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x39,0x66,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x39,0x66,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x66,0x2c,0x59,0x41,0x41,0x59,0x2c,0x65,0x41,0x41,0x65,0x2f,0x66,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x48,0x2c,0x47,0x41,0x41,0x47,0x30,0x47,0x2c,0x49,0x41,0x41,0x49,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x66,0x2c,0x47,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x66,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x66,0x2c,0x47,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x45,0x2c,0x57,0x41,0x41,0x57,0x77,0x66,0x2c,0x47,0x41,0x41,0x47,0x78,0x66,0x2c,0x53,0x41,0x41,0x53,0x79,0x66,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x66,0x2c,0x47,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x66,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x37,0x66,0x2c,0x4b,0x41,0x41,0x4d,0x79,0x66,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x49,0x2c,0x47,0x41,0x41,0x47,0x74,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x73,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x31,0x57,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6f,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x53,0x2c,0x51,0x41,0x41,0x51,0x33,0x4e,0x2c,0x45,0x41,0x41,0x45,0x34,0x59,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x59,0x2c,0x45,0x41,0x41,0x45,0x34,0x59,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x49,0x2c,0x47,0x41,0x41,0x47,0x37,0x67,0x42,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6a,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x61,0x2c,0x53,0x41,0x41,0x6b,0x43,0x2c,0x53,0x41,0x41,0x53,0x33,0x61,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x69,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x45,0x39,0x51,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x55,0x41,0x41,0x55,0x37,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x53,0x41,0x41,0x53,0x72,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x76,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x6a,0x43,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x4f,0x2c,0x47,0x41,0x41,0x47,0x31,0x4f,0x2c,0x47,0x41,0x41,0x73,0x42,0x2c,0x47,0x41,0x41,0x6e,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x61,0x41,0x41,0x67,0x42,0x47,0x2c,0x53,0x41,0x41,0x53,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x61,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x6a,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x69,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x79,0x48,0x2c,0x45,0x41,0x41,0x54,0x2b,0x61,0x2c,0x47,0x41,0x41,0x47,0x78,0x69,0x42,0x2c,0x49,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x70,0x65,0x2c,0x53,0x41,0x41,0x53,0x79,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x69,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2b,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x67,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x39,0x68,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x66,0x2c,0x61,0x41,0x41,0x61,0x2c,0x55,0x41,0x41,0x55,0x2c,0x57,0x41,0x41,0x57,0x75,0x66,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x48,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x68,0x42,0x2c,0x53,0x41,0x41,0x53,0x79,0x66,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x45,0x7a,0x66,0x2c,0x53,0x41,0x41,0x53,0x79,0x66,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x5a,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x61,0x2c,0x59,0x41,0x41,0x59,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x43,0x2c,0x49,0x41,0x41,0x49,0x62,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x63,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x63,0x41,0x41,0x63,0x73,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x50,0x2c,0x47,0x41,0x41,0x47,0x74,0x50,0x2c,0x49,0x41,0x41,0x49,0x77,0x51,0x2c,0x47,0x41,0x41,0x47,0x36,0x52,0x2c,0x47,0x41,0x41,0x47,0x70,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x2f,0x62,0x2c,0x53,0x41,0x41,0x53,0x69,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x46,0x2c,0x47,0x41,0x41,0x47,0x2b,0x69,0x42,0x2c,0x4b,0x41,0x41,0x55,0x58,0x2c,0x47,0x41,0x41,0x47,0x6c,0x69,0x42,0x2c,0x47,0x41,0x41,0x52,0x69,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x69,0x42,0x2c,0x47,0x41,0x41,0x55,0x6b,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x6a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x70,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x69,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x74,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6e,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x4f,0x2c,0x47,0x41,0x41,0x35,0x47,0x2c,0x53,0x41,0x41,0x59,0x70,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x74,0x57,0x2c,0x53,0x41,0x41,0x53,0x75,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x4e,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x4e,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x53,0x41,0x41,0x53,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x52,0x2c,0x45,0x41,0x41,0x47,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x74,0x55,0x2c,0x53,0x41,0x41,0x53,0x30,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x77,0x42,0x75,0x42,0x2c,0x45,0x41,0x41,0x70,0x42,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4a,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x59,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x7a,0x42,0x6c,0x4a,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4a,0x2c,0x59,0x41,0x41,0x59,0x74,0x4a,0x2c,0x4f,0x41,0x41,0x55,0x4a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x30,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x78,0x50,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x4f,0x44,0x2c,0x49,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x59,0x41,0x41,0x59,0x7a,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x53,0x41,0x41,0x53,0x6f,0x5a,0x2c,0x47,0x41,0x41,0x47,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x50,0x2c,0x59,0x41,0x41,0x59,0x2c,0x61,0x41,0x41,0x61,0x31,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6a,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x6b,0x42,0x2c,0x34,0x42,0x41,0x41,0x77,0x44,0x2c,0x47,0x41,0x41,0x37,0x42,0x68,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6b,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2f,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x43,0x41,0x43,0x39,0x5a,0x2c,0x53,0x41,0x41,0x53,0x67,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6a,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x5a,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x49,0x41,0x41,0x4b,0x33,0x48,0x2c,0x61,0x41,0x41,0x61,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x68,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x35,0x46,0x2c,0x53,0x41,0x41,0x53,0x36,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x47,0x41,0x41,0x2f,0x42,0x35,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x42,0x2c,0x65,0x41,0x41,0x67,0x43,0x72,0x6a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x62,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x55,0x41,0x41,0x55,0x37,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x47,0x2c,0x53,0x41,0x41,0x53,0x72,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x61,0x41,0x41,0x61,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x6b,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x43,0x78,0x61,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x6b,0x42,0x2c,0x59,0x41,0x41,0x59,0x68,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x78,0x6b,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x49,0x2c,0x65,0x41,0x41,0x65,0x6d,0x62,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x49,0x2c,0x63,0x41,0x41,0x63,0x2b,0x62,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x78,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x42,0x2c,0x57,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x52,0x33,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6a,0x42,0x2c,0x4f,0x41,0x41,0x69,0x42,0x35,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x35,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x52,0x2c,0x49,0x41,0x41,0x49,0x2f,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x48,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x49,0x2c,0x65,0x41,0x41,0x65,0x37,0x48,0x2c,0x57,0x41,0x41,0x57,0x62,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x6e,0x6b,0x42,0x2c,0x51,0x41,0x41,0x53,0x6f,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x6a,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x6c,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x49,0x78,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x4a,0x2c,0x59,0x41,0x41,0x59,0x74,0x4a,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x52,0x2c,0x49,0x41,0x41,0x49,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x52,0x2c,0x49,0x41,0x41,0x49,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6c,0x42,0x2c,0x51,0x41,0x41,0x51,0x78,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6a,0x42,0x2c,0x45,0x41,0x43,0x76,0x66,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6c,0x42,0x2c,0x59,0x41,0x41,0x59,0x6e,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6c,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x69,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6c,0x42,0x2c,0x65,0x41,0x41,0x65,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x42,0x2c,0x59,0x41,0x41,0x59,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x69,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x6c,0x42,0x2c,0x63,0x41,0x41,0x63,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x57,0x41,0x41,0x55,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x6c,0x42,0x2c,0x65,0x41,0x41,0x67,0x42,0x43,0x2c,0x53,0x41,0x41,0x53,0x68,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6c,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6c,0x42,0x2c,0x53,0x41,0x41,0x53,0x31,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6c,0x42,0x2c,0x53,0x41,0x41,0x53,0x31,0x6c,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4c,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x31,0x50,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x7a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x30,0x56,0x2c,0x51,0x41,0x41,0x51,0x37,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6c,0x42,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x49,0x41,0x41,0x49,0x68,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6d,0x42,0x2c,0x59,0x41,0x41,0x6d,0x44,0x2c,0x49,0x41,0x41,0x76,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2f,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6d,0x42,0x2c,0x51,0x41,0x41,0x59,0x68,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x4b,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x32,0x6c,0x42,0x2c,0x51,0x41,0x41,0x51,0x45,0x2c,0x57,0x41,0x41,0x57,0x2f,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6c,0x42,0x2c,0x51,0x41,0x41,0x51,0x49,0x2c,0x55,0x41,0x41,0x55,0x6a,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x66,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x47,0x41,0x41,0x47,0x76,0x6c,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x53,0x41,0x41,0x53,0x79,0x66,0x2c,0x61,0x41,0x41,0x61,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x33,0x46,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x57,0x2c,0x53,0x41,0x41,0x53,0x58,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x59,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x5a,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x53,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x49,0x2c,0x63,0x41,0x41,0x63,0x34,0x64,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x48,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x65,0x2c,0x45,0x41,0x41,0x47,0x70,0x47,0x2c,0x4b,0x41,0x41,0x55,0x2c,0x6d,0x42,0x41,0x41,0x4c,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x79,0x42,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x6a,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x42,0x2c,0x65,0x41,0x41,0x65,0x44,0x2c,0x49,0x41,0x41,0x49,0x70,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x63,0x41,0x41,0x75,0x46,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x34,0x6a,0x42,0x2c,0x59,0x41,0x41,0x33,0x45,0x35,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x48,0x2c,0x65,0x41,0x41,0x65,0x6e,0x48,0x2c,0x45,0x41,0x41,0x45,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x71,0x63,0x2c,0x61,0x41,0x41,0x61,0x6e,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x6f,0x6b,0x42,0x2c,0x67,0x42,0x41,0x41,0x2b,0x42,0x47,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x61,0x41,0x41,0x61,0x37,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x55,0x41,0x41,0x55,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6a,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x59,0x41,0x41,0x59,0x2f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6a,0x42,0x2c,0x61,0x41,0x41,0x63,0x65,0x2c,0x49,0x41,0x41,0x49,0x39,0x43,0x2c,0x47,0x41,0x41,0x47,0x38,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6b,0x42,0x2c,0x45,0x41,0x41,0x73,0x42,0x2c,0x47,0x41,0x41,0x70,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x67,0x42,0x6a,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x61,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x31,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x74,0x66,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x69,0x46,0x2c,0x4f,0x41,0x41,0x2f,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x65,0x41,0x41,0x65,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x63,0x41,0x41,0x63,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x61,0x41,0x41,0x61,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x49,0x2c,0x65,0x41,0x41,0x65,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4b,0x2c,0x63,0x41,0x41,0x63,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x70,0x46,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x59,0x45,0x2c,0x45,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x6d,0x42,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x2f,0x58,0x59,0x2c,0x49,0x41,0x41,0x4b,0x6f,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x39,0x4d,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x36,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x61,0x41,0x41,0x61,0x4f,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x52,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x4d,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x52,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x65,0x41,0x41,0x65,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x6d,0x42,0x2c,0x65,0x41,0x41,0x65,0x36,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x63,0x41,0x41,0x63,0x39,0x4f,0x2c,0x59,0x41,0x41,0x77,0x4a,0x2c,0x49,0x41,0x41,0x49,0x6d,0x50,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x47,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x49,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4b,0x2c,0x47,0x41,0x41,0x47,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x72,0x52,0x2c,0x49,0x41,0x41,0x49,0x73,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x73,0x6d,0x42,0x41,0x41,0x73,0x6d,0x42,0x6c,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x43,0x2f,0x6c,0x43,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x51,0x2c,0x45,0x41,0x41,0x47,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x70,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x6e,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x32,0x44,0x44,0x2c,0x47,0x41,0x41,0x70,0x44,0x45,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6c,0x42,0x2c,0x63,0x41,0x41,0x75,0x44,0x2c,0x4d,0x41,0x41,0x74,0x43,0x6d,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x68,0x6c,0x42,0x2c,0x63,0x41,0x41,0x63,0x67,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x34,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4d,0x2c,0x47,0x41,0x41,0x47,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x4b,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x35,0x6d,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x67,0x42,0x41,0x43,0x37,0x63,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x6f,0x45,0x41,0x41,0x6f,0x45,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x75,0x46,0x41,0x41,0x75,0x46,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x32,0x44,0x41,0x41,0x32,0x44,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x36,0x44,0x41,0x41,0x36,0x44,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x43,0x2f,0x66,0x37,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x38,0x44,0x41,0x41,0x38,0x44,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x73,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x4e,0x41,0x41,0x36,0x4e,0x74,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x2b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x4b,0x41,0x43,0x7a,0x5a,0x2c,0x53,0x41,0x41,0x53,0x47,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x5a,0x2c,0x63,0x41,0x41,0x63,0x6c,0x5a,0x2c,0x45,0x41,0x6c,0x44,0x6a,0x45,0x2c,0x53,0x41,0x41,0x59,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x34,0x42,0x2c,0x47,0x41,0x41,0x7a,0x42,0x79,0x4c,0x2c,0x47,0x41,0x41,0x47,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x57,0x41,0x41,0x63,0x2b,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x67,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x31,0x43,0x2c,0x49,0x41,0x41,0x49,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x75,0x4c,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x38,0x42,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x6b,0x44,0x70,0x45,0x6f,0x69,0x42,0x2c,0x43,0x41,0x41,0x47,0x78,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x5a,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x78,0x47,0x2c,0x53,0x41,0x41,0x53,0x6b,0x4a,0x2c,0x47,0x41,0x41,0x47,0x74,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x41,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x67,0x42,0x2c,0x55,0x41,0x41,0x55,0x6c,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x54,0x2c,0x63,0x41,0x41,0x32,0x42,0x2c,0x47,0x41,0x41,0x62,0x76,0x54,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x42,0x2c,0x53,0x41,0x41,0x59,0x70,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x58,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x6f,0x44,0x2c,0x47,0x41,0x41,0x35,0x43,0x6d,0x45,0x2c,0x47,0x41,0x41,0x50,0x44,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x49,0x41,0x41,0x4f,0x73,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x54,0x2c,0x63,0x41,0x41,0x63,0x76,0x54,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x42,0x2c,0x53,0x41,0x41,0x59,0x70,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x58,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x52,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x52,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x35,0x61,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x6e,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6f,0x42,0x2c,0x53,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x6c,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x37,0x6e,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x37,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x49,0x41,0x41,0x49,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x38,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x7a,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x55,0x2c,0x53,0x41,0x41,0x53,0x76,0x65,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x72,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x36,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x78,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x6c,0x6f,0x42,0x2c,0x45,0x41,0x41,0x47,0x69,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x49,0x41,0x41,0x49,0x34,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x51,0x2c,0x49,0x41,0x41,0x49,0x70,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x73,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x75,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x49,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x6f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6b,0x42,0x2c,0x45,0x41,0x41,0x47,0x74,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x62,0x2c,0x53,0x41,0x41,0x53,0x71,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x57,0x2c,0x47,0x41,0x41,0x47,0x74,0x59,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x79,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x7a,0x57,0x2c,0x45,0x41,0x41,0x45,0x77,0x57,0x2c,0x47,0x41,0x41,0x47,0x2f,0x58,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6e,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x51,0x69,0x50,0x2c,0x49,0x41,0x41,0x49,0x2c,0x65,0x41,0x41,0x65,0x7a,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x44,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x51,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x6f,0x42,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x51,0x41,0x41,0x51,0x70,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x51,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x51,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x6f,0x42,0x2c,0x51,0x41,0x41,0x51,0x70,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x51,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x6c,0x56,0x2c,0x53,0x41,0x41,0x53,0x69,0x59,0x2c,0x47,0x41,0x41,0x47,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x76,0x42,0x2c,0x49,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x41,0x2c,0x49,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x78,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x74,0x52,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x45,0x2c,0x55,0x41,0x41,0x55,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x4a,0x2c,0x61,0x41,0x41,0x61,0x6a,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4d,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x4f,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x69,0x42,0x41,0x41,0x6b,0x42,0x31,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x55,0x41,0x41,0x55,0x35,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x4a,0x2c,0x61,0x41,0x41,0x61,0x6a,0x4f,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x58,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x56,0x2c,0x47,0x41,0x41,0x47,0x6e,0x52,0x2c,0x49,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x58,0x43,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x45,0x2c,0x4d,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x33,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x6c,0x4f,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6c,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x68,0x50,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x4e,0x2c,0x47,0x41,0x41,0x47,0x70,0x50,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x43,0x70,0x66,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x47,0x41,0x41,0x47,0x73,0x4f,0x2c,0x45,0x41,0x41,0x45,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x34,0x59,0x2c,0x47,0x41,0x41,0x47,0x31,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x6d,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x68,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x30,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x74,0x57,0x2c,0x45,0x41,0x41,0x45,0x73,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6c,0x63,0x2c,0x45,0x41,0x41,0x45,0x77,0x62,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x62,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x57,0x2c,0x45,0x41,0x43,0x31,0x69,0x42,0x6f,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x70,0x57,0x2c,0x45,0x41,0x41,0x45,0x77,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x4c,0x2c,0x47,0x41,0x41,0x47,0x78,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x35,0x5a,0x2c,0x45,0x41,0x41,0x45,0x38,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x39,0x55,0x2c,0x45,0x41,0x41,0x45,0x71,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x72,0x61,0x2c,0x45,0x41,0x41,0x45,0x36,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x37,0x57,0x2c,0x45,0x41,0x41,0x45,0x38,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6d,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x4b,0x2b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2f,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x51,0x47,0x2c,0x45,0x41,0x41,0x4a,0x43,0x2c,0x45,0x41,0x41,0x45,0x33,0x6e,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x4f,0x41,0x43,0x2f,0x65,0x32,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x52,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x55,0x6e,0x5a,0x2c,0x55,0x41,0x41,0x73,0x46,0x2c,0x47,0x41,0x41,0x35,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2f,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x49,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x56,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x59,0x2c,0x47,0x41,0x41,0x47,0x30,0x59,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x4b,0x41,0x41,0x59,0x46,0x2c,0x45,0x41,0x41,0x45,0x35,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x5a,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x4d,0x41,0x41,0x53,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x7a,0x58,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x33,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x79,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x63,0x2c,0x45,0x41,0x41,0x45,0x71,0x63,0x2c,0x55,0x41,0x41,0x55,0x36,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x34,0x45,0x2c,0x47,0x41,0x41,0x6e,0x43,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x61,0x41,0x41,0x61,0x39,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x65,0x41,0x41,0x65,0x41,0x2c,0x4b,0x41,0x41,0x74,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x63,0x41,0x41,0x63,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x41,0x2c,0x49,0x41,0x41,0x32,0x43,0x45,0x2c,0x49,0x41,0x41,0x49,0x6d,0x50,0x2c,0x4d,0x41,0x41,0x4b,0x79,0x5a,0x2c,0x45,0x41,0x41,0x45,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x62,0x2c,0x65,0x41,0x41,0x65,0x31,0x62,0x2c,0x45,0x41,0x41,0x45,0x32,0x62,0x2c,0x65,0x41,0x41,0x65,0x37,0x45,0x2c,0x47,0x41,0x41,0x47,0x38,0x52,0x2c,0x4b,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4f,0x41,0x41,0x67,0x42,0x78,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x4b,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x5a,0x2c,0x53,0x41,0x41,0x53,0x59,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x65,0x41,0x41,0x65,0x39,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x66,0x2c,0x61,0x41,0x41,0x61,0x6e,0x66,0x2c,0x45,0x41,0x41,0x45,0x30,0x6a,0x42,0x2c,0x61,0x41,0x41,0x61,0x31,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x55,0x69,0x46,0x2c,0x47,0x41,0x41,0x71,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x45,0x2c,0x45,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x66,0x73,0x6e,0x42,0x2c,0x47,0x41,0x41,0x6e,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x62,0x2c,0x65,0x41,0x41,0x65,0x31,0x62,0x2c,0x45,0x41,0x41,0x45,0x34,0x62,0x2c,0x57,0x41,0x41,0x6b,0x42,0x39,0x45,0x2c,0x47,0x41,0x41,0x47,0x38,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x43,0x39,0x64,0x41,0x2c,0x4b,0x41,0x41,0x52,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x58,0x2c,0x47,0x41,0x41,0x47,0x73,0x58,0x2c,0x4b,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x32,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4b,0x32,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x55,0x68,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6e,0x42,0x2c,0x47,0x41,0x41,0x4b,0x73,0x45,0x2c,0x49,0x41,0x41,0x49,0x67,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x67,0x55,0x2c,0x47,0x41,0x41,0x2f,0x54,0x43,0x2c,0x45,0x41,0x41,0x45,0x39,0x4d,0x2c,0x47,0x41,0x41,0x47,0x6d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x2c,0x65,0x41,0x41,0x65,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x65,0x41,0x41,0x65,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x57,0x2c,0x65,0x41,0x41,0x65,0x6e,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x41,0x2c,0x49,0x41,0x41,0x45,0x2b,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x4b,0x2c,0x47,0x41,0x41,0x47,0x77,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x55,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x47,0x41,0x41,0x47,0x31,0x63,0x2c,0x47,0x41,0x41,0x47,0x6f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x47,0x41,0x41,0x47,0x73,0x47,0x2c,0x49,0x41,0x41,0x47,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x72,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x4b,0x38,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x5a,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x56,0x2c,0x63,0x41,0x41,0x63,0x73,0x4e,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x53,0x2c,0x47,0x41,0x41,0x47,0x76,0x56,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x4b,0x41,0x41,0x49,0x75,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x4c,0x2c,0x45,0x41,0x41,0x45,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x4b,0x38,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x5a,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x6e,0x4e,0x2c,0x63,0x41,0x41,0x63,0x6f,0x4e,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x4b,0x74,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x67,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x68,0x42,0x48,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x6b,0x42,0x6f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x47,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x47,0x41,0x41,0x47,0x54,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x43,0x70,0x66,0x4f,0x2c,0x47,0x41,0x41,0x47,0x50,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x58,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x47,0x41,0x41,0x47,0x54,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x4f,0x2c,0x47,0x41,0x41,0x47,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x47,0x41,0x41,0x47,0x39,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x38,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x31,0x43,0x6a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x6a,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x58,0x2c,0x51,0x41,0x41,0x57,0x67,0x47,0x2c,0x55,0x41,0x41,0x55,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x45,0x2c,0x67,0x42,0x41,0x41,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x73,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x47,0x6a,0x48,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x58,0x2c,0x47,0x41,0x41,0x47,0x6a,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x36,0x63,0x2c,0x47,0x41,0x41,0x47,0x67,0x48,0x2c,0x45,0x41,0x41,0x47,0x70,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x6f,0x47,0x2c,0x45,0x41,0x41,0x47,0x74,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x47,0x2c,0x45,0x41,0x41,0x47,0x7a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x64,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x55,0x41,0x41,0x55,0x66,0x2c,0x45,0x41,0x41,0x45,0x74,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x61,0x41,0x41,0x61,0x71,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x55,0x32,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x44,0x2c,0x51,0x41,0x41,0x51,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x47,0x72,0x47,0x2c,0x49,0x41,0x43,0x72,0x56,0x2c,0x4f,0x41,0x44,0x34,0x56,0x71,0x47,0x2c,0x49,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x47,0x31,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x4b,0x75,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6e,0x42,0x2c,0x45,0x41,0x41,0x47,0x78,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x57,0x6b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x47,0x33,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x32,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x67,0x42,0x41,0x43,0x6c,0x66,0x79,0x68,0x42,0x2c,0x45,0x41,0x41,0x47,0x72,0x68,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x57,0x41,0x41,0x57,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x33,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x47,0x2c,0x47,0x41,0x41,0x47,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x42,0x2c,0x51,0x41,0x41,0x4f,0x67,0x69,0x42,0x2c,0x45,0x41,0x41,0x47,0x6e,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x58,0x2c,0x4f,0x41,0x41,0x63,0x62,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x61,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x48,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x47,0x72,0x46,0x2c,0x6d,0x42,0x41,0x41,0x67,0x42,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x44,0x2c,0x45,0x41,0x41,0x47,0x74,0x44,0x2c,0x47,0x41,0x41,0x47,0x37,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x4b,0x2c,0x47,0x41,0x41,0x47,0x37,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6d,0x6f,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x76,0x4a,0x2c,0x47,0x41,0x41,0x47,0x70,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x36,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x34,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x43,0x70,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x34,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x70,0x42,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x49,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x35,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x59,0x41,0x41,0x59,0x37,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x59,0x2c,0x55,0x41,0x41,0x55,0x67,0x52,0x2c,0x45,0x41,0x41,0x47,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x41,0x2c,0x49,0x41,0x41,0x4b,0x70,0x4a,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x65,0x2c,0x53,0x41,0x41,0x53,0x71,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2b,0x49,0x2c,0x45,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x41,0x2c,0x47,0x41,0x41,0x49,0x2f,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x49,0x2c,0x45,0x41,0x41,0x47,0x6a,0x52,0x2c,0x4f,0x41,0x41,0x59,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x52,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x57,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2b,0x57,0x2c,0x47,0x41,0x41,0x47,0x37,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x51,0x2c,0x47,0x41,0x41,0x47,0x39,0x4f,0x2c,0x59,0x41,0x41,0x59,0x6f,0x58,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x69,0x42,0x2c,0x47,0x41,0x41,0x5a,0x36,0x49,0x2c,0x45,0x41,0x41,0x47,0x33,0x48,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6f,0x42,0x2c,0x49,0x41,0x41,0x53,0x7a,0x70,0x42,0x2c,0x53,0x41,0x41,0x53,0x79,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x4e,0x2c,0x47,0x41,0x41,0x47,0x69,0x4e,0x2c,0x45,0x41,0x41,0x47,0x37,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x48,0x2c,0x45,0x41,0x41,0x47,0x33,0x48,0x2c,0x55,0x41,0x41,0x55,0x79,0x48,0x2c,0x49,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x47,0x68,0x4e,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x4d,0x2c,0x45,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x54,0x41,0x2c,0x45,0x41,0x41,0x47,0x2f,0x49,0x2c,0x47,0x41,0x41,0x47,0x33,0x67,0x42,0x2c,0x4d,0x41,0x41,0x65,0x32,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x68,0x4e,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x4d,0x2c,0x4d,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x47,0x70,0x4a,0x2c,0x47,0x41,0x35,0x42,0x68,0x4d,0x2c,0x53,0x41,0x41,0x59,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x65,0x2c,0x4d,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x4b,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x55,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x63,0x2c,0x51,0x41,0x41,0x53,0x36,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x34,0x42,0x45,0x38,0x70,0x42,0x2c,0x43,0x41,0x41,0x47,0x39,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x33,0x42,0x7a,0x64,0x2c,0x53,0x41,0x41,0x59,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x36,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x39,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x71,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x4f,0x2c,0x47,0x41,0x41,0x47,0x35,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x39,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x67,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x33,0x50,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x62,0x2c,0x53,0x41,0x41,0x53,0x6e,0x62,0x2c,0x45,0x41,0x41,0x45,0x71,0x62,0x2c,0x51,0x41,0x41,0x51,0x72,0x62,0x2c,0x45,0x41,0x41,0x45,0x73,0x62,0x2c,0x55,0x41,0x41,0x55,0x74,0x62,0x2c,0x45,0x41,0x41,0x45,0x6d,0x62,0x2c,0x53,0x41,0x41,0x53,0x6e,0x62,0x2c,0x45,0x41,0x41,0x45,0x71,0x62,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x62,0x2c,0x45,0x41,0x41,0x45,0x38,0x70,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x39,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x70,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x70,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x70,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x39,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x61,0x41,0x41,0x61,0x70,0x65,0x2c,0x45,0x41,0x41,0x45,0x79,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x65,0x2c,0x45,0x41,0x41,0x45,0x34,0x63,0x2c,0x4b,0x41,0x41,0x79,0x42,0x2c,0x43,0x41,0x32,0x42,0x71,0x46,0x6d,0x4e,0x2c,0x43,0x41,0x41,0x47,0x68,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4d,0x41,0x43,0x6a,0x65,0x2c,0x47,0x41,0x44,0x6f,0x65,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x43,0x76,0x65,0x70,0x42,0x2c,0x53,0x41,0x41,0x53,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6d,0x62,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x67,0x42,0x2c,0x55,0x41,0x41,0x55,0x31,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x62,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x74,0x48,0x2c,0x47,0x41,0x41,0x47,0x33,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2b,0x6e,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x5a,0x2c,0x63,0x41,0x41,0x63,0x6c,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x76,0x4f,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x56,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4f,0x2c,0x47,0x41,0x41,0x47,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x59,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6f,0x42,0x2c,0x51,0x41,0x41,0x51,0x5a,0x2c,0x47,0x41,0x41,0x47,0x72,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x56,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4f,0x2c,0x47,0x41,0x41,0x47,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x59,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x5a,0x2c,0x47,0x41,0x41,0x47,0x72,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x61,0x41,0x41,0x61,0x31,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x47,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x6e,0x64,0x2c,0x53,0x41,0x41,0x53,0x79,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x5a,0x2c,0x57,0x41,0x41,0x57,0x76,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x4c,0x2c,0x55,0x41,0x41,0x55,0x37,0x4c,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x50,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x56,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x59,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6f,0x42,0x2c,0x51,0x41,0x41,0x51,0x5a,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x4b,0x70,0x45,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x56,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x59,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x5a,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x4d,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x51,0x41,0x41,0x51,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x38,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x76,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x6d,0x42,0x2c,0x51,0x41,0x41,0x51,0x34,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x47,0x41,0x41,0x47,0x72,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x71,0x42,0x2c,0x47,0x41,0x41,0x4d,0x6d,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x39,0x65,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x61,0x41,0x41,0x61,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x71,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x71,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x43,0x35,0x50,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x67,0x42,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x6b,0x42,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x61,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x65,0x41,0x41,0x65,0x41,0x2c,0x65,0x41,0x41,0x65,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x2f,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x57,0x2c,0x47,0x41,0x41,0x47,0x74,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x71,0x42,0x2c,0x59,0x41,0x41,0x57,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x71,0x42,0x2c,0x43,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x70,0x56,0x2c,0x53,0x41,0x41,0x53,0x75,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6a,0x42,0x2c,0x59,0x41,0x41,0x36,0x42,0x2c,0x47,0x41,0x41,0x6a,0x42,0x37,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6c,0x4b,0x2c,0x47,0x41,0x41,0x4d,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x4a,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x59,0x2c,0x51,0x41,0x41,0x54,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x62,0x2c,0x4d,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x72,0x62,0x2c,0x45,0x41,0x41,0x30,0x42,0x2c,0x4f,0x41,0x41,0x76,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x33,0x49,0x2c,0x51,0x41,0x41,0x47,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x31,0x58,0x2c,0x47,0x41,0x41,0x55,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x58,0x2c,0x47,0x41,0x41,0x47,0x31,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x7a,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x5a,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x4f,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x59,0x2c,0x53,0x41,0x41,0x53,0x79,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x72,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x7a,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x72,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x55,0x2c,0x53,0x41,0x41,0x53,0x76,0x65,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x72,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x46,0x2c,0x47,0x41,0x41,0x47,0x72,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x75,0x44,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x48,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4a,0x2c,0x47,0x41,0x43,0x6c,0x58,0x2c,0x53,0x41,0x41,0x53,0x33,0x55,0x2c,0x47,0x41,0x41,0x47,0x68,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x33,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x78,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x70,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x64,0x31,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x79,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x4a,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x4d,0x77,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2f,0x50,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x51,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x4d,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x74,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x51,0x2c,0x47,0x41,0x41,0x47,0x6a,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6e,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x76,0x65,0x2c,0x53,0x41,0x41,0x53,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x6e,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x36,0x5a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x47,0x2c,0x47,0x41,0x41,0x45,0x70,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x6a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6e,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6c,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x4a,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x47,0x4c,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x4d,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x49,0x2c,0x47,0x41,0x41,0x47,0x7a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x71,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x37,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x78,0x4f,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x38,0x43,0x41,0x41,0x38,0x43,0x31,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x2c,0x49,0x41,0x41,0x53,0x6c,0x72,0x42,0x2c,0x45,0x41,0x41,0x4c,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x6f,0x48,0x2c,0x4f,0x41,0x41,0x6a,0x48,0x46,0x2c,0x4b,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x57,0x41,0x41,0x59,0x32,0x63,0x2c,0x34,0x43,0x41,0x41,0x34,0x43,0x31,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x73,0x42,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x6e,0x72,0x42,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x39,0x64,0x2c,0x53,0x41,0x41,0x53,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x73,0x42,0x2c,0x47,0x41,0x41,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x37,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x73,0x42,0x2c,0x79,0x42,0x41,0x41,0x6d,0x43,0x2c,0x49,0x41,0x41,0x53,0x39,0x73,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x5a,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x55,0x2c,0x47,0x41,0x41,0x47,0x68,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6f,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x55,0x41,0x41,0x55,0x6b,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x6e,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x45,0x72,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x67,0x43,0x2c,0x47,0x41,0x41,0x74,0x42,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x73,0x42,0x2c,0x6b,0x42,0x41,0x41,0x71,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x74,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x72,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x74,0x42,0x2c,0x45,0x41,0x41,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x4b,0x41,0x41,0x39,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x72,0x42,0x2c,0x6b,0x42,0x41,0x41,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x32,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x55,0x41,0x41,0x55,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x35,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x58,0x2c,0x53,0x41,0x41,0x53,0x32,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x74,0x42,0x2c,0x47,0x41,0x41,0x32,0x47,0x2c,0x4f,0x41,0x41,0x78,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x59,0x41,0x41,0x59,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x6f,0x74,0x42,0x2c,0x32,0x43,0x41,0x41,0x32,0x43,0x66,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x51,0x41,0x41,0x51,0x69,0x61,0x2c,0x47,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x45,0x74,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x55,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x62,0x2c,0x47,0x41,0x41,0x47,0x72,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x78,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x70,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x49,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x45,0x74,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x48,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x74,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x68,0x57,0x2c,0x53,0x41,0x41,0x53,0x30,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x56,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6e,0x56,0x2c,0x45,0x41,0x41,0x45,0x6f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x59,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x38,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x7a,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x59,0x2c,0x47,0x41,0x41,0x47,0x77,0x61,0x2c,0x49,0x41,0x41,0x49,0x6a,0x73,0x42,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x34,0x54,0x2c,0x47,0x41,0x41,0x45,0x70,0x56,0x2c,0x45,0x41,0x41,0x45,0x75,0x74,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x30,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x37,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x74,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x56,0x2c,0x53,0x41,0x41,0x53,0x6f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x6a,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x71,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6f,0x53,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x75,0x49,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x31,0x49,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6b,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x53,0x41,0x41,0x53,0x30,0x63,0x2c,0x47,0x41,0x41,0x47,0x70,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x71,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x49,0x36,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x43,0x6a,0x65,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x33,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x55,0x41,0x41,0x55,0x35,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x64,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x59,0x41,0x41,0x6f,0x42,0x2f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x37,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x4a,0x2c,0x53,0x41,0x41,0x53,0x38,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x79,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x33,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x55,0x41,0x41,0x55,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x73,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x47,0x2c,0x53,0x41,0x41,0x53,0x72,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x43,0x2c,0x4b,0x41,0x41,0x6d,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x75,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4b,0x2c,0x61,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x6f,0x44,0x2c,0x51,0x41,0x41,0x37,0x43,0x6c,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x4b,0x2c,0x4b,0x41,0x41,0x59,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x75,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x2b,0x42,0x2c,0x51,0x41,0x41,0x78,0x42,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x4b,0x2c,0x4b,0x41,0x41,0x59,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x37,0x56,0x2c,0x47,0x41,0x41,0x47,0x38,0x56,0x2c,0x47,0x41,0x41,0x47,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x66,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x57,0x41,0x41,0x57,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x42,0x2c,0x59,0x41,0x41,0x59,0x6a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x61,0x41,0x41,0x59,0x6c,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x4b,0x37,0x65,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x47,0x41,0x43,0x6c,0x66,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x59,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x74,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x64,0x2c,0x47,0x41,0x41,0x47,0x76,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x30,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2b,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x6f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6a,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x72,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x54,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x2b,0x63,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x54,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x2b,0x63,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x63,0x2c,0x47,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x68,0x61,0x2c,0x53,0x41,0x41,0x53,0x79,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x63,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x75,0x42,0x2c,0x49,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x7a,0x75,0x42,0x2c,0x45,0x41,0x41,0x6b,0x47,0x2c,0x49,0x41,0x41,0x2f,0x46,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x51,0x41,0x41,0x51,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4f,0x41,0x41,0x67,0x42,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x67,0x42,0x41,0x41,0x6d,0x42,0x7a,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x59,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4e,0x32,0x4c,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x67,0x44,0x2c,0x4b,0x41,0x41,0x37,0x42,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x70,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x79,0x42,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x52,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x68,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x59,0x41,0x41,0x67,0x42,0x35,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x77,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x78,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x34,0x4b,0x2c,0x47,0x41,0x43,0x6a,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x68,0x44,0x2c,0x47,0x41,0x41,0x47,0x78,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x36,0x54,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x4c,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x4c,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x49,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x33,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x73,0x42,0x2c,0x45,0x41,0x41,0x47,0x6f,0x55,0x2c,0x77,0x42,0x41,0x43,0x68,0x4d,0x2c,0x53,0x41,0x41,0x53,0x6b,0x59,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x58,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x76,0x42,0x2c,0x4d,0x41,0x41,0x69,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x58,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x61,0x41,0x41,0x61,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x53,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x77,0x42,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x53,0x7a,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x2f,0x63,0x2c,0x53,0x41,0x41,0x53,0x6f,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x75,0x43,0x2c,0x4d,0x41,0x41,0x70,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x67,0x4a,0x2c,0x53,0x41,0x41,0x53,0x6a,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x44,0x2c,0x47,0x41,0x41,0x53,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x4e,0x2c,0x47,0x41,0x41,0x47,0x6f,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x72,0x77,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x77,0x42,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x66,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x4f,0x41,0x41,0x65,0x7a,0x47,0x2c,0x45,0x41,0x41,0x45,0x77,0x47,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x43,0x72,0x4d,0x2c,0x53,0x41,0x41,0x53,0x2b,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x37,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x32,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x57,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x49,0x41,0x41,0x49,0x6e,0x65,0x2c,0x45,0x41,0x41,0x45,0x79,0x46,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x49,0x41,0x41,0x49,0x6c,0x65,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x46,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x73,0x43,0x2c,0x4f,0x41,0x41,0x6e,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x75,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x59,0x6c,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x56,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x36,0x43,0x2c,0x51,0x41,0x41,0x6a,0x42,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x59,0x41,0x41,0x36,0x42,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x4f,0x41,0x41,0x51,0x74,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x7a,0x52,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x53,0x7a,0x52,0x2c,0x49,0x41,0x41,0x72,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x7a,0x52,0x2c,0x45,0x41,0x41,0x71,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x47,0x41,0x43,0x7a,0x64,0x2c,0x4f,0x41,0x44,0x34,0x64,0x44,0x2c,0x47,0x41,0x43,0x37,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x59,0x41,0x41,0x59,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x55,0x31,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4d,0x41,0x41,0x57,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x47,0x52,0x2c,0x49,0x41,0x41,0x49,0x71,0x43,0x2c,0x45,0x41,0x41,0x55,0x69,0x4e,0x2c,0x45,0x41,0x41,0x45,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x6e,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x48,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x65,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x70,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x57,0x41,0x41,0x57,0x39,0x42,0x2c,0x47,0x41,0x41,0x49,0x38,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x51,0x41,0x41,0x61,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x51,0x41,0x41,0x53,0x58,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x49,0x41,0x41,0x49,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x49,0x41,0x41,0x4b,0x77,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x53,0x77,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x43,0x6a,0x66,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x58,0x2c,0x45,0x41,0x41,0x45,0x69,0x58,0x2c,0x65,0x41,0x41,0x65,0x6c,0x58,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x36,0x67,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x69,0x42,0x41,0x41,0x73,0x42,0x35,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4d,0x6f,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x51,0x2c,0x45,0x41,0x41,0x45,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4d,0x41,0x41,0x57,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x4b,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x76,0x42,0x2c,0x49,0x41,0x41,0x4b,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x49,0x41,0x41,0x49,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x30,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x76,0x42,0x2c,0x49,0x41,0x43,0x6a,0x66,0x38,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x76,0x42,0x2c,0x49,0x41,0x41,0x4b,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x45,0x2c,0x45,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x6e,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x47,0x2c,0x4f,0x41,0x41,0x6d,0x42,0x78,0x47,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x55,0x41,0x41,0x55,0x74,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x30,0x49,0x2c,0x47,0x41,0x41,0x47,0x33,0x49,0x2c,0x49,0x41,0x41,0x49,0x32,0x45,0x2c,0x45,0x41,0x41,0x47,0x33,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6a,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x69,0x42,0x79,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x45,0x41,0x43,0x70,0x66,0x43,0x2c,0x47,0x41,0x44,0x77,0x65,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x4f,0x41,0x43,0x78,0x65,0x76,0x47,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x55,0x41,0x41,0x55,0x68,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6f,0x48,0x2c,0x47,0x41,0x41,0x47,0x31,0x49,0x2c,0x49,0x41,0x41,0x49,0x30,0x45,0x2c,0x45,0x41,0x41,0x47,0x31,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x50,0x2c,0x45,0x41,0x41,0x45,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x77,0x42,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x6e,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x49,0x41,0x41,0x49,0x68,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x32,0x43,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x74,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x49,0x41,0x41,0x49,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x57,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x32,0x43,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x74,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x49,0x41,0x41,0x49,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x57,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x43,0x2c,0x45,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x76,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x46,0x2c,0x4f,0x41,0x41,0x75,0x42,0x6a,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x46,0x2c,0x55,0x41,0x41,0x55,0x2f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6d,0x48,0x2c,0x47,0x41,0x41,0x47,0x70,0x48,0x2c,0x49,0x41,0x41,0x49,0x6f,0x44,0x2c,0x45,0x41,0x41,0x47,0x70,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x77,0x42,0x77,0x50,0x2c,0x45,0x41,0x41,0x45,0x2f,0x51,0x2c,0x45,0x41,0x41,0x6e,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x49,0x41,0x41,0x49,0x68,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x57,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x39,0x66,0x2c,0x53,0x41,0x41,0x53,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x59,0x2c,0x45,0x41,0x41,0x45,0x76,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x58,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x34,0x57,0x2c,0x45,0x41,0x41,0x45,0x6d,0x49,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6a,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x72,0x58,0x2c,0x57,0x41,0x41,0x57,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x58,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x34,0x57,0x2c,0x45,0x41,0x41,0x45,0x39,0x58,0x2c,0x45,0x41,0x41,0x45,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x46,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x6f,0x42,0x2c,0x49,0x41,0x41,0x6b,0x42,0x2c,0x51,0x41,0x41,0x64,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x45,0x41,0x41,0x45,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6a,0x42,0x2c,0x4d,0x41,0x41,0x63,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x67,0x58,0x2c,0x45,0x41,0x41,0x45,0x6c,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x59,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x58,0x77,0x46,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x55,0x76,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x6f,0x42,0x2c,0x49,0x41,0x41,0x73,0x42,0x2c,0x51,0x41,0x41,0x6c,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x49,0x2c,0x45,0x41,0x41,0x45,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x7a,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6a,0x42,0x2c,0x4d,0x41,0x41,0x63,0x39,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x58,0x2c,0x57,0x41,0x41,0x57,0x79,0x58,0x2c,0x45,0x41,0x41,0x45,0x33,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x43,0x76,0x66,0x30,0x53,0x2c,0x45,0x41,0x41,0x45,0x39,0x4b,0x2c,0x49,0x41,0x41,0x49,0x67,0x4c,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x39,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x63,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2b,0x57,0x2c,0x45,0x41,0x41,0x45,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x69,0x59,0x2c,0x47,0x41,0x41,0x75,0x44,0x2c,0x4f,0x41,0x41,0x70,0x44,0x6a,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x6d,0x42,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x30,0x75,0x42,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x55,0x76,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x68,0x42,0x2c,0x45,0x41,0x41,0x47,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x58,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x66,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x43,0x2c,0x49,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x5a,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6d,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x48,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x73,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x49,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x6e,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x66,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x59,0x2c,0x45,0x41,0x41,0x45,0x6a,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x36,0x57,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x45,0x41,0x41,0x45,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x6e,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x58,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6a,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x58,0x2c,0x45,0x41,0x41,0x45,0x74,0x58,0x2c,0x57,0x41,0x41,0x57,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x47,0x41,0x41,0x47,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x68,0x58,0x2c,0x51,0x41,0x41,0x51,0x36,0x57,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x2f,0x58,0x2c,0x45,0x41,0x41,0x45,0x69,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x73,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x43,0x7a,0x66,0x75,0x50,0x2c,0x47,0x41,0x41,0x47,0x30,0x64,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x73,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x49,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4f,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x6a,0x42,0x72,0x49,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x45,0x41,0x41,0x45,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x4d,0x41,0x41,0x63,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x68,0x58,0x2c,0x51,0x41,0x41,0x51,0x34,0x57,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x4a,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x58,0x34,0x46,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x55,0x76,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x49,0x41,0x41,0x49,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x73,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x49,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4f,0x41,0x41,0x34,0x42,0x2c,0x51,0x41,0x41,0x72,0x42,0x72,0x49,0x2c,0x45,0x41,0x41,0x45,0x6f,0x49,0x2c,0x45,0x41,0x41,0x45,0x6c,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x50,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6e,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x42,0x2c,0x4d,0x41,0x41,0x63,0x39,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x58,0x2c,0x57,0x41,0x41,0x57,0x54,0x2c,0x45,0x41,0x41,0x45,0x75,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x53,0x2c,0x45,0x41,0x41,0x45,0x33,0x4b,0x2c,0x49,0x41,0x41,0x49,0x67,0x4c,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x45,0x41,0x41,0x45,0x33,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x63,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x68,0x58,0x2c,0x51,0x41,0x41,0x51,0x34,0x57,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x4a,0x2c,0x47,0x41,0x41,0x75,0x44,0x2c,0x4f,0x41,0x41,0x70,0x44,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x52,0x2c,0x45,0x41,0x41,0x45,0x7a,0x4f,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x30,0x75,0x42,0x2c,0x49,0x41,0x41,0x47,0x4e,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6e,0x42,0x2c,0x47,0x41,0x41,0x55,0x76,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x47,0x33,0x54,0x2c,0x4f,0x41,0x48,0x34,0x54,0x2c,0x53,0x41,0x41,0x53,0x6f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x6b,0x46,0x2c,0x47,0x41,0x41,0x2f,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x63,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x6e,0x42,0x2c,0x55,0x41,0x41,0x61,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x35,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x45,0x41,0x41,0x47,0x33,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x38,0x46,0x2c,0x45,0x41,0x43,0x37,0x68,0x42,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x49,0x41,0x41,0x49,0x76,0x59,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x59,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x54,0x41,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x51,0x41,0x41,0x59,0x36,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x4d,0x2c,0x55,0x41,0x41,0x53,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x6e,0x42,0x2c,0x57,0x41,0x41,0x59,0x6f,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x70,0x42,0x2c,0x63,0x41,0x41,0x63,0x68,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x57,0x41,0x41,0x57,0x39,0x42,0x2c,0x47,0x41,0x41,0x49,0x38,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x31,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x4d,0x2c,0x55,0x41,0x41,0x53,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x51,0x41,0x41,0x53,0x58,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x4d,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x6e,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x4d,0x41,0x41,0x4f,0x7a,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x49,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x49,0x41,0x41,0x49,0x7a,0x63,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x70,0x42,0x2c,0x49,0x41,0x41,0x4b,0x6d,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x44,0x2c,0x45,0x41,0x41,0x47,0x39,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x43,0x7a,0x66,0x33,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x59,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x7a,0x56,0x2c,0x45,0x41,0x41,0x45,0x79,0x56,0x2c,0x65,0x41,0x41,0x65,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x55,0x41,0x41,0x55,0x36,0x67,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x6e,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x55,0x41,0x41,0x53,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x48,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4d,0x6f,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x4b,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x43,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x70,0x42,0x2c,0x49,0x41,0x41,0x4b,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x69,0x42,0x77,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x64,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x45,0x2c,0x4f,0x41,0x41,0x63,0x2f,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x45,0x2c,0x55,0x41,0x41,0x55,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2b,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6a,0x42,0x2c,0x45,0x41,0x41,0x47,0x6c,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x55,0x41,0x41,0x53,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x4b,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x43,0x6e,0x66,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x70,0x42,0x2c,0x49,0x41,0x41,0x4b,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x36,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x64,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x65,0x2c,0x47,0x41,0x41,0x47,0x66,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x49,0x2c,0x47,0x41,0x41,0x47,0x35,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x66,0x2c,0x51,0x41,0x41,0x51,0x67,0x61,0x2c,0x47,0x41,0x41,0x45,0x6f,0x46,0x2c,0x49,0x41,0x41,0x49,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x63,0x41,0x41,0x63,0x35,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x36,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x2b,0x48,0x2c,0x49,0x41,0x41,0x70,0x48,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x39,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x39,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x78,0x42,0x2c,0x47,0x41,0x41,0x4d,0x44,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x5a,0x2c,0x53,0x41,0x41,0x53,0x73,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x73,0x42,0x2c,0x51,0x41,0x41,0x6a,0x42,0x7a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x65,0x41,0x41,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x79,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x74,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x79,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x73,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x61,0x41,0x41,0x61,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x4e,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x78,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x76,0x59,0x2c,0x53,0x41,0x41,0x53,0x30,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x79,0x42,0x2c,0x59,0x41,0x41,0x2b,0x45,0x2c,0x4f,0x41,0x41,0x6e,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x7a,0x79,0x42,0x2c,0x45,0x41,0x41,0x53,0x30,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x71,0x43,0x2c,0x49,0x41,0x41,0x33,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x52,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x78,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x64,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x61,0x41,0x41,0x71,0x42,0x76,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x36,0x69,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x55,0x41,0x41,0x55,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x6f,0x68,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x2f,0x65,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x55,0x41,0x41,0x55,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x7a,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x43,0x2c,0x65,0x41,0x41,0x65,0x6c,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x65,0x41,0x41,0x65,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x51,0x41,0x41,0x51,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x47,0x41,0x41,0x47,0x76,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x75,0x7a,0x42,0x2c,0x55,0x41,0x41,0x55,0x78,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x75,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x74,0x52,0x2c,0x53,0x41,0x41,0x53,0x79,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x78,0x42,0x2c,0x4f,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x78,0x42,0x2c,0x51,0x41,0x41,0x2b,0x44,0x2c,0x4f,0x41,0x41,0x76,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x78,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x7a,0x42,0x2c,0x45,0x41,0x41,0x53,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x6f,0x46,0x2c,0x4f,0x41,0x41,0x6e,0x45,0x2c,0x51,0x41,0x41,0x68,0x42,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x63,0x41,0x41,0x73,0x42,0x31,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x31,0x79,0x42,0x2c,0x45,0x41,0x41,0x53,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x6e,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x65,0x41,0x41,0x30,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x46,0x6a,0x7a,0x42,0x2c,0x49,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x77,0x42,0x6a,0x79,0x42,0x2c,0x47,0x41,0x41,0x6c,0x42,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x6b,0x42,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x70,0x56,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x72,0x5a,0x2c,0x53,0x41,0x41,0x53,0x36,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x51,0x2c,0x47,0x41,0x41,0x6f,0x42,0x74,0x42,0x2c,0x4b,0x41,0x41,0x68,0x42,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x78,0x42,0x2c,0x61,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x76,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x69,0x42,0x41,0x41,0x34,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x36,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x74,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x7a,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x78,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x53,0x41,0x41,0x53,0x7a,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x78,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x69,0x48,0x2c,0x4f,0x41,0x41,0x2f,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x38,0x79,0x42,0x2c,0x55,0x41,0x41,0x55,0x78,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x78,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x78,0x42,0x2c,0x65,0x41,0x41,0x65,0x78,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x51,0x41,0x41,0x51,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x63,0x41,0x41,0x53,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x37,0x79,0x42,0x2c,0x45,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x6f,0x42,0x2c,0x51,0x41,0x41,0x6e,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x67,0x42,0x41,0x41,0x77,0x42,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x4b,0x41,0x43,0x6e,0x66,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x65,0x41,0x41,0x65,0x6a,0x7a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x70,0x42,0x2c,0x53,0x41,0x41,0x53,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x46,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x78,0x42,0x2c,0x65,0x41,0x41,0x65,0x72,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x74,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x4c,0x2c,0x45,0x41,0x41,0x45,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x54,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x6e,0x4c,0x2c,0x47,0x41,0x41,0x68,0x42,0x6d,0x4c,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x42,0x2c,0x61,0x41,0x41,0x67,0x42,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6d,0x42,0x76,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4c,0x2c,0x45,0x41,0x41,0x45,0x69,0x69,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6b,0x69,0x42,0x2c,0x65,0x41,0x41,0x65,0x70,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x78,0x42,0x2c,0x55,0x41,0x41,0x36,0x42,0x2c,0x49,0x41,0x41,0x6e,0x42,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x50,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x74,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x4e,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x49,0x41,0x41,0x49,0x75,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x37,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x53,0x41,0x41,0x53,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x53,0x41,0x43,0x76,0x66,0x78,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x6a,0x42,0x2c,0x45,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x52,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x53,0x36,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x66,0x32,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x4b,0x2c,0x53,0x41,0x41,0x69,0x43,0x2c,0x43,0x41,0x41,0x43,0x31,0x43,0x2c,0x45,0x41,0x41,0x45,0x6c,0x49,0x2c,0x45,0x41,0x41,0x45,0x37,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x58,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x54,0x6d,0x58,0x2c,0x45,0x41,0x41,0x45,0x6e,0x58,0x2c,0x4d,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x73,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x33,0x43,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x64,0x6e,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x4b,0x2c,0x53,0x41,0x41,0x67,0x43,0x35,0x4b,0x2c,0x45,0x41,0x41,0x45,0x37,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x49,0x2c,0x53,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x53,0x6d,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x36,0x79,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x74,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x5a,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x78,0x42,0x2c,0x53,0x41,0x41,0x69,0x42,0x35,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x78,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x78,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x43,0x2c,0x55,0x41,0x41,0x55,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x39,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x4e,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x49,0x41,0x41,0x49,0x75,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x37,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x53,0x41,0x41,0x53,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x53,0x41,0x41,0x53,0x78,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6b,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x76,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x76,0x42,0x2c,0x45,0x41,0x43,0x33,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x5a,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x72,0x42,0x2c,0x4d,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x73,0x42,0x2c,0x51,0x41,0x41,0x6e,0x42,0x74,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x53,0x41,0x41,0x69,0x42,0x2c,0x4d,0x41,0x41,0x65,0x76,0x74,0x42,0x2c,0x47,0x41,0x41,0x4a,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x72,0x42,0x2c,0x47,0x41,0x41,0x4d,0x73,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x78,0x42,0x2c,0x65,0x41,0x41,0x65,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x73,0x47,0x2c,0x47,0x41,0x41,0x35,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6b,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x6c,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x78,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x69,0x42,0x2c,0x45,0x41,0x41,0x34,0x42,0x2c,0x51,0x41,0x41,0x31,0x42,0x2f,0x51,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x52,0x2c,0x61,0x41,0x41,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x57,0x41,0x41,0x57,0x31,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x38,0x42,0x2c,0x49,0x41,0x41,0x49,0x74,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x6d,0x66,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x39,0x56,0x2c,0x53,0x41,0x41,0x53,0x6b,0x44,0x2c,0x47,0x41,0x41,0x47,0x6c,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x38,0x42,0x2c,0x47,0x41,0x41,0x33,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x70,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x70,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x49,0x2c,0x47,0x41,0x41,0x47,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x47,0x6e,0x49,0x2c,0x47,0x41,0x41,0x47,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x47,0x41,0x41,0x47,0x70,0x49,0x2c,0x47,0x41,0x41,0x47,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x49,0x2c,0x47,0x41,0x41,0x47,0x76,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x6d,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x53,0x2c,0x53,0x41,0x41,0x53,0x77,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x79,0x43,0x2c,0x4f,0x41,0x41,0x74,0x43,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x6b,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x69,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x67,0x49,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x6e,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x55,0x41,0x41,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x6b,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x7a,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x4a,0x2c,0x61,0x41,0x41,0x61,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x6b,0x45,0x33,0x4a,0x2c,0x45,0x41,0x41,0x45,0x32,0x4a,0x2c,0x47,0x41,0x41,0x72,0x43,0x33,0x4a,0x2c,0x47,0x41,0x41,0x76,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x50,0x2c,0x57,0x41,0x41,0x57,0x7a,0x50,0x2c,0x47,0x41,0x41,0x4d,0x38,0x4a,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x30,0x42,0x2c,0x53,0x41,0x41,0x6b,0x42,0x74,0x49,0x2c,0x47,0x41,0x41,0x45,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x68,0x49,0x2c,0x47,0x41,0x41,0x45,0x67,0x49,0x2c,0x47,0x41,0x41,0x47,0x6e,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x49,0x2c,0x47,0x41,0x41,0x45,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x6a,0x49,0x2c,0x47,0x41,0x41,0x45,0x6b,0x49,0x2c,0x49,0x41,0x41,0x49,0x6c,0x49,0x2c,0x47,0x41,0x41,0x45,0x6d,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x33,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x6e,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x73,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x6a,0x69,0x42,0x2c,0x53,0x41,0x41,0x61,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x4a,0x2c,0x47,0x41,0x41,0x47,0x33,0x4a,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x69,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x67,0x49,0x2c,0x47,0x41,0x41,0x47,0x6c,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x6e,0x53,0x2c,0x49,0x41,0x41,0x49,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x69,0x49,0x2c,0x49,0x41,0x41,0x49,0x6a,0x49,0x2c,0x47,0x41,0x41,0x45,0x6b,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x51,0x2c,0x47,0x41,0x41,0x45,0x33,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x43,0x78,0x5a,0x2c,0x53,0x41,0x41,0x53,0x34,0x49,0x2c,0x47,0x41,0x41,0x47,0x39,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x49,0x41,0x41,0x6d,0x42,0x2c,0x51,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x61,0x41,0x41,0x71,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x32,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x55,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x53,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x39,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x53,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x51,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x53,0x41,0x41,0x53,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x43,0x72,0x63,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x30,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x49,0x41,0x41,0x49,0x67,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x31,0x42,0x2c,0x38,0x42,0x41,0x41,0x38,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x47,0x41,0x41,0x47,0x35,0x30,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2b,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x78,0x42,0x2c,0x45,0x41,0x41,0x47,0x32,0x78,0x42,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x78,0x42,0x2c,0x45,0x41,0x41,0x47,0x6f,0x55,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x79,0x64,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x51,0x41,0x41,0x51,0x46,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x71,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x68,0x57,0x2c,0x53,0x41,0x41,0x53,0x38,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x79,0x48,0x2c,0x47,0x41,0x41,0x74,0x48,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x67,0x44,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x6f,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x4d,0x6b,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x6a,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x58,0x69,0x30,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6c,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x42,0x2c,0x51,0x41,0x41,0x51,0x67,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x2b,0x44,0x2c,0x47,0x41,0x41,0x39,0x44,0x52,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x31,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x45,0x72,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4d,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x72,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x34,0x31,0x42,0x2c,0x47,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4c,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x53,0x35,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x2f,0x59,0x2c,0x53,0x41,0x41,0x53,0x73,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x74,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x38,0x43,0x2c,0x4f,0x41,0x41,0x78,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x45,0x2c,0x47,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x45,0x31,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x34,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x74,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x53,0x79,0x31,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x39,0x6a,0x42,0x2c,0x55,0x41,0x41,0x55,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x72,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x45,0x31,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x34,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x31,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x55,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x36,0x52,0x2c,0x65,0x41,0x41,0x50,0x32,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x31,0x42,0x2c,0x47,0x41,0x41,0x71,0x42,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x6d,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x77,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x43,0x2c,0x55,0x41,0x41,0x55,0x75,0x44,0x2c,0x55,0x41,0x41,0x55,0x66,0x2c,0x47,0x41,0x41,0x45,0x65,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x42,0x2c,0x47,0x41,0x41,0x45,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x45,0x2c,0x47,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x45,0x31,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x34,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x74,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x31,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x65,0x2c,0x53,0x41,0x41,0x53,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x44,0x2c,0x53,0x41,0x41,0x53,0x30,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x32,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x32,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x35,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x30,0x42,0x2c,0x47,0x41,0x41,0x45,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x30,0x42,0x2c,0x55,0x41,0x41,0x55,0x37,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x76,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x30,0x42,0x2c,0x55,0x41,0x41,0x55,0x39,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x6e,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x50,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x36,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x4c,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x73,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x63,0x41,0x41,0x63,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x57,0x41,0x41,0x57,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x79,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x63,0x41,0x41,0x63,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x63,0x41,0x43,0x6e,0x67,0x42,0x43,0x2c,0x57,0x41,0x41,0x57,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x47,0x41,0x41,0x47,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x48,0x2c,0x45,0x41,0x41,0x45,0x75,0x45,0x2c,0x47,0x41,0x41,0x45,0x70,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x6a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x64,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x75,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x32,0x42,0x2c,0x55,0x41,0x41,0x55,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x32,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x78,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x6e,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x79,0x42,0x2c,0x61,0x41,0x41,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x57,0x41,0x41,0x57,0x31,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2b,0x32,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x43,0x39,0x58,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x32,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x32,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x35,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x32,0x42,0x2c,0x53,0x41,0x41,0x53,0x78,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x7a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x31,0x42,0x2c,0x51,0x41,0x41,0x51,0x6c,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x57,0x41,0x41,0x57,0x78,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x47,0x41,0x41,0x47,0x38,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x75,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x32,0x42,0x2c,0x59,0x41,0x41,0x59,0x74,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x55,0x41,0x41,0x55,0x74,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x32,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x74,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x70,0x57,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x51,0x2c,0x63,0x41,0x41,0x63,0x70,0x51,0x2c,0x47,0x41,0x41,0x73,0x45,0x2c,0x47,0x41,0x41,0x6e,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x71,0x51,0x2c,0x63,0x41,0x41,0x63,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x35,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x61,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x49,0x41,0x41,0x4f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x31,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x7a,0x42,0x2c,0x49,0x41,0x41,0x75,0x42,0x2c,0x45,0x41,0x41,0x70,0x42,0x41,0x2c,0x47,0x41,0x41,0x45,0x35,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x31,0x4c,0x2c,0x49,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x75,0x44,0x2c,0x47,0x41,0x41,0x74,0x44,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x51,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x48,0x75,0x31,0x42,0x2c,0x4b,0x41,0x41,0x51,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x75,0x33,0x42,0x2c,0x59,0x41,0x41,0x59,0x74,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x47,0x41,0x41,0x6d,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x43,0x2c,0x63,0x41,0x41,0x73,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x43,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x37,0x33,0x42,0x2c,0x49,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x58,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x51,0x41,0x41,0x67,0x42,0x35,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x37,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x6c,0x66,0x2c,0x53,0x41,0x41,0x53,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x33,0x42,0x2c,0x59,0x41,0x41,0x59,0x2f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x38,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x34,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x38,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x33,0x42,0x2c,0x59,0x41,0x41,0x59,0x76,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x6c,0x51,0x2c,0x53,0x41,0x41,0x53,0x69,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x32,0x42,0x2c,0x4b,0x41,0x41,0x38,0x4d,0x2c,0x4d,0x41,0x41,0x7a,0x4d,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x74,0x32,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x55,0x41,0x41,0x55,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x38,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x4c,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x46,0x2c,0x47,0x41,0x41,0x47,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x32,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x33,0x42,0x2c,0x53,0x41,0x41,0x53,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x4d,0x2c,0x47,0x41,0x41,0x45,0x76,0x31,0x42,0x2c,0x47,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x35,0x50,0x2c,0x53,0x41,0x41,0x53,0x77,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x38,0x4f,0x2c,0x4f,0x41,0x41,0x33,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x34,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x34,0x42,0x2c,0x51,0x41,0x41,0x51,0x6c,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x73,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x43,0x2c,0x63,0x41,0x41,0x73,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x43,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x47,0x41,0x41,0x6d,0x42,0x2c,0x51,0x41,0x41,0x66,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x59,0x41,0x41,0x6f,0x42,0x33,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x33,0x42,0x2c,0x47,0x41,0x41,0x57,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x66,0x2c,0x47,0x41,0x41,0x45,0x35,0x6a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x63,0x41,0x41,0x63,0x32,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x76,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x39,0x59,0x2c,0x53,0x41,0x41,0x53,0x67,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x31,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x33,0x6a,0x42,0x2c,0x63,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x5a,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x32,0x42,0x2c,0x51,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x32,0x42,0x2c,0x4d,0x41,0x41,0x6d,0x43,0x2c,0x59,0x41,0x41,0x35,0x42,0x35,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x63,0x41,0x41,0x63,0x32,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x35,0x6a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x63,0x41,0x41,0x63,0x32,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x76,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x78,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x68,0x58,0x2c,0x53,0x41,0x41,0x53,0x32,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x6e,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x51,0x41,0x41,0x31,0x45,0x2c,0x43,0x41,0x41,0x32,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x36,0x43,0x2c,0x4f,0x41,0x41,0x31,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x39,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x59,0x77,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x47,0x41,0x41,0x47,0x6a,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x32,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x37,0x5a,0x2c,0x53,0x41,0x41,0x53,0x67,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x32,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x48,0x6f,0x31,0x42,0x2c,0x4b,0x41,0x41,0x63,0x74,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x59,0x41,0x41,0x59,0x68,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x57,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x47,0x5a,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x49,0x41,0x41,0x45,0x71,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x67,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x7a,0x42,0x2c,0x57,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x57,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x64,0x2c,0x57,0x41,0x41,0x57,0x71,0x64,0x2c,0x47,0x41,0x41,0x47,0x72,0x64,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x68,0x59,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x6f,0x56,0x2c,0x47,0x41,0x41,0x45,0x6e,0x56,0x2c,0x45,0x41,0x41,0x45,0x6d,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x64,0x2c,0x57,0x41,0x41,0x57,0x78,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x33,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x43,0x31,0x64,0x2c,0x53,0x41,0x41,0x53,0x75,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x6b,0x45,0x2c,0x47,0x41,0x41,0x2f,0x44,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x75,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x31,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x32,0x42,0x2c,0x65,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x53,0x6d,0x49,0x2c,0x47,0x41,0x41,0x47,0x74,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x49,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x57,0x77,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x58,0x67,0x34,0x42,0x2c,0x4d,0x41,0x41,0x67,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x2f,0x4b,0x2c,0x53,0x41,0x41,0x53,0x30,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x67,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x31,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x32,0x42,0x2c,0x65,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x6d,0x49,0x2c,0x47,0x41,0x41,0x47,0x74,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x51,0x41,0x41,0x69,0x43,0x2c,0x51,0x41,0x41,0x78,0x42,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x32,0x42,0x2c,0x71,0x42,0x41,0x41,0x38,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x32,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x71,0x43,0x2c,0x47,0x41,0x41,0x6c,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x31,0x42,0x2c,0x65,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x47,0x72,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x31,0x42,0x2c,0x57,0x41,0x41,0x57,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x4b,0x30,0x64,0x2c,0x47,0x41,0x41,0x47,0x31,0x64,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x79,0x42,0x2c,0x59,0x41,0x41,0x2b,0x45,0x2c,0x4f,0x41,0x41,0x6e,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x51,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x64,0x31,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4d,0x41,0x41,0x6f,0x42,0x77,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x62,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x33,0x42,0x2c,0x4d,0x41,0x41,0x67,0x42,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x2f,0x63,0x2c,0x53,0x41,0x41,0x53,0x38,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x49,0x41,0x41,0x49,0x75,0x31,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x73,0x31,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x45,0x2c,0x47,0x41,0x41,0x47,0x76,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x30,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x78,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x7a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x46,0x41,0x2c,0x47,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x77,0x42,0x6a,0x79,0x42,0x2c,0x47,0x41,0x41,0x6c,0x42,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x6b,0x42,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x70,0x56,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x39,0x50,0x2c,0x49,0x41,0x41,0x49,0x6b,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x73,0x44,0x2c,0x59,0x41,0x41,0x59,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x73,0x48,0x2c,0x59,0x41,0x41,0x59,0x37,0x44,0x2c,0x47,0x41,0x41,0x45,0x38,0x44,0x2c,0x57,0x41,0x41,0x57,0x39,0x44,0x2c,0x47,0x41,0x41,0x45,0x2b,0x44,0x2c,0x55,0x41,0x41,0x55,0x2f,0x44,0x2c,0x47,0x41,0x41,0x45,0x67,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x45,0x2c,0x47,0x41,0x41,0x45,0x69,0x45,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x6a,0x45,0x2c,0x47,0x41,0x41,0x45,0x6b,0x45,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6c,0x45,0x2c,0x47,0x41,0x41,0x45,0x6d,0x45,0x2c,0x51,0x41,0x41,0x51,0x6e,0x45,0x2c,0x47,0x41,0x41,0x45,0x6f,0x45,0x2c,0x57,0x41,0x41,0x57,0x70,0x45,0x2c,0x47,0x41,0x41,0x45,0x71,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x45,0x2c,0x47,0x41,0x41,0x45,0x73,0x45,0x2c,0x53,0x41,0x41,0x53,0x74,0x45,0x2c,0x47,0x41,0x41,0x45,0x75,0x45,0x2c,0x63,0x41,0x41,0x63,0x76,0x45,0x2c,0x47,0x41,0x41,0x45,0x77,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x78,0x45,0x2c,0x47,0x41,0x41,0x45,0x79,0x45,0x2c,0x63,0x41,0x41,0x63,0x7a,0x45,0x2c,0x47,0x41,0x41,0x45,0x30,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x31,0x45,0x2c,0x47,0x41,0x41,0x45,0x32,0x45,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x33,0x45,0x2c,0x47,0x41,0x41,0x45,0x34,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x45,0x2c,0x47,0x41,0x41,0x45,0x36,0x45,0x2c,0x30,0x42,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x49,0x31,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x79,0x44,0x2c,0x59,0x41,0x41,0x59,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x73,0x48,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x33,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x34,0x43,0x2c,0x4f,0x41,0x41,0x7a,0x43,0x71,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x37,0x52,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x55,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x35,0x42,0x2c,0x57,0x41,0x41,0x57,0x76,0x48,0x2c,0x47,0x41,0x41,0x47,0x77,0x48,0x2c,0x55,0x41,0x41,0x55,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x36,0x43,0x2c,0x4f,0x41,0x41,0x31,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x39,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x59,0x75,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x43,0x33,0x66,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x47,0x41,0x41,0x47,0x6a,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x35,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x68,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x35,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x2f,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x6a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x32,0x42,0x2c,0x4b,0x41,0x41,0x71,0x44,0x2c,0x4f,0x41,0x41,0x68,0x44,0x72,0x32,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x55,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x30,0x42,0x2c,0x4b,0x41,0x41,0x6b,0x4d,0x2c,0x4f,0x41,0x41,0x37,0x4c,0x72,0x32,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x51,0x2c,0x63,0x41,0x41,0x63,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x77,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x38,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x4c,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x35,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x33,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2f,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x33,0x42,0x2c,0x53,0x41,0x41,0x53,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x4d,0x2c,0x47,0x41,0x41,0x45,0x76,0x31,0x42,0x2c,0x47,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x51,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x6e,0x36,0x42,0x2c,0x47,0x41,0x43,0x33,0x64,0x2c,0x4f,0x41,0x41,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6e,0x53,0x2c,0x47,0x41,0x41,0x68,0x42,0x73,0x32,0x42,0x2c,0x4b,0x41,0x41,0x34,0x42,0x7a,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x36,0x42,0x2c,0x53,0x41,0x41,0x53,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6f,0x43,0x2c,0x63,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x76,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x34,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x68,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x36,0x43,0x2c,0x4f,0x41,0x41,0x31,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x73,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x36,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x53,0x41,0x41,0x53,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x39,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x35,0x48,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4e,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x48,0x75,0x31,0x42,0x2c,0x4b,0x41,0x41,0x51,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x71,0x33,0x42,0x2c,0x59,0x41,0x41,0x59,0x74,0x33,0x42,0x2c,0x47,0x41,0x43,0x76,0x5a,0x2c,0x4f,0x41,0x44,0x30,0x5a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x43,0x70,0x66,0x45,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x51,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x61,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x31,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x6b,0x44,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x4d,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x42,0x2c,0x47,0x41,0x41,0x6b,0x44,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x39,0x43,0x43,0x2c,0x47,0x41,0x41,0x48,0x67,0x75,0x42,0x2c,0x4b,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x47,0x41,0x41,0x68,0x42,0x6f,0x61,0x2c,0x49,0x41,0x41,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x6b,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x68,0x4b,0x2c,0x47,0x41,0x41,0x75,0x42,0x2c,0x47,0x41,0x41,0x50,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x31,0x42,0x2c,0x51,0x41,0x41,0x57,0x33,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x61,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x66,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x31,0x42,0x2c,0x4d,0x41,0x41,0x6d,0x42,0x33,0x72,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x4b,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x35,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x30,0x42,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x49,0x7a,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x77,0x44,0x2c,0x59,0x41,0x41,0x59,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x73,0x48,0x2c,0x59,0x41,0x41,0x59,0x5a,0x2c,0x47,0x41,0x41,0x47,0x61,0x2c,0x57,0x41,0x41,0x57,0x76,0x48,0x2c,0x47,0x41,0x41,0x47,0x77,0x48,0x2c,0x55,0x41,0x41,0x55,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x51,0x41,0x41,0x51,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x42,0x2c,0x57,0x41,0x41,0x57,0x76,0x44,0x2c,0x47,0x41,0x41,0x47,0x77,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x72,0x68,0x42,0x32,0x44,0x2c,0x63,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x36,0x42,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x35,0x42,0x2c,0x47,0x41,0x41,0x5a,0x78,0x43,0x2c,0x4b,0x41,0x41,0x69,0x42,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x33,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x41,0x67,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x72,0x43,0x35,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x4b,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6b,0x42,0x2c,0x63,0x41,0x41,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6f,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x44,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x30,0x42,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x49,0x78,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x75,0x44,0x2c,0x59,0x41,0x41,0x59,0x72,0x48,0x2c,0x47,0x41,0x41,0x47,0x73,0x48,0x2c,0x59,0x41,0x41,0x59,0x5a,0x2c,0x47,0x41,0x41,0x47,0x61,0x2c,0x57,0x41,0x41,0x57,0x76,0x48,0x2c,0x47,0x41,0x41,0x47,0x77,0x48,0x2c,0x55,0x41,0x41,0x55,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x51,0x41,0x41,0x51,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x42,0x2c,0x57,0x41,0x41,0x57,0x68,0x44,0x2c,0x47,0x41,0x41,0x47,0x69,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x44,0x2c,0x47,0x41,0x41,0x47,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x44,0x2c,0x63,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x43,0x7a,0x66,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x33,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x41,0x67,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x72,0x43,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x52,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x4b,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6b,0x42,0x2c,0x63,0x41,0x41,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6f,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x44,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x30,0x42,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x45,0x2c,0x47,0x41,0x41,0x47,0x37,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x36,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x34,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x35,0x36,0x42,0x2c,0x4b,0x41,0x41,0x6e,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x34,0x42,0x2c,0x49,0x41,0x41,0x53,0x37,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x38,0x42,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x74,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x73,0x42,0x41,0x41,0x6d,0x43,0x2c,0x49,0x41,0x41,0x53,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x55,0x41,0x41,0x55,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x72,0x64,0x2c,0x49,0x41,0x41,0x49,0x38,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x6a,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x6b,0x42,0x41,0x41,0x69,0x42,0x31,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x52,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x43,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x6d,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x6e,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x31,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x34,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x7a,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x7a,0x7a,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x5a,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4d,0x41,0x41,0x63,0x75,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x35,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x31,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x34,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x7a,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x7a,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x7a,0x7a,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x5a,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4d,0x41,0x41,0x63,0x75,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x73,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x34,0x35,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x35,0x42,0x2c,0x4b,0x41,0x41,0x49,0x68,0x34,0x42,0x2c,0x45,0x41,0x43,0x6e,0x66,0x36,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x6c,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x31,0x7a,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x5a,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4d,0x41,0x41,0x63,0x77,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x38,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6f,0x42,0x41,0x41,0x70,0x42,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x57,0x41,0x41,0x73,0x43,0x75,0x72,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x76,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x37,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2f,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x59,0x41,0x41,0x57,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x55,0x41,0x41,0x55,0x73,0x36,0x42,0x2c,0x77,0x42,0x41,0x41,0x73,0x42,0x68,0x59,0x2c,0x47,0x41,0x41,0x47,0x74,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x31,0x53,0x2c,0x53,0x41,0x41,0x53,0x2b,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x71,0x42,0x2c,0x47,0x41,0x41,0x4f,0x33,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x37,0x42,0x2c,0x59,0x41,0x41,0x32,0x57,0x2c,0x4d,0x41,0x41,0x2f,0x56,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x51,0x41,0x41,0x79,0x42,0x7a,0x51,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x74,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x73,0x42,0x2c,0x6f,0x42,0x41,0x41,0x34,0x42,0x2c,0x49,0x41,0x41,0x53,0x6c,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x69,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x70,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x37,0x42,0x2c,0x51,0x41,0x41,0x51,0x5a,0x2c,0x47,0x41,0x41,0x47,0x68,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6c,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x57,0x41,0x41,0x59,0x32,0x63,0x2c,0x34,0x43,0x41,0x41,0x34,0x43,0x6c,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x73,0x42,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x6c,0x72,0x42,0x2c,0x47,0x41,0x41,0x55,0x7a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x35,0x5a,0x2c,0x53,0x41,0x41,0x53,0x34,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x37,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x37,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x35,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x37,0x42,0x2c,0x6b,0x43,0x41,0x41,0x6b,0x43,0x39,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x37,0x42,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x51,0x41,0x41,0x51,0x33,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6e,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x70,0x51,0x2c,0x53,0x41,0x41,0x53,0x4b,0x2c,0x47,0x41,0x41,0x47,0x68,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x76,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x37,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x44,0x2c,0x47,0x41,0x41,0x47,0x33,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x51,0x41,0x41,0x51,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x7a,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x32,0x43,0x2c,0x6f,0x42,0x41,0x41,0x37,0x42,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x38,0x42,0x2c,0x34,0x42,0x41,0x41,0x69,0x44,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x65,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x38,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x36,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x31,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x6e,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x43,0x72,0x66,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x31,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x6c,0x38,0x42,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x58,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x48,0x2c,0x47,0x41,0x41,0x47,0x68,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x65,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x34,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x61,0x41,0x41,0x61,0x6c,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x79,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x4f,0x2c,0x45,0x41,0x41,0x45,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x36,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x31,0x64,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x79,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x4a,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x38,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x38,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x47,0x41,0x41,0x47,0x30,0x71,0x42,0x2c,0x59,0x41,0x41,0x57,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x71,0x42,0x2c,0x43,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x51,0x41,0x41,0x51,0x35,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x36,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x72,0x7a,0x42,0x2c,0x49,0x41,0x41,0x4b,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x77,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x37,0x4e,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x72,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x73,0x44,0x2c,0x4f,0x41,0x41,0x68,0x44,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x79,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x71,0x4a,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x72,0x57,0x2c,0x53,0x41,0x41,0x53,0x67,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x72,0x7a,0x42,0x2c,0x49,0x41,0x41,0x4b,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x37,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x2b,0x49,0x2c,0x47,0x41,0x41,0x47,0x31,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x38,0x4f,0x2c,0x4f,0x41,0x41,0x70,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6c,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x57,0x41,0x41,0x57,0x2b,0x49,0x2c,0x47,0x41,0x41,0x47,0x31,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x39,0x38,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x71,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x38,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x37,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6e,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x32,0x31,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x62,0x2c,0x53,0x41,0x41,0x53,0x71,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x39,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x39,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x70,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6c,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x69,0x42,0x2c,0x4b,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x46,0x2c,0x49,0x41,0x41,0x49,0x6a,0x48,0x2c,0x4d,0x41,0x41,0x67,0x42,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6c,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x64,0x2c,0x49,0x41,0x41,0x49,0x54,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x34,0x45,0x2c,0x49,0x41,0x41,0x76,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4f,0x41,0x41,0x73,0x42,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x70,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x59,0x41,0x41,0x75,0x42,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x68,0x57,0x2c,0x53,0x41,0x41,0x53,0x32,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4f,0x41,0x41,0x65,0x74,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x55,0x41,0x41,0x55,0x76,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x73,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x70,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x79,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6e,0x79,0x42,0x2c,0x49,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x53,0x7a,0x42,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x34,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x36,0x42,0x2c,0x45,0x41,0x41,0x47,0x6f,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x7a,0x4c,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x30,0x4c,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x73,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x6e,0x56,0x2c,0x53,0x41,0x41,0x53,0x75,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x71,0x43,0x2c,0x4f,0x41,0x41,0x6a,0x43,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x32,0x42,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x32,0x42,0x2c,0x47,0x41,0x41,0x49,0x6f,0x79,0x42,0x2c,0x49,0x41,0x41,0x32,0x45,0x31,0x44,0x2c,0x49,0x41,0x41,0x47,0x78,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x55,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x37,0x47,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x6f,0x44,0x2c,0x43,0x41,0x43,0x7a,0x4e,0x2c,0x53,0x41,0x41,0x53,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x52,0x2c,0x47,0x41,0x41,0x49,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x38,0x42,0x2c,0x53,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x2b,0x42,0x2c,0x63,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x53,0x6a,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x36,0x42,0x2c,0x65,0x41,0x41,0x6f,0x44,0x39,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x74,0x42,0x2c,0x49,0x41,0x41,0x4b,0x75,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x53,0x2c,0x49,0x41,0x41,0x72,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x79,0x45,0x2c,0x43,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x56,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x42,0x2c,0x63,0x41,0x41,0x30,0x43,0x2c,0x49,0x41,0x41,0x68,0x42,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x2b,0x42,0x2c,0x53,0x41,0x41,0x6d,0x42,0x6a,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x42,0x2c,0x49,0x41,0x41,0x51,0x37,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x4f,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x36,0x43,0x2c,0x4f,0x41,0x41,0x35,0x43,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x45,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x41,0x4b,0x77,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x31,0x62,0x2c,0x53,0x41,0x41,0x53,0x6f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x6c,0x4d,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x47,0x6f,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x7a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x47,0x41,0x41,0x73,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x4c,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x6a,0x45,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x52,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x53,0x41,0x41,0x67,0x42,0x79,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x79,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x4d,0x2c,0x47,0x41,0x41,0x47,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x4e,0x2c,0x53,0x41,0x41,0x53,0x36,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x35,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x30,0x73,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x53,0x2c,0x47,0x41,0x41,0x45,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x7a,0x2b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x57,0x41,0x41,0x46,0x41,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x38,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x57,0x41,0x41,0x57,0x39,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x30,0x73,0x42,0x2c,0x55,0x41,0x41,0x55,0x76,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x47,0x2c,0x47,0x41,0x41,0x45,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x33,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x30,0x73,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x38,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x6e,0x39,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x43,0x74,0x66,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x38,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x6e,0x39,0x42,0x2c,0x45,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x5a,0x73,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x76,0x42,0x2c,0x4b,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x51,0x41,0x41,0x6d,0x44,0x2c,0x4f,0x41,0x41,0x33,0x43,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2b,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x30,0x42,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x32,0x42,0x2c,0x47,0x41,0x41,0x49,0x6f,0x79,0x42,0x2c,0x49,0x41,0x41,0x32,0x45,0x31,0x44,0x2c,0x49,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x55,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x37,0x47,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x6f,0x44,0x2c,0x43,0x41,0x43,0x6c,0x61,0x2c,0x53,0x41,0x41,0x53,0x6f,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x79,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x52,0x73,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x38,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x37,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x39,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x73,0x42,0x2c,0x47,0x41,0x41,0x79,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x31,0x42,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x53,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x51,0x2c,0x45,0x41,0x41,0x45,0x2b,0x37,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x6a,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x6c,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x36,0x42,0x2c,0x6b,0x43,0x41,0x41,0x6b,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x34,0x42,0x41,0x43,0x31,0x64,0x6a,0x32,0x42,0x2c,0x49,0x41,0x41,0x49,0x72,0x45,0x2c,0x47,0x41,0x41,0x47,0x73,0x45,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x49,0x41,0x41,0x49,0x69,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x47,0x41,0x41,0x47,0x69,0x74,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x68,0x4d,0x2c,0x49,0x41,0x41,0x49,0x72,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x53,0x41,0x41,0x53,0x30,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x37,0x68,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x51,0x2c,0x45,0x41,0x41,0x45,0x78,0x50,0x2c,0x47,0x41,0x41,0x47,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x68,0x4d,0x2c,0x45,0x41,0x41,0x45,0x67,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x36,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x36,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x36,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x36,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x78,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x36,0x42,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x57,0x41,0x43,0x6c,0x66,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2f,0x4c,0x2c,0x47,0x41,0x41,0x47,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x6e,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x47,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x73,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x39,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x44,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x51,0x41,0x41,0x77,0x42,0x2c,0x6b,0x42,0x41,0x41,0x68,0x42,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x37,0x42,0x2c,0x63,0x41,0x41,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x73,0x42,0x2c,0x47,0x41,0x41,0x79,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x31,0x42,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x53,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x65,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x37,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6a,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6b,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x30,0x42,0x41,0x43,0x39,0x65,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x76,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x36,0x42,0x2c,0x6b,0x43,0x41,0x41,0x6b,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x6a,0x32,0x42,0x2c,0x49,0x41,0x41,0x49,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x73,0x45,0x2c,0x47,0x41,0x41,0x47,0x2b,0x73,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x68,0x4d,0x2c,0x49,0x41,0x41,0x49,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x49,0x2c,0x47,0x41,0x41,0x47,0x79,0x44,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x53,0x41,0x41,0x53,0x30,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x36,0x4a,0x2c,0x47,0x41,0x41,0x47,0x39,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x4d,0x2c,0x45,0x41,0x41,0x45,0x69,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x46,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x49,0x2c,0x45,0x41,0x41,0x45,0x68,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x6f,0x39,0x42,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x39,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x39,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x72,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x39,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x39,0x42,0x2c,0x34,0x42,0x41,0x43,0x35,0x66,0x70,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x39,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x76,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x39,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x68,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x73,0x39,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x35,0x42,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x72,0x32,0x42,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x69,0x58,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x53,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x39,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x35,0x42,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x75,0x42,0x2c,0x49,0x41,0x43,0x6a,0x66,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x75,0x36,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x72,0x32,0x42,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x6e,0x4b,0x2c,0x53,0x41,0x41,0x53,0x79,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x47,0x41,0x41,0x47,0x34,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x38,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x34,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x72,0x42,0x2c,0x51,0x41,0x41,0x51,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x39,0x42,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x53,0x41,0x41,0x77,0x49,0x2c,0x4f,0x41,0x41,0x2f,0x48,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x47,0x41,0x41,0x47,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x66,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x51,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x66,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x49,0x41,0x41,0x49,0x6f,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x57,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x65,0x41,0x41,0x65,0x70,0x53,0x2c,0x47,0x41,0x41,0x47,0x68,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x65,0x41,0x41,0x65,0x6e,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x6e,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x46,0x2c,0x47,0x41,0x41,0x47,0x68,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x79,0x42,0x2c,0x53,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x49,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x58,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x43,0x35,0x65,0x2c,0x53,0x41,0x41,0x53,0x6b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x75,0x43,0x2c,0x4f,0x41,0x41,0x70,0x43,0x6d,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x55,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x61,0x71,0x4c,0x71,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x62,0x31,0x4c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x35,0x74,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x64,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x75,0x51,0x2c,0x47,0x41,0x41,0x47,0x33,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x75,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x76,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x6c,0x4d,0x2c,0x53,0x41,0x41,0x53,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x30,0x44,0x32,0x46,0x2c,0x45,0x41,0x41,0x74,0x44,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x7a,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x71,0x4a,0x2c,0x49,0x41,0x41,0x76,0x49,0x39,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x70,0x51,0x2c,0x49,0x41,0x41,0x53,0x6f,0x45,0x2c,0x47,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x63,0x70,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x45,0x32,0x71,0x42,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x70,0x7a,0x42,0x2c,0x47,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x78,0x42,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x76,0x42,0x2c,0x47,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x72,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x67,0x42,0x41,0x41,0x32,0x43,0x2c,0x51,0x41,0x41,0x66,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x52,0x2c,0x61,0x41,0x41,0x34,0x42,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x63,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4b,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x2b,0x42,0x2c,0x53,0x41,0x41,0x67,0x42,0x6e,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x68,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x33,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x48,0x2c,0x49,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x72,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x74,0x42,0x2c,0x61,0x41,0x43,0x37,0x65,0x74,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x51,0x41,0x41,0x51,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x4a,0x2c,0x63,0x41,0x41,0x63,0x38,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x36,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x49,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x72,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x32,0x43,0x2c,0x51,0x41,0x41,0x66,0x68,0x4d,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x51,0x2c,0x59,0x41,0x41,0x71,0x42,0x2c,0x4f,0x41,0x47,0x70,0x4d,0x2c,0x53,0x41,0x41,0x59,0x39,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x69,0x42,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x77,0x42,0x71,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x33,0x42,0x48,0x2c,0x45,0x41,0x41,0x45,0x69,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x33,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x73,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x65,0x41,0x41,0x71,0x42,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4b,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x71,0x2b,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x78,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x68,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x55,0x41,0x41,0x55,0x37,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x51,0x41,0x41,0x51,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x51,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x4a,0x2c,0x63,0x41,0x41,0x63,0x38,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x36,0x74,0x42,0x2c,0x47,0x41,0x41,0x55,0x68,0x2b,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x51,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x62,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x68,0x64,0x2c,0x47,0x41,0x44,0x69,0x64,0x72,0x62,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x69,0x42,0x2c,0x61,0x41,0x41,0x61,0x70,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x69,0x42,0x2c,0x59,0x41,0x41,0x59,0x6f,0x63,0x2c,0x51,0x41,0x43,0x33,0x65,0x2c,0x49,0x41,0x41,0x49,0x70,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x30,0x43,0x2c,0x4f,0x41,0x41,0x72,0x43,0x31,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x45,0x41,0x41,0x30,0x43,0x6d,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x2f,0x42,0x48,0x2c,0x45,0x41,0x41,0x45,0x69,0x37,0x42,0x2c,0x47,0x41,0x41,0x6c,0x42,0x2f,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x61,0x79,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x30,0x42,0x2c,0x43,0x41,0x41,0x77,0x42,0x2c,0x47,0x41,0x41,0x76,0x42,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x59,0x41,0x41,0x65,0x4b,0x2c,0x49,0x41,0x41,0x49,0x76,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x50,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x32,0x42,0x2c,0x49,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x68,0x64,0x2c,0x4b,0x41,0x44,0x6b,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x54,0x2c,0x65,0x41,0x41,0x65,0x2f,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x43,0x35,0x65,0x41,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x31,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x33,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x30,0x42,0x2c,0x4f,0x41,0x41,0x7a,0x42,0x30,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x67,0x43,0x48,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x6c,0x43,0x48,0x2c,0x45,0x41,0x41,0x45,0x69,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x33,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x79,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x62,0x2c,0x4d,0x41,0x41,0x59,0x35,0x63,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x58,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x2b,0x42,0x2c,0x59,0x41,0x41,0x59,0x70,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x56,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x2f,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x69,0x42,0x2c,0x61,0x41,0x41,0x61,0x32,0x4b,0x2c,0x47,0x41,0x41,0x47,0x76,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x59,0x2c,0x47,0x41,0x41,0x47,0x2b,0x56,0x2c,0x47,0x41,0x41,0x47,0x6e,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x55,0x41,0x41,0x55,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x59,0x31,0x52,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x4c,0x72,0x4b,0x71,0x67,0x43,0x2c,0x43,0x41,0x41,0x47,0x74,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x71,0x2b,0x42,0x2c,0x53,0x41,0x41,0x53,0x6c,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4b,0x41,0x41,0x65,0x7a,0x70,0x42,0x2c,0x47,0x41,0x41,0x56,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x55,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x70,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x77,0x70,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x68,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x55,0x41,0x43,0x68,0x46,0x2c,0x4f,0x41,0x44,0x30,0x46,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x33,0x48,0x2c,0x49,0x41,0x41,0x4d,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x78,0x51,0x2c,0x49,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x51,0x38,0x66,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x76,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x74,0x42,0x2c,0x61,0x41,0x41,0x61,0x6e,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x49,0x41,0x41,0x4b,0x79,0x36,0x42,0x2c,0x61,0x41,0x41,0x34,0x42,0x2c,0x53,0x41,0x41,0x66,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2b,0x42,0x2c,0x61,0x41,0x41,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x43,0x6e,0x66,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x51,0x41,0x41,0x51,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x38,0x42,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x31,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x4a,0x2c,0x65,0x41,0x41,0x79,0x42,0x38,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x71,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x35,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x38,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x2b,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x39,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x38,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x63,0x41,0x41,0x63,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x36,0x74,0x42,0x2c,0x47,0x41,0x41,0x55,0x6c,0x2b,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x6f,0x4f,0x2c,0x4f,0x41,0x41,0x7a,0x4e,0x78,0x42,0x2c,0x47,0x41,0x41,0x56,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x55,0x43,0x2c,0x51,0x41,0x41,0x51,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x34,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x68,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x48,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x72,0x4a,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x51,0x41,0x41,0x55,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x49,0x41,0x41,0x6b,0x42,0x2c,0x51,0x41,0x41,0x64,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x59,0x41,0x41,0x6f,0x42,0x39,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x59,0x72,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x64,0x2c,0x53,0x41,0x41,0x53,0x75,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x38,0x44,0x2c,0x4f,0x41,0x41,0x33,0x44,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x78,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x68,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x4a,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x35,0x64,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x77,0x47,0x2c,0x4f,0x41,0x41,0x72,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x71,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x52,0x2c,0x49,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x6c,0x42,0x2c,0x57,0x41,0x41,0x59,0x71,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x59,0x37,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x47,0x6b,0x4a,0x2c,0x53,0x41,0x41,0x53,0x77,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x51,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x63,0x2c,0x53,0x41,0x41,0x53,0x75,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x36,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x7a,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x67,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x67,0x43,0x2c,0x53,0x41,0x41,0x53,0x74,0x2f,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x2f,0x42,0x2c,0x59,0x41,0x41,0x59,0x7a,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x2f,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x33,0x4f,0x2c,0x53,0x41,0x41,0x53,0x75,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x7a,0x42,0x2c,0x59,0x41,0x41,0x59,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x73,0x43,0x2c,0x47,0x41,0x41,0x6a,0x43,0x68,0x44,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x70,0x4a,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x74,0x42,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x55,0x41,0x41,0x71,0x42,0x33,0x51,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x41,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x57,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x65,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x71,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x53,0x41,0x41,0x53,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x31,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x50,0x34,0x71,0x42,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x45,0x72,0x7a,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x43,0x2f,0x65,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x56,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x55,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x64,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x59,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x59,0x2c,0x51,0x41,0x41,0x4a,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x59,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x36,0x42,0x2c,0x49,0x41,0x41,0x6a,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x55,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x6a,0x42,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x59,0x41,0x41,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x51,0x2c,0x51,0x41,0x41,0x51,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x79,0x51,0x2c,0x51,0x41,0x41,0x51,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x79,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2b,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x37,0x64,0x2c,0x53,0x41,0x41,0x53,0x36,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x79,0x44,0x2c,0x47,0x41,0x41,0x74,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x79,0x42,0x2c,0x61,0x41,0x41,0x61,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x63,0x41,0x41,0x63,0x67,0x43,0x2c,0x49,0x41,0x41,0x49,0x68,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x34,0x43,0x2c,0x49,0x41,0x41,0x6a,0x43,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x47,0x41,0x41,0x5a,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x61,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x53,0x41,0x41,0x53,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x53,0x41,0x41,0x51,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x75,0x65,0x2c,0x47,0x41,0x41,0x47,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x65,0x41,0x41,0x67,0x42,0x76,0x64,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x4f,0x39,0x61,0x2c,0x53,0x41,0x41,0x53,0x67,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x67,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x39,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x59,0x41,0x41,0x59,0x76,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x59,0x41,0x41,0x59,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x74,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x59,0x41,0x41,0x59,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x75,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x35,0x55,0x2c,0x53,0x41,0x41,0x53,0x67,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6c,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x57,0x41,0x41,0x57,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x51,0x2c,0x51,0x41,0x41,0x51,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x51,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x76,0x77,0x42,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x53,0x41,0x41,0x66,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x2b,0x42,0x2c,0x61,0x41,0x41,0x73,0x42,0x2f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x52,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4d,0x41,0x41,0x65,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x51,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x51,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x76,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x2b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x51,0x2c,0x51,0x41,0x41,0x79,0x43,0x2c,0x4f,0x41,0x41,0x6a,0x43,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x75,0x67,0x43,0x2c,0x63,0x41,0x41,0x63,0x2f,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x53,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x37,0x56,0x2c,0x53,0x41,0x41,0x53,0x6b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x4e,0x56,0x2c,0x47,0x41,0x41,0x47,0x74,0x75,0x42,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x36,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x55,0x74,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x55,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x56,0x71,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x32,0x51,0x2c,0x4f,0x41,0x41,0x7a,0x51,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x30,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x49,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x49,0x41,0x41,0x47,0x32,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x39,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x35,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x39,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x39,0x42,0x2c,0x65,0x41,0x41,0x65,0x35,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x39,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x4d,0x77,0x64,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x6a,0x58,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x53,0x41,0x41,0x61,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x53,0x2c,0x47,0x41,0x41,0x47,0x7a,0x53,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x4f,0x34,0x51,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x69,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x32,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x6e,0x69,0x42,0x2c,0x53,0x41,0x43,0x37,0x65,0x2c,0x47,0x41,0x41,0x54,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x77,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4c,0x6d,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x6b,0x42,0x2c,0x47,0x41,0x41,0x6a,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x6a,0x69,0x42,0x2c,0x53,0x41,0x41,0x59,0x73,0x64,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x39,0x50,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x52,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x2b,0x43,0x2c,0x4f,0x41,0x41,0x6a,0x43,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x65,0x70,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x69,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x50,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x43,0x6e,0x68,0x42,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x34,0x47,0x2c,0x45,0x41,0x41,0x47,0x35,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x47,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x6d,0x35,0x42,0x2c,0x63,0x41,0x41,0x63,0x33,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x6e,0x5a,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2b,0x48,0x2c,0x47,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x33,0x6d,0x42,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x4b,0x41,0x41,0x76,0x42,0x75,0x4e,0x2c,0x47,0x41,0x41,0x47,0x68,0x50,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x50,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x37,0x44,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x4b,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x2f,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6c,0x58,0x2c,0x47,0x41,0x41,0x47,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x59,0x41,0x41,0x59,0x37,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x6f,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x37,0x44,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x4b,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x2f,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6c,0x58,0x2c,0x47,0x41,0x41,0x47,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x59,0x41,0x43,0x31,0x65,0x37,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x6f,0x45,0x2c,0x49,0x41,0x41,0x49,0x72,0x46,0x2c,0x45,0x41,0x41,0x47,0x57,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x77,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x33,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x34,0x47,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x47,0x41,0x41,0x47,0x6b,0x48,0x2c,0x45,0x41,0x41,0x47,0x6c,0x48,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x6f,0x46,0x2c,0x45,0x41,0x41,0x47,0x74,0x46,0x2c,0x47,0x41,0x41,0x47,0x69,0x49,0x2c,0x47,0x41,0x41,0x47,0x6a,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x67,0x43,0x2c,0x51,0x41,0x41,0x51,0x6e,0x58,0x2c,0x49,0x41,0x41,0x49,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x4a,0x2c,0x53,0x41,0x41,0x53,0x6a,0x4a,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x63,0x41,0x41,0x63,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x33,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x4a,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4a,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x45,0x2c,0x49,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x5a,0x2c,0x63,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x53,0x69,0x4a,0x2c,0x55,0x41,0x41,0x55,0x2c,0x71,0x42,0x41,0x41,0x75,0x42,0x68,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x70,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x61,0x41,0x43,0x2f,0x66,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x33,0x49,0x2c,0x45,0x41,0x41,0x45,0x34,0x4e,0x2c,0x47,0x41,0x41,0x47,0x70,0x50,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x5a,0x2c,0x63,0x41,0x41,0x63,0x62,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6b,0x50,0x2c,0x47,0x41,0x41,0x47,0x35,0x4e,0x2c,0x45,0x41,0x41,0x45,0x34,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x50,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x5a,0x2c,0x63,0x41,0x41,0x63,0x62,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x33,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x2f,0x42,0x2c,0x55,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x47,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x67,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x67,0x43,0x2c,0x51,0x41,0x41,0x51,0x31,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x33,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x72,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x56,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x4e,0x2c,0x47,0x41,0x41,0x47,0x6a,0x50,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x55,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x69,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x50,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x43,0x6c,0x66,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x34,0x47,0x2c,0x45,0x41,0x41,0x47,0x70,0x49,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x45,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x69,0x4c,0x2c,0x51,0x41,0x41,0x51,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x51,0x41,0x41,0x78,0x4b,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x49,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x6d,0x35,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x37,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x47,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x53,0x77,0x67,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x75,0x4a,0x2c,0x47,0x41,0x41,0x47,0x76,0x4a,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x47,0x41,0x41,0x47,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x69,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x4b,0x41,0x41,0x68,0x42,0x77,0x4e,0x2c,0x47,0x41,0x41,0x47,0x68,0x50,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x31,0x45,0x2c,0x65,0x41,0x41,0x65,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x4d,0x2c,0x47,0x41,0x41,0x47,0x31,0x4e,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x70,0x45,0x2c,0x45,0x41,0x41,0x75,0x42,0x2c,0x4f,0x41,0x41,0x70,0x42,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6b,0x42,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x67,0x42,0x35,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x4a,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x47,0x41,0x41,0x49,0x2c,0x61,0x41,0x41,0x61,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x43,0x37,0x65,0x35,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x46,0x2c,0x49,0x41,0x41,0x49,0x30,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x30,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x43,0x41,0x41,0x6d,0x43,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x49,0x41,0x41,0x49,0x6c,0x42,0x2c,0x45,0x41,0x41,0x47,0x57,0x2c,0x65,0x41,0x41,0x65,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x70,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x6c,0x44,0x2c,0x45,0x41,0x41,0x47,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x34,0x47,0x2c,0x45,0x41,0x41,0x47,0x39,0x47,0x2c,0x47,0x41,0x41,0x47,0x30,0x49,0x2c,0x45,0x41,0x41,0x47,0x31,0x49,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x73,0x46,0x2c,0x45,0x41,0x41,0x47,0x39,0x47,0x2c,0x47,0x41,0x41,0x47,0x79,0x4a,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x61,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x73,0x44,0x2c,0x45,0x41,0x41,0x47,0x6e,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x33,0x48,0x2c,0x45,0x41,0x41,0x45,0x73,0x68,0x43,0x2c,0x57,0x41,0x41,0x57,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x53,0x41,0x41,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x56,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4f,0x41,0x41,0x63,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x35,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x63,0x41,0x41,0x63,0x63,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x63,0x41,0x43,0x6c,0x66,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x78,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x68,0x43,0x2c,0x51,0x41,0x41,0x51,0x6e,0x58,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x67,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4c,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x79,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x73,0x43,0x2c,0x47,0x41,0x41,0x68,0x43,0x47,0x2c,0x45,0x41,0x41,0x45,0x71,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x6e,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x6f,0x69,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x6a,0x69,0x42,0x2c,0x53,0x41,0x41,0x59,0x73,0x64,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x79,0x43,0x2c,0x47,0x41,0x41,0x78,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x39,0x50,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x72,0x42,0x2c,0x47,0x41,0x41,0x4b,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4a,0x2c,0x59,0x41,0x41,0x59,0x7a,0x4b,0x2c,0x49,0x41,0x43,0x2f,0x65,0x2c,0x51,0x41,0x44,0x6f,0x66,0x46,0x2c,0x45,0x41,0x43,0x76,0x66,0x77,0x75,0x42,0x2c,0x49,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4a,0x2c,0x55,0x41,0x41,0x55,0x7a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x74,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x36,0x52,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6c,0x58,0x2c,0x47,0x41,0x41,0x47,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4a,0x2c,0x55,0x41,0x41,0x55,0x7a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x35,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x53,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x49,0x2c,0x65,0x41,0x41,0x65,0x6b,0x35,0x42,0x2c,0x65,0x41,0x41,0x65,0x72,0x67,0x43,0x2c,0x49,0x41,0x41,0x4b,0x6f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x78,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4c,0x30,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x76,0x42,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x30,0x49,0x2c,0x49,0x41,0x41,0x47,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x63,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x78,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x67,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x43,0x35,0x66,0x39,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x71,0x44,0x2c,0x4b,0x41,0x41,0x37,0x42,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x70,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x65,0x41,0x41,0x79,0x42,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x72,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x53,0x41,0x41,0x61,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x53,0x2c,0x47,0x41,0x41,0x47,0x7a,0x53,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x74,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x52,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x59,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x6b,0x42,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x4b,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x51,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x56,0x36,0x30,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x53,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x33,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x63,0x41,0x41,0x63,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x30,0x42,0x2c,0x4b,0x41,0x43,0x72,0x66,0x36,0x4b,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x30,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x65,0x41,0x41,0x65,0x2b,0x70,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x55,0x41,0x41,0x55,0x32,0x36,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x2b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x76,0x42,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x30,0x49,0x2c,0x49,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x72,0x42,0x6e,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x65,0x41,0x41,0x30,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x75,0x43,0x2c,0x47,0x41,0x41,0x6c,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x34,0x42,0x2c,0x51,0x41,0x41,0x6a,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x2f,0x42,0x2c,0x57,0x41,0x41,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6f,0x67,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x58,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x30,0x42,0x2c,0x49,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x6d,0x47,0x2c,0x49,0x41,0x41,0x6c,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x73,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x6f,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x6f,0x78,0x42,0x2c,0x65,0x41,0x41,0x75,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x67,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x2f,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x52,0x2c,0x47,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x4e,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x47,0x41,0x41,0x51,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x43,0x2f,0x64,0x2c,0x51,0x41,0x41,0x64,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x59,0x41,0x41,0x6f,0x42,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x72,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x2b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x37,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x71,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x4f,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x72,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x73,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x2b,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x37,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x74,0x42,0x2c,0x63,0x41,0x41,0x63,0x68,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x63,0x41,0x41,0x63,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x63,0x41,0x41,0x63,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x71,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x50,0x2c,0x45,0x41,0x41,0x45,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x77,0x42,0x2c,0x61,0x41,0x41,0x61,0x76,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x61,0x41,0x41,0x61,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x65,0x41,0x41,0x65,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x6e,0x42,0x6b,0x61,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x56,0x41,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x55,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6a,0x53,0x2c,0x45,0x41,0x43,0x6c,0x67,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x75,0x42,0x2c,0x4b,0x41,0x41,0x49,0x69,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x79,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x52,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x6d,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x65,0x41,0x41,0x75,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x37,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x73,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x70,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x2f,0x42,0x2c,0x57,0x41,0x41,0x57,0x70,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x59,0x41,0x41,0x59,0x69,0x64,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x53,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x45,0x36,0x53,0x2c,0x4b,0x41,0x41,0x49,0x70,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x2f,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x61,0x41,0x41,0x61,0x37,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6e,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x79,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x53,0x41,0x41,0x53,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x2f,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x51,0x41,0x41,0x51,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x51,0x2c,0x49,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x54,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x4d,0x41,0x41,0x63,0x33,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4d,0x41,0x41,0x59,0x37,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x2f,0x42,0x2c,0x55,0x41,0x43,0x39,0x65,0x31,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x2f,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x39,0x74,0x42,0x2c,0x4b,0x41,0x41,0x49,0x37,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x32,0x30,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x61,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x45,0x72,0x7a,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x74,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x41,0x2c,0x47,0x41,0x41,0x4b,0x44,0x2c,0x49,0x41,0x41,0x45,0x69,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x68,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x72,0x51,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x48,0x71,0x50,0x2c,0x4d,0x41,0x41,0x69,0x42,0x75,0x43,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x45,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x67,0x43,0x2c,0x65,0x41,0x41,0x69,0x42,0x74,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x43,0x6c,0x58,0x2c,0x53,0x41,0x41,0x53,0x38,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4e,0x73,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x75,0x42,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x71,0x42,0x2c,0x4b,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x5a,0x2f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x65,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x48,0x33,0x52,0x2c,0x45,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x49,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x49,0x41,0x41,0x47,0x32,0x49,0x2c,0x4b,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x6a,0x42,0x6a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x53,0x41,0x41,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x46,0x33,0x52,0x2c,0x49,0x41,0x41,0x51,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x48,0x33,0x52,0x2c,0x45,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x76,0x42,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x30,0x49,0x2c,0x49,0x41,0x41,0x77,0x42,0x2c,0x51,0x41,0x41,0x72,0x42,0x37,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x67,0x42,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x52,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x6e,0x42,0x35,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x73,0x42,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x48,0x33,0x52,0x2c,0x45,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x30,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x37,0x42,0x2c,0x4b,0x41,0x43,0x31,0x67,0x42,0x2c,0x4b,0x41,0x41,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x72,0x42,0x37,0x43,0x31,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x74,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x71,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6e,0x4b,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x39,0x50,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x52,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x51,0x41,0x41,0x51,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x53,0x41,0x41,0x53,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x43,0x78,0x54,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x78,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x6a,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x75,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x47,0x41,0x41,0x47,0x6a,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x34,0x52,0x78,0x51,0x2c,0x45,0x41,0x41,0x78,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x45,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x45,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6b,0x47,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x53,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x73,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x47,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x53,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x47,0x41,0x41,0x47,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x48,0x2c,0x47,0x41,0x41,0x47,0x70,0x4a,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x43,0x2c,0x55,0x41,0x41,0x55,0x78,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x68,0x43,0x2c,0x51,0x41,0x41,0x51,0x6e,0x58,0x2c,0x49,0x41,0x41,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x31,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x7a,0x42,0x73,0x4a,0x2c,0x47,0x41,0x41,0x47,0x68,0x50,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x53,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x63,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x65,0x41,0x41,0x65,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x4e,0x2c,0x65,0x41,0x41,0x65,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x31,0x45,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x4b,0x41,0x43,0x6a,0x66,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x69,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x43,0x41,0x41,0x6d,0x43,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x63,0x41,0x41,0x63,0x41,0x2c,0x49,0x41,0x41,0x49,0x70,0x46,0x2c,0x45,0x41,0x41,0x47,0x57,0x2c,0x65,0x41,0x41,0x65,0x79,0x45,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x47,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x74,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x51,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x55,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x65,0x41,0x41,0x65,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x31,0x45,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x45,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x45,0x2c,0x65,0x41,0x41,0x65,0x51,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x4b,0x2c,0x45,0x41,0x43,0x70,0x66,0x31,0x46,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x46,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x6b,0x42,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x4f,0x37,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x42,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x4b,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x61,0x41,0x41,0x61,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x43,0x41,0x41,0x6d,0x43,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x42,0x41,0x41,0x36,0x42,0x41,0x2c,0x49,0x41,0x41,0x49,0x70,0x46,0x2c,0x45,0x41,0x41,0x47,0x57,0x2c,0x65,0x41,0x41,0x65,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x46,0x2c,0x47,0x41,0x41,0x47,0x75,0x69,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x4b,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x35,0x46,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x6a,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x6e,0x74,0x42,0x2c,0x4b,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x7a,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x6b,0x42,0x6c,0x62,0x2c,0x49,0x41,0x41,0x49,0x75,0x77,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x51,0x41,0x41,0x51,0x39,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x2b,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x68,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x49,0x78,0x52,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x79,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x68,0x43,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x32,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x32,0x42,0x2c,0x51,0x41,0x41,0x51,0x33,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x32,0x42,0x2c,0x61,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x31,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x67,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x68,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x6c,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x61,0x41,0x41,0x75,0x42,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x31,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x34,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x34,0x42,0x2c,0x51,0x41,0x41,0x51,0x35,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x69,0x42,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x38,0x42,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x6e,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6c,0x66,0x2c,0x53,0x41,0x41,0x53,0x38,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4d,0x41,0x41,0x6f,0x42,0x2c,0x51,0x41,0x41,0x64,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x6f,0x42,0x41,0x41,0x34,0x42,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x32,0x72,0x42,0x2c,0x57,0x41,0x41,0x57,0x33,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x72,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6f,0x42,0x2c,0x57,0x41,0x41,0x57,0x6e,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x72,0x42,0x2c,0x57,0x41,0x41,0x57,0x37,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x51,0x2c,0x47,0x41,0x41,0x47,0x2f,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x6e,0x61,0x2c,0x53,0x41,0x41,0x53,0x36,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x71,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x32,0x42,0x2c,0x49,0x41,0x41,0x31,0x42,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x52,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x53,0x41,0x41,0x53,0x6e,0x47,0x2c,0x45,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x52,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x54,0x2c,0x53,0x41,0x41,0x53,0x69,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x53,0x78,0x4b,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x57,0x41,0x41,0x57,0x77,0x7a,0x42,0x2c,0x61,0x41,0x41,0x61,0x6c,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6a,0x43,0x2c,0x61,0x41,0x41,0x61,0x6c,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x55,0x41,0x41,0x55,0x7a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x59,0x41,0x41,0x61,0x77,0x7a,0x42,0x2c,0x61,0x41,0x41,0x61,0x6c,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x49,0x6d,0x4b,0x2c,0x59,0x41,0x41,0x59,0x72,0x4b,0x2c,0x47,0x41,0x41,0x34,0x42,0x2c,0x51,0x41,0x41,0x78,0x42,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x43,0x2c,0x32,0x42,0x41,0x41,0x38,0x42,0x2c,0x49,0x41,0x41,0x53,0x6a,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x68,0x43,0x2c,0x55,0x41,0x41,0x55,0x78,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x68,0x43,0x2c,0x51,0x41,0x41,0x51,0x6e,0x58,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x56,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x67,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x47,0x41,0x41,0x47,0x69,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x31,0x58,0x2c,0x53,0x41,0x41,0x53,0x6b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6a,0x43,0x2c,0x61,0x41,0x41,0x61,0x6c,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x59,0x41,0x41,0x59,0x72,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x47,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x56,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x53,0x2c,0x47,0x41,0x41,0x47,0x6f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x52,0x2c,0x47,0x41,0x41,0x47,0x73,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x6e,0x52,0x2c,0x53,0x41,0x41,0x53,0x73,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x32,0x54,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x34,0x76,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x35,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x76,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x37,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x54,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x67,0x38,0x42,0x2c,0x49,0x41,0x41,0x47,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x4f,0x6f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x54,0x34,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x37,0x68,0x43,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x38,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x74,0x46,0x2c,0x59,0x41,0x41,0x59,0x6c,0x4b,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x6c,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6d,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x6a,0x35,0x42,0x2c,0x59,0x41,0x41,0x59,0x6c,0x4b,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x36,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x78,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x36,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x58,0x2c,0x47,0x41,0x41,0x47,0x33,0x58,0x2c,0x49,0x41,0x41,0x49,0x75,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x58,0x2c,0x47,0x41,0x41,0x45,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x78,0x4f,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x45,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x6d,0x73,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x6c,0x66,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6d,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x37,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x67,0x43,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x33,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x79,0x42,0x2c,0x63,0x41,0x41,0x73,0x43,0x2c,0x51,0x41,0x41,0x66,0x76,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x32,0x42,0x2c,0x61,0x41,0x41,0x73,0x42,0x2c,0x43,0x41,0x41,0x43,0x6e,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x32,0x42,0x2c,0x51,0x41,0x41,0x51,0x31,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x53,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x78,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x44,0x2c,0x49,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x41,0x2c,0x4b,0x41,0x41,0x66,0x2b,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x47,0x41,0x41,0x79,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x69,0x69,0x43,0x2c,0x4b,0x41,0x41,0x49,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x6f,0x42,0x41,0x41,0x64,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x57,0x41,0x41,0x67,0x43,0x30,0x7a,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x69,0x43,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x50,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x36,0x53,0x2c,0x49,0x41,0x41,0x47,0x33,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x67,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4f,0x41,0x43,0x68,0x66,0x6a,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x30,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x69,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x33,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x37,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x50,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x6f,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x62,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x70,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x49,0x41,0x41,0x49,0x56,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x51,0x2c,0x53,0x41,0x41,0x53,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x39,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x55,0x41,0x41,0x55,0x73,0x7a,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x34,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4b,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x6d,0x73,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x2b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x34,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x78,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x4c,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x4c,0x2c,0x47,0x41,0x41,0x47,0x34,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x2f,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x4d,0x41,0x41,0x66,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x67,0x43,0x2c,0x61,0x41,0x41,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x74,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x47,0x41,0x41,0x47,0x36,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x6a,0x65,0x2c,0x53,0x41,0x41,0x53,0x34,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x47,0x41,0x41,0x64,0x30,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x46,0x77,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x51,0x6b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x35,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x34,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x58,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x38,0x61,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x46,0x77,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x67,0x44,0x2c,0x47,0x41,0x41,0x39,0x43,0x6d,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x46,0x77,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x51,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x52,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x78,0x46,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x46,0x76,0x6e,0x42,0x2c,0x47,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x64,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x57,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x4f,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x68,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x44,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x43,0x6a,0x65,0x2c,0x47,0x41,0x41,0x6e,0x42,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x55,0x41,0x41,0x55,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x43,0x2c,0x45,0x41,0x41,0x47,0x39,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x4e,0x2c,0x47,0x41,0x41,0x47,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x69,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x4a,0x2c,0x47,0x41,0x41,0x47,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x31,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x50,0x2c,0x45,0x41,0x41,0x45,0x6c,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x71,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x71,0x50,0x2c,0x45,0x41,0x41,0x45,0x74,0x44,0x2c,0x47,0x41,0x41,0x47,0x6a,0x4d,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x48,0x2c,0x47,0x41,0x41,0x47,0x72,0x49,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x47,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x75,0x42,0x2c,0x45,0x41,0x41,0x47,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x50,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x32,0x43,0x2c,0x45,0x41,0x41,0x47,0x2f,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x38,0x48,0x2c,0x47,0x41,0x41,0x47,0x2f,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x63,0x41,0x41,0x63,0x6d,0x35,0x42,0x2c,0x59,0x41,0x41,0x59,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x47,0x2c,0x63,0x41,0x41,0x63,0x6d,0x35,0x42,0x2c,0x63,0x41,0x41,0x63,0x33,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x48,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x51,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x61,0x41,0x41,0x61,0x63,0x2c,0x47,0x41,0x41,0x47,0x74,0x48,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x53,0x41,0x43,0x6e,0x66,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x47,0x2c,0x63,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x49,0x63,0x2c,0x47,0x41,0x41,0x47,0x74,0x48,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x2f,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x37,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x64,0x38,0x61,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x46,0x77,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x74,0x4f,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x6a,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4a,0x2c,0x55,0x41,0x41,0x55,0x6a,0x4a,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x64,0x38,0x61,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x46,0x77,0x42,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x53,0x2c,0x47,0x41,0x41,0x47,0x31,0x58,0x2c,0x45,0x41,0x41,0x45,0x6b,0x58,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x52,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x47,0x34,0x47,0x2c,0x51,0x41,0x41,0x51,0x38,0x61,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x43,0x6e,0x66,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x53,0x41,0x4a,0x34,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x36,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x71,0x42,0x2c,0x4d,0x41,0x41,0x6c,0x42,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x51,0x4e,0x2c,0x51,0x41,0x41,0x61,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x63,0x41,0x41,0x63,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x75,0x4f,0x2c,0x55,0x41,0x41,0x55,0x67,0x30,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x43,0x6c,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x49,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6f,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x78,0x42,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x46,0x74,0x52,0x2c,0x47,0x41,0x41,0x4b,0x6d,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x73,0x46,0x2c,0x47,0x41,0x41,0x6e,0x46,0x67,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x71,0x42,0x2c,0x45,0x41,0x41,0x50,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x36,0x53,0x2c,0x49,0x41,0x41,0x47,0x76,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x38,0x42,0x2c,0x4b,0x41,0x41,0x49,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x6d,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x76,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x69,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x46,0x77,0x42,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x7a,0x42,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x65,0x41,0x41,0x6b,0x42,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x67,0x30,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x67,0x54,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x52,0x2c,0x45,0x41,0x41,0x45,0x68,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x52,0x2c,0x47,0x41,0x41,0x45,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x78,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x56,0x70,0x52,0x2c,0x47,0x41,0x41,0x4a,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x52,0x2c,0x49,0x41,0x41,0x4d,0x72,0x77,0x42,0x2c,0x4d,0x41,0x41,0x61,0x67,0x66,0x2c,0x45,0x41,0x41,0x45,0x39,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x6f,0x58,0x2c,0x45,0x41,0x41,0x45,0x6d,0x49,0x2c,0x45,0x41,0x41,0x45,0x6a,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x38,0x59,0x2c,0x45,0x41,0x41,0x45,0x34,0x61,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x43,0x41,0x41,0x43,0x6c,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x48,0x2c,0x4d,0x41,0x43,0x70,0x66,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x35,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x69,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x61,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x61,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x68,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x77,0x5a,0x2c,0x47,0x41,0x41,0x47,0x74,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x66,0x2c,0x45,0x41,0x41,0x45,0x70,0x66,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x71,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x54,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x66,0x2c,0x45,0x41,0x41,0x45,0x71,0x52,0x2c,0x47,0x41,0x41,0x45,0x70,0x52,0x2c,0x47,0x41,0x41,0x47,0x67,0x54,0x2c,0x47,0x41,0x41,0x47,0x6c,0x54,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x67,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x70,0x4b,0x2c,0x45,0x41,0x41,0x61,0x2c,0x6f,0x42,0x41,0x41,0x56,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4d,0x2c,0x4f,0x41,0x41,0x34,0x42,0x45,0x2c,0x59,0x41,0x41,0x59,0x6e,0x4d,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4d,0x2c,0x59,0x41,0x41,0x59,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x61,0x41,0x41,0x61,0x6e,0x4d,0x2c,0x45,0x41,0x41,0x45,0x79,0x69,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x51,0x41,0x41,0x53,0x74,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x68,0x42,0x2c,0x55,0x41,0x41,0x6b,0x43,0x72,0x4f,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x31,0x42,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x68,0x42,0x2c,0x51,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x48,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x45,0x2c,0x65,0x41,0x41,0x65,0x2c,0x57,0x41,0x41,0x57,0x32,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x2b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x32,0x42,0x2c,0x51,0x41,0x43,0x7a,0x66,0x31,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x55,0x41,0x41,0x55,0x39,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x69,0x49,0x2c,0x45,0x41,0x41,0x45,0x37,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x72,0x46,0x2c,0x55,0x41,0x41,0x55,0x2f,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x47,0x2c,0x47,0x41,0x41,0x47,0x79,0x5a,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x49,0x2c,0x45,0x41,0x41,0x45,0x37,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x66,0x2c,0x65,0x41,0x41,0x65,0x6d,0x66,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2b,0x65,0x2c,0x45,0x41,0x41,0x45,0x2f,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2f,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x65,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x65,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x65,0x2c,0x45,0x41,0x41,0x45,0x74,0x66,0x2c,0x51,0x41,0x41,0x51,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x74,0x66,0x2c,0x53,0x41,0x41,0x53,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x52,0x2c,0x49,0x41,0x41,0x49,0x67,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x66,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x56,0x2c,0x49,0x41,0x41,0x49,0x67,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x65,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x74,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x66,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x39,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x32,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x46,0x77,0x42,0x2c,0x47,0x41,0x41,0x4b,0x6d,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6a,0x43,0x2c,0x47,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x43,0x74,0x64,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x46,0x31,0x52,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x31,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x55,0x41,0x41,0x6b,0x42,0x2c,0x47,0x41,0x41,0x52,0x78,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x51,0x41,0x41,0x57,0x6e,0x48,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x67,0x42,0x79,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x6a,0x43,0x2c,0x45,0x41,0x41,0x54,0x67,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x43,0x2c,0x47,0x41,0x41,0x55,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x73,0x42,0x38,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x54,0x67,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x43,0x2c,0x47,0x41,0x41,0x55,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x46,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x46,0x31,0x52,0x2c,0x49,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6f,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x76,0x62,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x54,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x37,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x65,0x41,0x41,0x65,0x71,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x76,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x33,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x4d,0x2c,0x65,0x41,0x41,0x65,0x73,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x38,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4c,0x44,0x2c,0x47,0x41,0x41,0x47,0x76,0x67,0x43,0x2c,0x47,0x41,0x41,0x4d,0x77,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x72,0x38,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x37,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x67,0x43,0x2c,0x49,0x41,0x41,0x4f,0x78,0x38,0x42,0x2c,0x47,0x41,0x41,0x4a,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x67,0x43,0x2c,0x49,0x41,0x41,0x4d,0x72,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x77,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x63,0x41,0x41,0x63,0x79,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x32,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x51,0x41,0x41,0x51,0x6f,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x37,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x38,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x32,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6b,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x66,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x2b,0x42,0x2c,0x65,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6b,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x76,0x63,0x2c,0x53,0x41,0x41,0x53,0x75,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x52,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x52,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x67,0x38,0x42,0x2c,0x49,0x41,0x41,0x47,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x52,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x55,0x77,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x6d,0x4c,0x2c,0x47,0x41,0x41,0x47,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x39,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x78,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x6a,0x43,0x2c,0x6f,0x43,0x41,0x41,0x6f,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x39,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x50,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x4c,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x43,0x76,0x66,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x43,0x2c,0x55,0x41,0x41,0x55,0x6b,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x50,0x2c,0x47,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x34,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x37,0x42,0x2c,0x57,0x41,0x41,0x57,0x31,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6d,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x2b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x6b,0x43,0x2c,0x49,0x41,0x41,0x49,0x33,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x79,0x4a,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x68,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6a,0x4d,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x69,0x4d,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x62,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x63,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x66,0x2c,0x47,0x41,0x41,0x47,0x72,0x5a,0x2c,0x47,0x41,0x41,0x47,0x71,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x43,0x35,0x63,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x6f,0x69,0x43,0x2c,0x49,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x52,0x6c,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x6b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x52,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x66,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x66,0x70,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x53,0x41,0x41,0x6f,0x42,0x2c,0x43,0x41,0x41,0x43,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6f,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x77,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x72,0x69,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6f,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x76,0x53,0x2c,0x53,0x41,0x41,0x53,0x34,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x4f,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x46,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x7a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x79,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x37,0x64,0x2c,0x49,0x41,0x77,0x42,0x6b,0x4e,0x67,0x7a,0x42,0x2c,0x47,0x41,0x78,0x42,0x39,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x68,0x43,0x2c,0x45,0x41,0x41,0x47,0x32,0x78,0x42,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x30,0x50,0x2c,0x47,0x41,0x41,0x47,0x72,0x68,0x43,0x2c,0x45,0x41,0x41,0x47,0x6f,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6b,0x48,0x2c,0x47,0x41,0x41,0x47,0x74,0x68,0x43,0x2c,0x45,0x41,0x41,0x47,0x6f,0x55,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x67,0x63,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x74,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x78,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x34,0x56,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6b,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x44,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x76,0x4d,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x33,0x46,0x2c,0x49,0x41,0x41,0x4b,0x2f,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x67,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x68,0x7a,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x68,0x55,0x2c,0x53,0x41,0x41,0x53,0x75,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4d,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x75,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x6f,0x52,0x2c,0x47,0x41,0x41,0x53,0x41,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x56,0x2c,0x47,0x41,0x41,0x47,0x39,0x58,0x2c,0x59,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2f,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x77,0x42,0x2c,0x49,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x50,0x2f,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x56,0x2c,0x49,0x41,0x41,0x6b,0x42,0x72,0x56,0x2c,0x45,0x41,0x41,0x69,0x42,0x41,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x6a,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x68,0x42,0x2c,0x4f,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x4a,0x2c,0x47,0x41,0x41,0x47,0x76,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6f,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x67,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6d,0x56,0x2c,0x47,0x41,0x41,0x47,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x71,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4d,0x37,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x30,0x33,0x42,0x2c,0x4b,0x41,0x41,0x45,0x31,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x30,0x33,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x37,0x44,0x2c,0x4d,0x41,0x41,0x4f,0x73,0x52,0x2c,0x49,0x41,0x41,0x49,0x6a,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x34,0x68,0x43,0x2c,0x49,0x41,0x41,0x47,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x49,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x32,0x7a,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x76,0x42,0x2c,0x51,0x41,0x41,0x55,0x79,0x53,0x2c,0x47,0x41,0x41,0x47,0x6a,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x79,0x61,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x31,0x59,0x2c,0x53,0x41,0x41,0x53,0x75,0x59,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x63,0x41,0x33,0x4d,0x7a,0x42,0x2c,0x53,0x41,0x41,0x59,0x6c,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x6c,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x59,0x41,0x41,0x59,0x6c,0x54,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6d,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x7a,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x2f,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6d,0x53,0x2c,0x47,0x41,0x41,0x47,0x70,0x53,0x2c,0x47,0x41,0x41,0x47,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x4b,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x6d,0x54,0x2c,0x47,0x41,0x41,0x47,0x6a,0x50,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x49,0x41,0x41,0x51,0x36,0x46,0x2c,0x47,0x41,0x41,0x47,0x37,0x46,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6d,0x43,0x2c,0x63,0x41,0x41,0x63,0x76,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x45,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x32,0x4d,0x6e,0x4c,0x77,0x67,0x43,0x2c,0x43,0x41,0x41,0x47,0x72,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x54,0x2c,0x47,0x41,0x41,0x47,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x30,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x7a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x53,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6d,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x72,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6d,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x72,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x66,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x53,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x35,0x49,0x73,0x4a,0x2c,0x53,0x41,0x41,0x59,0x6e,0x47,0x2c,0x47,0x41,0x41,0x47,0x75,0x74,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x7a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x34,0x49,0x35,0x4b,0x75,0x6d,0x43,0x2c,0x43,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x59,0x2c,0x47,0x41,0x41,0x47,0x37,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x72,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x34,0x49,0x2c,0x4b,0x41,0x41,0x4d,0x6e,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x47,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x56,0x2c,0x47,0x41,0x41,0x47,0x39,0x54,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x54,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x68,0x54,0x2c,0x45,0x41,0x41,0x45,0x6b,0x54,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x77,0x43,0x2c,0x51,0x41,0x41,0x51,0x6c,0x54,0x2c,0x45,0x41,0x41,0x45,0x6f,0x54,0x2c,0x53,0x41,0x41,0x70,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x55,0x70,0x54,0x2c,0x45,0x41,0x41,0x45,0x77,0x54,0x2c,0x47,0x41,0x41,0x73,0x42,0x78,0x54,0x2c,0x45,0x41,0x41,0x45,0x75,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x6d,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x72,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x61,0x41,0x41,0x61,0x68,0x6d,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x37,0x63,0x2c,0x53,0x41,0x41,0x53,0x77,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x58,0x36,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x6c,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x65,0x41,0x41,0x65,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x54,0x2c,0x47,0x41,0x41,0x47,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x49,0x30,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x7a,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x46,0x41,0x2c,0x49,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6d,0x43,0x2c,0x65,0x41,0x41,0x65,0x6e,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x67,0x44,0x2c,0x49,0x41,0x41,0x78,0x43,0x6e,0x50,0x2c,0x4b,0x41,0x41,0x49,0x31,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x69,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x49,0x68,0x6c,0x43,0x2c,0x49,0x41,0x41,0x45,0x75,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x44,0x2c,0x47,0x41,0x41,0x47,0x6a,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x67,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x38,0x6d,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6d,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x55,0x38,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x54,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x2f,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x68,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x37,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x79,0x43,0x2c,0x47,0x41,0x41,0x78,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x52,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x54,0x2c,0x47,0x41,0x41,0x47,0x2f,0x55,0x2c,0x4d,0x41,0x41,0x57,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x4b,0x35,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4f,0x41,0x43,0x68,0x66,0x2c,0x43,0x41,0x41,0x75,0x42,0x2c,0x47,0x41,0x41,0x74,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x56,0x2c,0x55,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x46,0x6a,0x51,0x2c,0x4b,0x41,0x47,0x6e,0x43,0x2c,0x53,0x41,0x41,0x59,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x52,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x79,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x33,0x42,0x2c,0x51,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x72,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x31,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x34,0x62,0x2c,0x47,0x41,0x41,0x47,0x37,0x68,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x56,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x77,0x42,0x2c,0x4d,0x41,0x41,0x66,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x73,0x67,0x43,0x2c,0x63,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x51,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x53,0x41,0x41,0x53,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x48,0x76,0x58,0x67,0x31,0x42,0x2c,0x43,0x41,0x41,0x47,0x7a,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x56,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4d,0x41,0x41,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x52,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x54,0x2c,0x47,0x41,0x41,0x47,0x2f,0x55,0x2c,0x4d,0x41,0x41,0x57,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x4b,0x35,0x53,0x2c,0x45,0x41,0x41,0x71,0x43,0x2c,0x4f,0x41,0x41,0x6e,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6e,0x43,0x2c,0x61,0x41,0x41,0x61,0x31,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x35,0x6c,0x43,0x2c,0x45,0x41,0x41,0x53,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x43,0x38,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x44,0x37,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x52,0x51,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x53,0x2c,0x55,0x41,0x41,0x46,0x41,0x2c,0x4b,0x41,0x41,0x65,0x41,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x49,0x41,0x41,0x62,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x78,0x42,0x2c,0x4d,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x79,0x42,0x2c,0x4b,0x41,0x41,0x6e,0x42,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x67,0x42,0x41,0x41,0x71,0x42,0x6c,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x67,0x34,0x42,0x2c,0x4b,0x41,0x41,0x49,0x78,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x61,0x41,0x41,0x61,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x6a,0x54,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x33,0x63,0x2c,0x47,0x41,0x41,0x47,0x30,0x63,0x2c,0x47,0x41,0x41,0x47,0x31,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x76,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6f,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x52,0x51,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x53,0x2c,0x51,0x41,0x41,0x46,0x41,0x2c,0x4b,0x41,0x43,0x39,0x65,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x71,0x42,0x2c,0x49,0x41,0x41,0x66,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x57,0x41,0x41,0x65,0x31,0x54,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6d,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x53,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x49,0x41,0x41,0x4b,0x46,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x71,0x47,0x2c,0x47,0x41,0x41,0x70,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x71,0x47,0x2c,0x49,0x41,0x41,0x33,0x46,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x58,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x52,0x2c,0x4b,0x41,0x41,0x49,0x74,0x52,0x2c,0x47,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x33,0x63,0x2c,0x47,0x41,0x41,0x47,0x30,0x63,0x2c,0x47,0x41,0x41,0x47,0x31,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x68,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x36,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x2b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x67,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x56,0x6b,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x59,0x39,0x53,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x65,0x41,0x41,0x65,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x64,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x72,0x58,0x2c,0x53,0x41,0x41,0x53,0x69,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6c,0x43,0x2c,0x47,0x41,0x41,0x32,0x47,0x2c,0x4f,0x41,0x41,0x78,0x47,0x72,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x4e,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x65,0x41,0x41,0x65,0x34,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x56,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x34,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x70,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x6d,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x68,0x43,0x2c,0x49,0x41,0x41,0x57,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x74,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x45,0x35,0x4c,0x2c,0x53,0x41,0x41,0x53,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x75,0x44,0x2c,0x49,0x41,0x41,0x70,0x44,0x41,0x2c,0x49,0x41,0x41,0x49,0x6d,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x6b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x7a,0x55,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x63,0x41,0x41,0x63,0x31,0x55,0x2c,0x45,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6d,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x34,0x54,0x2c,0x47,0x41,0x41,0x47,0x37,0x54,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x36,0x7a,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x6d,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x31,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x55,0x2c,0x47,0x41,0x41,0x47,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x35,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x54,0x2c,0x47,0x41,0x41,0x47,0x2f,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x4b,0x35,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x69,0x46,0x2c,0x4f,0x41,0x41,0x33,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6e,0x43,0x2c,0x61,0x41,0x41,0x61,0x6e,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x56,0x2c,0x55,0x41,0x41,0x55,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x6e,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x53,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x76,0x64,0x2c,0x53,0x41,0x41,0x53,0x79,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4a,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x33,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x55,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x79,0x61,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x5a,0x2c,0x47,0x41,0x41,0x47,0x78,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x47,0x76,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x30,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4d,0x38,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x31,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x33,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x78,0x57,0x2c,0x45,0x41,0x41,0x45,0x36,0x54,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x30,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x71,0x56,0x2c,0x47,0x41,0x41,0x45,0x37,0x54,0x2c,0x45,0x41,0x41,0x45,0x75,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x39,0x58,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x58,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x35,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x61,0x79,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x76,0x73,0x42,0x2c,0x51,0x41,0x41,0x51,0x67,0x61,0x2c,0x47,0x41,0x41,0x45,0x75,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x68,0x54,0x2c,0x53,0x41,0x41,0x53,0x6f,0x49,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6e,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6c,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x43,0x2c,0x63,0x41,0x41,0x69,0x44,0x2c,0x49,0x41,0x41,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x6e,0x43,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x7a,0x63,0x2c,0x47,0x41,0x41,0x47,0x33,0x71,0x42,0x2c,0x49,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x39,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x74,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4e,0x71,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x36,0x42,0x2c,0x51,0x41,0x41,0x33,0x42,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x71,0x42,0x2c,0x79,0x42,0x41,0x41,0x34,0x42,0x2c,0x49,0x41,0x41,0x53,0x74,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x32,0x48,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x49,0x2c,0x47,0x41,0x41,0x45,0x49,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x47,0x41,0x41,0x45,0x47,0x2c,0x49,0x41,0x41,0x47,0x32,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x47,0x41,0x41,0x47,0x70,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x76,0x49,0x2c,0x47,0x41,0x41,0x45,0x30,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x79,0x37,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x71,0x45,0x2c,0x47,0x41,0x41,0x70,0x45,0x67,0x6d,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x45,0x68,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x47,0x2c,0x47,0x41,0x41,0x47,0x31,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x6c,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x71,0x52,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x76,0x79,0x42,0x2c,0x45,0x41,0x43,0x31,0x66,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x79,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x32,0x42,0x2c,0x51,0x41,0x41,0x68,0x42,0x75,0x42,0x2c,0x47,0x41,0x41,0x52,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x79,0x42,0x2c,0x49,0x41,0x41,0x4f,0x30,0x79,0x42,0x2c,0x61,0x41,0x41,0x71,0x42,0x2c,0x43,0x41,0x41,0x43,0x7a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x76,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x35,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x67,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x79,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x33,0x4b,0x2c,0x53,0x41,0x41,0x53,0x67,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x75,0x42,0x2c,0x47,0x41,0x41,0x6e,0x42,0x72,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x44,0x2c,0x47,0x41,0x41,0x47,0x68,0x6a,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x6b,0x42,0x2c,0x47,0x41,0x41,0x4d,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6c,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x6a,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x31,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x30,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x78,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x75,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x34,0x43,0x2c,0x47,0x41,0x41,0x33,0x43,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x49,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6b,0x50,0x2c,0x47,0x41,0x41,0x47,0x33,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x6f,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x68,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x4c,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x6e,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x45,0x70,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x78,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6e,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x36,0x4b,0x2c,0x45,0x41,0x41,0x45,0x73,0x65,0x2c,0x51,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6a,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x53,0x2c,0x55,0x41,0x41,0x55,0x77,0x66,0x2c,0x47,0x41,0x41,0x47,0x6a,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x42,0x2c,0x59,0x41,0x41,0x59,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x61,0x2c,0x63,0x41,0x41,0x63,0x6f,0x66,0x2c,0x45,0x41,0x41,0x45,0x70,0x66,0x2c,0x63,0x41,0x43,0x78,0x65,0x62,0x2c,0x45,0x41,0x41,0x45,0x6d,0x68,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x61,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x66,0x2c,0x45,0x41,0x41,0x45,0x77,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2f,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x67,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4d,0x2c,0x45,0x41,0x41,0x45,0x76,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x50,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x4d,0x41,0x41,0x51,0x69,0x4f,0x2c,0x47,0x41,0x41,0x47,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x47,0x41,0x41,0x4f,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x6a,0x42,0x2c,0x47,0x41,0x41,0x5a,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x47,0x41,0x41,0x63,0x36,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x77,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x6d,0x46,0x2c,0x47,0x41,0x41,0x47,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x68,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x6d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x73,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x46,0x2c,0x47,0x41,0x41,0x47,0x6b,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x67,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x62,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x32,0x75,0x42,0x2c,0x49,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x50,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x70,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x47,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x47,0x41,0x41,0x47,0x2f,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x52,0x41,0x2c,0x45,0x41,0x41,0x45,0x72,0x58,0x2c,0x53,0x41,0x41,0x65,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x72,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x72,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x4d,0x2c,0x47,0x41,0x41,0x47,0x78,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x69,0x38,0x42,0x2c,0x4b,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x33,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x32,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x4f,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x7a,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x43,0x70,0x66,0x31,0x52,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x6b,0x42,0x38,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x62,0x71,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x49,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x71,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x4f,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x74,0x4f,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x53,0x41,0x41,0x61,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x77,0x58,0x2c,0x45,0x41,0x41,0x45,0x67,0x55,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x55,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x68,0x56,0x2c,0x49,0x41,0x41,0x49,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x78,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x52,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x6b,0x42,0x38,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x62,0x77,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x49,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x70,0x42,0x2c,0x47,0x41,0x41,0x49,0x7a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x70,0x42,0x2c,0x45,0x41,0x41,0x47,0x73,0x62,0x2c,0x4b,0x41,0x41,0x49,0x39,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x49,0x41,0x41,0x49,0x38,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x39,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x51,0x41,0x41,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6d,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x37,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x51,0x41,0x41,0x73,0x42,0x2c,0x4f,0x41,0x41,0x64,0x30,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x6b,0x42,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x32,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x72,0x64,0x2c,0x53,0x41,0x41,0x53,0x6d,0x67,0x43,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x4b,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x55,0x41,0x41,0x48,0x7a,0x44,0x2c,0x4b,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x55,0x41,0x41,0x48,0x6b,0x52,0x2c,0x4b,0x41,0x41,0x65,0x61,0x2c,0x47,0x41,0x41,0x47,0x74,0x4f,0x2c,0x47,0x41,0x41,0x45,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x71,0x43,0x2c,0x49,0x41,0x41,0x37,0x42,0x6e,0x50,0x2c,0x4b,0x41,0x41,0x49,0x31,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x69,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x49,0x68,0x6c,0x43,0x2c,0x49,0x41,0x41,0x45,0x75,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x79,0x6e,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x67,0x43,0x2c,0x47,0x41,0x41,0x74,0x42,0x6b,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x33,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x33,0x51,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x6a,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x2f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x58,0x32,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x53,0x6e,0x44,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x34,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x43,0x2c,0x49,0x41,0x41,0x47,0x32,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x49,0x74,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x2b,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x6c,0x43,0x2c,0x47,0x41,0x41,0x45,0x2f,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x31,0x64,0x2c,0x53,0x41,0x41,0x53,0x73,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x58,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x52,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x62,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x69,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x2c,0x59,0x41,0x41,0x4a,0x71,0x47,0x2c,0x47,0x41,0x41,0x45,0x39,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x62,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x6d,0x43,0x2c,0x4f,0x41,0x41,0x6e,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x57,0x41,0x41,0x4d,0x71,0x7a,0x42,0x2c,0x47,0x41,0x41,0x45,0x39,0x6b,0x43,0x2c,0x47,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x6d,0x45,0x2c,0x4f,0x41,0x41,0x58,0x38,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x45,0x6b,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x35,0x44,0x68,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x67,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x76,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x34,0x42,0x2c,0x43,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x66,0x39,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x53,0x41,0x41,0x79,0x42,0x2c,0x59,0x41,0x41,0x4a,0x38,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2f,0x6b,0x43,0x2c,0x47,0x41,0x41,0x53,0x2b,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2f,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x36,0x68,0x43,0x2c,0x4b,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x46,0x2c,0x47,0x41,0x41,0x47,0x72,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x54,0x2c,0x47,0x41,0x41,0x45,0x35,0x54,0x2c,0x45,0x41,0x41,0x45,0x73,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x2b,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x33,0x59,0x2c,0x53,0x41,0x41,0x59,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6d,0x6c,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x37,0x52,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6e,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x31,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x32,0x43,0x2c,0x47,0x41,0x41,0x74,0x43,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6e,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x4b,0x6c,0x6e,0x43,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x4e,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6d,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x6d,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x35,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x57,0x41,0x41,0x38,0x4a,0x2c,0x47,0x41,0x7a,0x4e,0x74,0x54,0x2c,0x53,0x41,0x41,0x59,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x63,0x41,0x41,0x63,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x61,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x31,0x55,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x45,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6d,0x43,0x2c,0x63,0x41,0x41,0x63,0x6e,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x6e,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x33,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x55,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x55,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x72,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x6e,0x56,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6d,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x71,0x53,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x79,0x4e,0x35,0x47,0x6d,0x6d,0x43,0x2c,0x43,0x41,0x41,0x47,0x37,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x49,0x41,0x41,0x49,0x30,0x33,0x42,0x2c,0x4b,0x41,0x41,0x49,0x73,0x4e,0x2c,0x47,0x41,0x41,0x45,0x74,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x4e,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x66,0x2f,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x67,0x43,0x2c,0x65,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x52,0x72,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x51,0x41,0x41,0x61,0x38,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x7a,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x67,0x42,0x2c,0x4f,0x41,0x41,0x4c,0x71,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x49,0x6a,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x52,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4d,0x41,0x41,0x66,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x67,0x43,0x2c,0x65,0x41,0x41,0x71,0x42,0x37,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2b,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x43,0x68,0x66,0x2c,0x49,0x41,0x41,0x49,0x72,0x57,0x2c,0x45,0x41,0x41,0x45,0x30,0x54,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x52,0x2c,0x47,0x41,0x41,0x47,0x33,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x31,0x43,0x70,0x43,0x2c,0x53,0x41,0x41,0x59,0x6e,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x67,0x42,0x2c,0x47,0x41,0x41,0x62,0x73,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x53,0x2c,0x47,0x41,0x41,0x61,0x75,0x4d,0x2c,0x47,0x41,0x41,0x56,0x72,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6b,0x42,0x2c,0x4d,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x6a,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x79,0x6b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x44,0x2c,0x49,0x41,0x41,0x49,0x35,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x39,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x38,0x43,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x47,0x41,0x41,0x6a,0x44,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x49,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x7a,0x49,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x42,0x2c,0x61,0x41,0x41,0x61,0x6e,0x6b,0x42,0x2c,0x51,0x41,0x41,0x65,0x6f,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x6a,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x6a,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x6a,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x6a,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x6a,0x42,0x2c,0x55,0x41,0x41,0x55,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6a,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x72,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x4b,0x2c,0x53,0x41,0x41,0x53,0x68,0x4a,0x2c,0x45,0x41,0x41,0x45,0x67,0x4a,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x65,0x2c,0x47,0x41,0x41,0x47,0x6c,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x4b,0x46,0x2c,0x49,0x41,0x41,0x49,0x39,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6d,0x42,0x2c,0x57,0x41,0x41,0x57,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x75,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x74,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6d,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6d,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x49,0x2c,0x47,0x41,0x43,0x6e,0x66,0x71,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x6d,0x42,0x2c,0x55,0x41,0x41,0x55,0x76,0x4b,0x2c,0x51,0x41,0x41,0x57,0x2c,0x51,0x41,0x41,0x51,0x38,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x37,0x6d,0x42,0x2c,0x61,0x41,0x41,0x6b,0x42,0x38,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x38,0x43,0x2c,0x47,0x41,0x41,0x35,0x43,0x67,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2f,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x46,0x2c,0x49,0x41,0x41,0x49,0x6e,0x45,0x2c,0x49,0x41,0x41,0x49,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x73,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x50,0x2c,0x49,0x41,0x41,0x49,0x78,0x50,0x2c,0x49,0x41,0x41,0x49,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6e,0x4e,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x55,0x6f,0x4e,0x2c,0x47,0x41,0x41,0x4a,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x4d,0x76,0x68,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x73,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x68,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x32,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x36,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x65,0x2c,0x45,0x41,0x41,0x45,0x2b,0x65,0x2c,0x49,0x41,0x41,0x49,0x39,0x65,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x79,0x6b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x2b,0x43,0x2c,0x49,0x41,0x41,0x31,0x43,0x73,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x68,0x47,0x2c,0x59,0x41,0x41,0x59,0x78,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6b,0x42,0x2c,0x65,0x41,0x41,0x65,0x76,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x58,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4f,0x77,0x71,0x42,0x2c,0x47,0x41,0x41,0x45,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x4f,0x74,0x69,0x43,0x2c,0x47,0x41,0x41,0x4a,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x49,0x41,0x41,0x4d,0x72,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x66,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x73,0x67,0x43,0x2c,0x65,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x78,0x5a,0x2c,0x45,0x41,0x41,0x45,0x37,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x52,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x52,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x43,0x76,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x33,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x47,0x2c,0x63,0x41,0x41,0x63,0x31,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6a,0x58,0x2c,0x63,0x41,0x41,0x63,0x6f,0x58,0x2c,0x45,0x41,0x41,0x45,0x68,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x5a,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x54,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x6a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6d,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x52,0x2c,0x47,0x41,0x41,0x47,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x62,0x2c,0x6f,0x43,0x41,0x41,0x6f,0x43,0x72,0x62,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x2b,0x52,0x2c,0x45,0x41,0x41,0x45,0x78,0x65,0x2c,0x53,0x41,0x41,0x53,0x77,0x65,0x2c,0x45,0x41,0x41,0x45,0x78,0x66,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x66,0x2c,0x45,0x41,0x41,0x45,0x78,0x65,0x2c,0x55,0x41,0x41,0x55,0x77,0x65,0x2c,0x45,0x41,0x41,0x45,0x78,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x77,0x45,0x2c,0x45,0x41,0x41,0x45,0x39,0x65,0x2c,0x59,0x41,0x41,0x59,0x38,0x65,0x2c,0x45,0x41,0x41,0x45,0x78,0x45,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4d,0x41,0x41,0x79,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x66,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x70,0x42,0x2c,0x47,0x41,0x41,0x47,0x6f,0x5a,0x2c,0x47,0x41,0x41,0x45,0x76,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x66,0x70,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x53,0x41,0x41,0x6f,0x42,0x2c,0x43,0x41,0x41,0x43,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x73,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x72,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6f,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x5a,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x57,0x2c,0x43,0x41,0x77,0x43,0x6c,0x64,0x6f,0x46,0x2c,0x43,0x41,0x41,0x47,0x39,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x34,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x75,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x6d,0x52,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x68,0x42,0x2c,0x47,0x41,0x41,0x45,0x68,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x47,0x41,0x41,0x45,0x31,0x54,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x74,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x6a,0x53,0x2c,0x45,0x41,0x41,0x73,0x46,0x2c,0x47,0x41,0x41,0x70,0x46,0x75,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x2f,0x53,0x2c,0x49,0x41,0x41,0x49,0x32,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x68,0x4f,0x6d,0x4a,0x2c,0x53,0x41,0x41,0x59,0x72,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x36,0x54,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x6b,0x30,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x30,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6e,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x75,0x42,0x2c,0x49,0x41,0x41,0x68,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x67,0x4f,0x78,0x52,0x2b,0x6e,0x43,0x2c,0x43,0x41,0x41,0x47,0x39,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x57,0x41,0x41,0x61,0x69,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x53,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6f,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2f,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x32,0x31,0x42,0x2c,0x65,0x41,0x41,0x65,0x37,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x73,0x33,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x36,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x68,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x48,0x32,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x33,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x55,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x2f,0x53,0x2c,0x47,0x41,0x41,0x4b,0x31,0x42,0x2c,0x49,0x41,0x41,0x49,0x36,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6c,0x59,0x2c,0x49,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x46,0x78,0x46,0x77,0x61,0x2c,0x43,0x41,0x41,0x47,0x6c,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x75,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x76,0x57,0x2c,0x45,0x41,0x41,0x45,0x34,0x54,0x2c,0x47,0x41,0x41,0x45,0x37,0x54,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x47,0x68,0x63,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x31,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x56,0x2c,0x47,0x41,0x41,0x47,0x71,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x31,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x39,0x58,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x6d,0x43,0x2c,0x47,0x41,0x41,0x2f,0x42,0x30,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6c,0x6b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x6c,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x39,0x52,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x79,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x4c,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4d,0x79,0x4f,0x2c,0x47,0x41,0x41,0x45,0x74,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x77,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x33,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x52,0x71,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x33,0x77,0x42,0x2c,0x4f,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x39,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6c,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x7a,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x46,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x31,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x38,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x65,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x56,0x2c,0x45,0x41,0x41,0x45,0x73,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x74,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x52,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x72,0x52,0x2c,0x47,0x41,0x41,0x52,0x6a,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x78,0x42,0x2c,0x49,0x41,0x41,0x55,0x70,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x67,0x66,0x2c,0x45,0x41,0x41,0x45,0x6c,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4f,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x4e,0x6f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x78,0x42,0x2c,0x47,0x41,0x41,0x4d,0x41,0x2c,0x49,0x41,0x43,0x6e,0x66,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x66,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x66,0x2c,0x45,0x41,0x41,0x45,0x6f,0x52,0x2c,0x47,0x41,0x41,0x45,0x72,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x71,0x52,0x2c,0x47,0x41,0x41,0x45,0x70,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x70,0x49,0x2c,0x45,0x41,0x41,0x45,0x70,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x57,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2b,0x57,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x37,0x57,0x2c,0x51,0x41,0x41,0x51,0x36,0x57,0x2c,0x45,0x41,0x41,0x45,0x37,0x57,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x75,0x5a,0x2c,0x47,0x41,0x41,0x45,0x35,0x67,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x2b,0x42,0x2c,0x65,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x34,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x33,0x67,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x69,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x70,0x42,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x67,0x43,0x2c,0x49,0x41,0x41,0x59,0x33,0x77,0x42,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x51,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x77,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6a,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x75,0x58,0x2c,0x45,0x41,0x41,0x45,0x76,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x57,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x72,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x70,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x35,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x58,0x2c,0x45,0x41,0x41,0x45,0x6e,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x6d,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x6e,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x5a,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x70,0x5a,0x2c,0x47,0x41,0x41,0x52,0x76,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x67,0x43,0x2c,0x49,0x41,0x41,0x55,0x72,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x66,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x34,0x2b,0x42,0x2c,0x65,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x43,0x6c,0x66,0x72,0x58,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x78,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x32,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x70,0x5a,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x5a,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4d,0x41,0x41,0x70,0x42,0x7a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x38,0x42,0x2c,0x49,0x41,0x41,0x59,0x33,0x77,0x42,0x2c,0x4f,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x4c,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x79,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2f,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x6a,0x42,0x2c,0x47,0x41,0x41,0x49,0x38,0x59,0x2c,0x47,0x41,0x41,0x45,0x33,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x59,0x2c,0x45,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x37,0x6a,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x67,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x69,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x31,0x58,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x4c,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x45,0x6c,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x70,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x71,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x7a,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x4c,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x54,0x6d,0x69,0x42,0x2c,0x47,0x41,0x41,0x45,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x73,0x42,0x2c,0x4b,0x41,0x41,0x51,0x37,0x5a,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x73,0x30,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x49,0x41,0x41,0x49,0x74,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x30,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x76,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x54,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x70,0x42,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x6c,0x6f,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x36,0x54,0x2c,0x47,0x41,0x41,0x45,0x6e,0x56,0x2c,0x45,0x41,0x41,0x45,0x36,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x58,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6d,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x79,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x7a,0x42,0x2c,0x45,0x41,0x41,0x6a,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x38,0x42,0x2c,0x45,0x41,0x41,0x66,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x35,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x35,0x42,0x2c,0x49,0x41,0x41,0x49,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x7a,0x65,0x2c,0x53,0x41,0x41,0x53,0x75,0x69,0x43,0x2c,0x47,0x41,0x41,0x45,0x78,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x69,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x69,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x37,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x33,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x37,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x47,0x41,0x41,0x47,0x68,0x56,0x2c,0x49,0x41,0x41,0x49,0x37,0x6d,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x75,0x42,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x7a,0x42,0x2c,0x45,0x41,0x41,0x6a,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x39,0x42,0x2c,0x45,0x41,0x41,0x66,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x35,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x35,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x56,0x2c,0x47,0x41,0x41,0x47,0x6a,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x69,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6e,0x56,0x2c,0x53,0x41,0x41,0x53,0x2b,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x39,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x57,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x35,0x42,0x2c,0x4b,0x41,0x41,0x49,0x78,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x55,0x2c,0x61,0x41,0x41,0x61,0x33,0x55,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x65,0x41,0x41,0x65,0x78,0x55,0x2c,0x45,0x41,0x41,0x45,0x77,0x33,0x42,0x2c,0x4b,0x41,0x41,0x49,0x31,0x33,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x6c,0x43,0x2c,0x47,0x41,0x41,0x45,0x2f,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x34,0x68,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x46,0x6d,0x44,0x2c,0x4d,0x41,0x41,0x65,0x41,0x2c,0x49,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x79,0x42,0x2c,0x4b,0x41,0x41,0x49,0x6d,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6f,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x50,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4d,0x41,0x41,0x51,0x72,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x55,0x2c,0x47,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x66,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x75,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x70,0x55,0x2c,0x45,0x41,0x41,0x45,0x73,0x35,0x42,0x2c,0x4b,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x56,0x78,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4d,0x41,0x41,0x63,0x69,0x56,0x2c,0x47,0x41,0x41,0x47,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x76,0x42,0x2c,0x57,0x41,0x41,0x57,0x69,0x5a,0x2c,0x47,0x41,0x41,0x47,0x72,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x6a,0x5a,0x2c,0x53,0x41,0x41,0x53,0x30,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x63,0x76,0x4f,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x51,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x74,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x35,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x57,0x2c,0x47,0x41,0x41,0x47,0x6f,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x51,0x71,0x4b,0x2c,0x53,0x41,0x41,0x53,0x75,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x6a,0x5a,0x2c,0x53,0x41,0x41,0x53,0x71,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x45,0x2c,0x49,0x41,0x41,0x49,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x63,0x2c,0x49,0x41,0x41,0x49,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x51,0x2c,0x51,0x41,0x41,0x51,0x74,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x4f,0x2c,0x55,0x41,0x41,0x55,0x70,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x4e,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x35,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x74,0x42,0x2c,0x61,0x41,0x41,0x61,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x77,0x42,0x2c,0x61,0x41,0x41,0x61,0x72,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x51,0x2c,0x63,0x41,0x41,0x63,0x6a,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x6e,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x74,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x2b,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x50,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x2f,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x74,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x74,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x6e,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x76,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6f,0x64,0x2c,0x47,0x41,0x41,0x47,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x38,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2b,0x42,0x2c,0x47,0x41,0x41,0x69,0x42,0x2c,0x55,0x41,0x41,0x64,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x61,0x41,0x41,0x75,0x42,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x6f,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x45,0x70,0x64,0x2c,0x53,0x41,0x41,0x53,0x39,0x58,0x2c,0x47,0x41,0x41,0x47,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x43,0x75,0x42,0x2c,0x4f,0x41,0x44,0x62,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x52,0x2c,0x49,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x6e,0x65,0x2c,0x45,0x41,0x41,0x45,0x73,0x76,0x42,0x2c,0x4f,0x41,0x41,0x51,0x52,0x2c,0x59,0x41,0x41,0x59,0x39,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x35,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x55,0x41,0x41,0x55,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x39,0x50,0x2c,0x45,0x41,0x41,0x45,0x75,0x52,0x2c,0x55,0x41,0x41,0x55,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x55,0x41,0x41,0x55,0x76,0x52,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x75,0x42,0x2c,0x61,0x41,0x41,0x61,0x68,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x71,0x67,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x72,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x52,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x65,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x57,0x41,0x41,0x57,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x77,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x78,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x63,0x41,0x41,0x63,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x63,0x41,0x41,0x63,0x33,0x52,0x2c,0x45,0x41,0x41,0x45,0x36,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x2f,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x78,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x61,0x41,0x41,0x61,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x79,0x42,0x2c,0x63,0x41,0x43,0x2f,0x65,0x68,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x51,0x41,0x41,0x51,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x73,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x49,0x41,0x41,0x57,0x39,0x76,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x78,0x44,0x2c,0x53,0x41,0x41,0x53,0x30,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x4a,0x48,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x44,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x67,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x53,0x41,0x41,0x53,0x37,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x44,0x2c,0x45,0x41,0x41,0x47,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x33,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x77,0x42,0x2c,0x49,0x41,0x41,0x4f,0x71,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x37,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x33,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x4b,0x71,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x7a,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x33,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x4b,0x71,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x78,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x79,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x43,0x2c,0x45,0x41,0x41,0x47,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x45,0x2c,0x45,0x41,0x41,0x47,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x43,0x70,0x66,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x45,0x2c,0x45,0x41,0x41,0x47,0x35,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x45,0x2c,0x45,0x41,0x41,0x47,0x37,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x75,0x44,0x2c,0x4f,0x41,0x41,0x6a,0x44,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x49,0x41,0x41,0x4b,0x71,0x74,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x53,0x7a,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x78,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x53,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x75,0x45,0x2c,0x4f,0x41,0x41,0x70,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x49,0x41,0x41,0x4b,0x36,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x72,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x7a,0x45,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x67,0x30,0x42,0x2c,0x55,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x57,0x68,0x6b,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x38,0x42,0x2c,0x4f,0x41,0x41,0x33,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x53,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x35,0x57,0x2c,0x53,0x41,0x41,0x53,0x38,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x38,0x4a,0x2c,0x4f,0x41,0x41,0x33,0x4a,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x4a,0x2c,0x53,0x41,0x41,0x53,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x73,0x4a,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x6c,0x65,0x2c,0x49,0x41,0x41,0x4b,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x6e,0x58,0x2c,0x45,0x41,0x41,0x45,0x6d,0x58,0x2c,0x63,0x41,0x41,0x63,0x71,0x78,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x58,0x2c,0x65,0x41,0x41,0x65,0x37,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x77,0x42,0x2c,0x67,0x42,0x41,0x41,0x75,0x42,0x35,0x77,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x74,0x4c,0x2c,0x53,0x41,0x41,0x53,0x77,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x45,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x56,0x2c,0x63,0x41,0x41,0x63,0x6e,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x6c,0x43,0x2c,0x61,0x41,0x41,0x61,0x76,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x37,0x42,0x2c,0x55,0x41,0x41,0x55,0x35,0x37,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x51,0x2c,0x51,0x41,0x41,0x51,0x76,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x6d,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x6d,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x6c,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x31,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x73,0x6b,0x43,0x2c,0x61,0x41,0x41,0x61,0x74,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x39,0x42,0x2c,0x65,0x41,0x41,0x65,0x78,0x39,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x6b,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x54,0x2c,0x57,0x41,0x41,0x57,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x6b,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6c,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x72,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x54,0x2c,0x65,0x41,0x41,0x65,0x68,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x6c,0x43,0x2c,0x63,0x41,0x41,0x63,0x78,0x6c,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x6d,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x68,0x6d,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x6b,0x43,0x2c,0x61,0x41,0x41,0x61,0x78,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x53,0x2c,0x59,0x41,0x41,0x59,0x2f,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x53,0x2c,0x65,0x41,0x41,0x65,0x39,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x53,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x37,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x54,0x2c,0x63,0x41,0x41,0x63,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x35,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x70,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x6d,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x78,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x6d,0x43,0x2c,0x67,0x43,0x41,0x43,0x2f,0x65,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x67,0x4e,0x2c,0x4f,0x41,0x41,0x37,0x4d,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x79,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x4f,0x2c,0x55,0x41,0x41,0x55,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x63,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x67,0x55,0x2c,0x51,0x41,0x41,0x51,0x72,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x56,0x2c,0x61,0x41,0x41,0x61,0x68,0x58,0x2c,0x45,0x41,0x41,0x45,0x30,0x6f,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x4b,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x56,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x47,0x41,0x41,0x55,0x31,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x50,0x2c,0x53,0x41,0x41,0x53,0x38,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x71,0x73,0x42,0x2c,0x47,0x41,0x41,0x75,0x42,0x72,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x52,0x2c,0x47,0x41,0x41,0x31,0x42,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x6d,0x42,0x41,0x41,0x38,0x42,0x6c,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x73,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x36,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6f,0x64,0x2c,0x30,0x43,0x41,0x41,0x30,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x74,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6a,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x32,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x33,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x70,0x57,0x2c,0x53,0x41,0x41,0x53,0x38,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x77,0x4b,0x2c,0x4f,0x41,0x41,0x72,0x4b,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x77,0x73,0x42,0x2c,0x51,0x41,0x41,0x51,0x77,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x53,0x41,0x41,0x73,0x42,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x36,0x78,0x42,0x2c,0x47,0x41,0x41,0x68,0x42,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x34,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x35,0x42,0x2c,0x4b,0x41,0x41,0x65,0x79,0x7a,0x42,0x2c,0x63,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x53,0x31,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x51,0x41,0x41,0x51,0x67,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x54,0x2c,0x47,0x41,0x41,0x47,0x6c,0x56,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x79,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x55,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x67,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x38,0x33,0x42,0x2c,0x4b,0x41,0x41,0x49,0x37,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x33,0x42,0x2c,0x47,0x41,0x41,0x73,0x4c,0x2c,0x4f,0x41,0x41,0x6e,0x4c,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x79,0x42,0x2c,0x51,0x41,0x41,0x51,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x2f,0x42,0x2c,0x47,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x73,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x4b,0x2b,0x78,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x37,0x4e,0x2c,0x51,0x41,0x41,0x51,0x37,0x6c,0x42,0x2c,0x47,0x41,0x41,0x75,0x42,0x2c,0x51,0x41,0x41,0x70,0x42,0x77,0x42,0x2c,0x4f,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x4b,0x41,0x41,0x61,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x6e,0x79,0x42,0x2c,0x47,0x41,0x41,0x65,0x2c,0x51,0x41,0x41,0x5a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x4d,0x41,0x41,0x63,0x71,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x6f,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x57,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x33,0x62,0x2c,0x53,0x41,0x41,0x53,0x73,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6a,0x70,0x43,0x2c,0x47,0x41,0x41,0x65,0x2c,0x4f,0x41,0x41,0x5a,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x53,0x2c,0x53,0x41,0x41,0x63,0x46,0x2c,0x4f,0x41,0x41,0x79,0x42,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x39,0x4c,0x2c,0x49,0x41,0x41,0x6f,0x44,0x6e,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x43,0x2c,0x57,0x41,0x41,0x68,0x46,0x2c,0x49,0x41,0x41,0x30,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x72,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x67,0x42,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x52,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x76,0x42,0x2c,0x55,0x41,0x41,0x55,0x70,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x76,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x6c,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x6c,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x59,0x41,0x41,0x59,0x79,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x6e,0x42,0x37,0x53,0x79,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x31,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x31,0x43,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x51,0x41,0x41,0x51,0x69,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x79,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x7a,0x45,0x31,0x49,0x2c,0x53,0x41,0x41,0x59,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x67,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2b,0x45,0x2c,0x47,0x41,0x41,0x47,0x31,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x34,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x53,0x41,0x41,0x53,0x39,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2f,0x6e,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x6b,0x42,0x2c,0x47,0x41,0x41,0x45,0x6d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x65,0x41,0x41,0x65,0x72,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x63,0x41,0x41,0x63,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x71,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x72,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x65,0x41,0x41,0x32,0x42,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x73,0x51,0x2c,0x59,0x41,0x41,0x6b,0x42,0x73,0x61,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x56,0x41,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x53,0x41,0x41,0x57,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x66,0x2c,0x59,0x41,0x41,0x6d,0x42,0x36,0x4e,0x2c,0x47,0x41,0x41,0x47,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x47,0x6b,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x56,0x41,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x53,0x41,0x41,0x38,0x42,0x2c,0x51,0x41,0x41,0x6e,0x42,0x6e,0x53,0x2c,0x45,0x41,0x41,0x45,0x67,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x6d,0x42,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4b,0x6b,0x61,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x56,0x41,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x53,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x43,0x37,0x64,0x2c,0x47,0x41,0x44,0x67,0x65,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x43,0x72,0x66,0x44,0x2c,0x45,0x41,0x41,0x45,0x38,0x78,0x42,0x2c,0x59,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x52,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4f,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x36,0x46,0x2c,0x47,0x41,0x41,0x31,0x45,0x2c,0x51,0x41,0x41,0x6c,0x42,0x6c,0x51,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x69,0x42,0x41,0x41,0x79,0x42,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x32,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x4c,0x2c,0x47,0x41,0x41,0x45,0x79,0x49,0x2c,0x47,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x45,0x31,0x69,0x42,0x2c,0x53,0x41,0x41,0x59,0x33,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x6d,0x4d,0x2c,0x47,0x41,0x41,0x47,0x74,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x77,0x45,0x37,0x47,0x6b,0x70,0x43,0x2c,0x43,0x41,0x41,0x47,0x70,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x52,0x70,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x52,0x2c,0x4d,0x41,0x41,0x6d,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x67,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x31,0x44,0x2c,0x49,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x52,0x7a,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x51,0x41,0x41,0x67,0x42,0x30,0x63,0x2c,0x47,0x41,0x41,0x47,0x70,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x4f,0x41,0x41,0x69,0x42,0x2c,0x4f,0x41,0x41,0x56,0x76,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x53,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x6e,0x61,0x2c,0x53,0x41,0x41,0x53,0x36,0x66,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x30,0x42,0x2c,0x4b,0x41,0x43,0x76,0x49,0x2c,0x4f,0x41,0x44,0x34,0x49,0x70,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6c,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x45,0x2c,0x61,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x45,0x2c,0x55,0x41,0x41,0x55,0x72,0x47,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x52,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x43,0x31,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x47,0x2c,0x47,0x41,0x41,0x47,0x72,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x79,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x51,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x36,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x49,0x2c,0x47,0x41,0x41,0x47,0x37,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2f,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x76,0x4f,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x35,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x75,0x6f,0x42,0x2c,0x49,0x41,0x41,0x47,0x68,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x37,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x63,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x59,0x41,0x41,0x59,0x39,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x71,0x46,0x2c,0x4f,0x41,0x41,0x70,0x46,0x38,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x75,0x42,0x7a,0x74,0x42,0x2c,0x47,0x41,0x41,0x56,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x46,0x2c,0x4f,0x41,0x41,0x55,0x6a,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x46,0x2c,0x55,0x41,0x41,0x55,0x76,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x51,0x74,0x55,0x2c,0x53,0x41,0x41,0x59,0x6e,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x62,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x59,0x41,0x41,0x67,0x42,0x6c,0x43,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x70,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x52,0x32,0x4c,0x38,0x6b,0x43,0x2c,0x43,0x41,0x41,0x47,0x37,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x47,0x41,0x41,0x55,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x43,0x76,0x67,0x42,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x32,0x43,0x6f,0x50,0x2c,0x47,0x41,0x41,0x47,0x72,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x72,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x32,0x43,0x34,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x72,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4e,0x6d,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x2f,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x2b,0x42,0x78,0x74,0x42,0x2c,0x47,0x41,0x41,0x6c,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x65,0x41,0x41,0x6b,0x42,0x67,0x55,0x2c,0x51,0x41,0x41,0x51,0x79,0x4e,0x2c,0x47,0x41,0x41,0x47,0x74,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x5a,0x72,0x51,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6b,0x42,0x2c,0x51,0x41,0x41,0x57,0x6e,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x56,0x2c,0x61,0x41,0x41,0x59,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x6b,0x42,0x2c,0x51,0x41,0x41,0x51,0x72,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x56,0x2c,0x63,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x47,0x30,0x78,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x6c,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6e,0x43,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x70,0x4b,0x2c,0x59,0x41,0x41,0x59,0x39,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x38,0x42,0x2c,0x61,0x41,0x41,0x61,0x78,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x79,0x42,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x55,0x41,0x43,0x68,0x66,0x74,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x52,0x2c,0x63,0x41,0x41,0x63,0x6e,0x51,0x2c,0x45,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x52,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4d,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x75,0x42,0x31,0x52,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x6a,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x33,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x49,0x41,0x41,0x6d,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x75,0x42,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x6a,0x43,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x33,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x49,0x41,0x41,0x6d,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x79,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x76,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x63,0x41,0x41,0x63,0x68,0x4e,0x2c,0x59,0x41,0x41,0x59,0x71,0x6b,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x49,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2f,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4f,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x54,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x79,0x52,0x2c,0x4d,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x52,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x4c,0x30,0x64,0x2c,0x4b,0x41,0x41,0x51,0x70,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x38,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x76,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x76,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x48,0x2c,0x53,0x41,0x41,0x53,0x6d,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2b,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x43,0x6e,0x66,0x69,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x53,0x2c,0x47,0x41,0x41,0x47,0x75,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x32,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x55,0x41,0x41,0x55,0x6d,0x48,0x2c,0x65,0x41,0x41,0x65,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6f,0x66,0x2c,0x47,0x41,0x41,0x47,0x70,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x51,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x32,0x43,0x38,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2f,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x72,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x6d,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x6c,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x4a,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x6a,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x78,0x5a,0x2c,0x47,0x41,0x44,0x79,0x5a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x45,0x2c,0x53,0x41,0x41,0x53,0x39,0x45,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x76,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x76,0x42,0x2c,0x63,0x41,0x43,0x6c,0x66,0x2f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x79,0x6b,0x42,0x2c,0x47,0x41,0x41,0x45,0x6d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x65,0x41,0x41,0x65,0x72,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x77,0x42,0x2c,0x63,0x41,0x41,0x63,0x6c,0x77,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x36,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x34,0x48,0x2c,0x57,0x41,0x41,0x57,0x37,0x48,0x2c,0x45,0x41,0x41,0x45,0x36,0x48,0x2c,0x57,0x41,0x41,0x57,0x69,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x61,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x2b,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x68,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x56,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x53,0x41,0x41,0x69,0x42,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x77,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x6e,0x4d,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x73,0x42,0x2c,0x55,0x41,0x41,0x55,0x39,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x43,0x4c,0x2c,0x45,0x41,0x41,0x45,0x79,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x72,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x4b,0x69,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x50,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x78,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x49,0x6f,0x4c,0x2c,0x47,0x41,0x41,0x66,0x70,0x4c,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x75,0x74,0x42,0x2c,0x51,0x41,0x41,0x65,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x4c,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x72,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x74,0x42,0x2c,0x51,0x41,0x41,0x51,0x74,0x74,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x64,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x61,0x41,0x41,0x71,0x42,0x33,0x4c,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x43,0x6c,0x66,0x78,0x52,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x79,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x64,0x78,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x51,0x41,0x41,0x6d,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x64,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x50,0x2c,0x61,0x41,0x41,0x71,0x42,0x35,0x4c,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x76,0x51,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x51,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x49,0x41,0x41,0x49,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x47,0x2c,0x51,0x41,0x41,0x66,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x51,0x2c,0x53,0x41,0x41,0x6f,0x42,0x2c,0x43,0x41,0x41,0x43,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x50,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x68,0x51,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x6d,0x38,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x48,0x2c,0x53,0x41,0x41,0x53,0x70,0x4a,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x33,0x6c,0x42,0x2c,0x53,0x41,0x41,0x53,0x30,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x57,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x56,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x77,0x42,0x2c,0x49,0x41,0x41,0x55,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x52,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x6d,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x43,0x70,0x66,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x67,0x42,0x78,0x51,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x58,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x59,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x63,0x41,0x41,0x36,0x42,0x67,0x50,0x2c,0x47,0x41,0x41,0x47,0x6a,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x74,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x47,0x41,0x41,0x63,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x2f,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x54,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x76,0x42,0x2c,0x61,0x41,0x41,0x61,0x78,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x42,0x2c,0x63,0x41,0x41,0x63,0x74,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x71,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x30,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x6d,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x6c,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x67,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x67,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x74,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x47,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x45,0x41,0x59,0x78,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x76,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x32,0x38,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x77,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x7a,0x70,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x6a,0x49,0x2c,0x53,0x41,0x41,0x53,0x30,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x7a,0x70,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x35,0x4a,0x2c,0x53,0x41,0x41,0x53,0x32,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x55,0x41,0x41,0x55,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x32,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x6b,0x2f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x45,0x78,0x61,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x7a,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x70,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x35,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x67,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x44,0x78,0x4a,0x2c,0x53,0x41,0x41,0x59,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x36,0x70,0x43,0x2c,0x49,0x41,0x41,0x6d,0x46,0x2c,0x4f,0x41,0x41,0x2f,0x45,0x37,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x78,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x51,0x2c,0x51,0x41,0x41,0x51,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x31,0x50,0x2c,0x47,0x41,0x41,0x47,0x77,0x6e,0x43,0x2c,0x4b,0x41,0x41,0x59,0x37,0x6c,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x57,0x41,0x41,0x57,0x7a,0x4b,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4b,0x2c,0x59,0x41,0x41,0x59,0x33,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x35,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x36,0x70,0x43,0x2c,0x49,0x41,0x41,0x30,0x47,0x2c,0x4f,0x41,0x41,0x74,0x47,0x37,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x4d,0x2c,0x51,0x41,0x41,0x51,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x31,0x50,0x2c,0x47,0x41,0x41,0x47,0x77,0x6e,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x55,0x73,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x70,0x55,0x69,0x6b,0x43,0x2c,0x43,0x41,0x41,0x47,0x37,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x48,0x70,0x4c,0x2b,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6f,0x43,0x2c,0x55,0x41,0x41,0x55,0x6b,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x43,0x2c,0x55,0x41,0x41,0x55,0x6b,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x70,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x78,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x79,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6f,0x43,0x2c,0x55,0x41,0x41,0x55,0x38,0x6f,0x43,0x2c,0x51,0x41,0x41,0x51,0x52,0x2c,0x47,0x41,0x41,0x47,0x74,0x6f,0x43,0x2c,0x55,0x41,0x41,0x55,0x38,0x6f,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x68,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x36,0x6e,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x78,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x58,0x2c,0x63,0x41,0x41,0x63,0x71,0x77,0x42,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x7a,0x54,0x6f,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x6f,0x43,0x2c,0x55,0x41,0x41,0x55,0x2b,0x6f,0x43,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x56,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x32,0x57,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x50,0x2c,0x45,0x41,0x41,0x45,0x69,0x58,0x2c,0x53,0x41,0x41,0x53,0x68,0x58,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x68,0x57,0x2c,0x51,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x48,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x57,0x2c,0x47,0x41,0x41,0x47,0x6c,0x57,0x2c,0x47,0x41,0x41,0x47,0x2b,0x57,0x2c,0x53,0x41,0x41,0x53,0x2f,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x57,0x2c,0x47,0x41,0x41,0x47,0x38,0x7a,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x47,0x41,0x41,0x47,0x36,0x57,0x2c,0x47,0x41,0x41,0x47,0x2f,0x57,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x45,0x58,0x75,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x76,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2f,0x50,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x4e,0x2c,0x63,0x41,0x41,0x63,0x71,0x46,0x2c,0x61,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x68,0x58,0x2c,0x45,0x41,0x41,0x45,0x71,0x55,0x2c,0x47,0x41,0x41,0x47,0x74,0x55,0x2c,0x45,0x41,0x41,0x45,0x77,0x55,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x76,0x55,0x2c,0x49,0x41,0x41,0x49,0x6b,0x56,0x2c,0x47,0x41,0x41,0x47,0x6e,0x56,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x46,0x43,0x2c,0x47,0x41,0x41,0x4b,0x2b,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x68,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x53,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x46,0x2b,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4f,0x6b,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6a,0x76,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x34,0x61,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x38,0x5a,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x76,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x35,0x42,0x2c,0x4b,0x41,0x41,0x49,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x47,0x69,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x2f,0x62,0x77,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x78,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x32,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x61,0x2b,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x58,0x77,0x35,0x42,0x2c,0x4d,0x41,0x41,0x77,0x42,0x32,0x50,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x7a,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x47,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x72,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x61,0x38,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x58,0x75,0x35,0x42,0x2c,0x4d,0x41,0x41,0x67,0x42,0x32,0x50,0x2c,0x47,0x41,0x41,0x47,0x6e,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x4c,0x2c,0x45,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x33,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x56,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x6f,0x56,0x2c,0x47,0x41,0x41,0x45,0x6e,0x56,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x6c,0x53,0x79,0x50,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x33,0x50,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x6a,0x42,0x75,0x49,0x2c,0x45,0x41,0x41,0x47,0x78,0x49,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x46,0x2c,0x4b,0x41,0x41,0x51,0x2c,0x55,0x41,0x41,0x55,0x2f,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x59,0x41,0x41,0x59,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x57,0x41,0x41,0x73,0x46,0x2c,0x49,0x41,0x41,0x33,0x45,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x71,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x63,0x41,0x41,0x63,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x70,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6d,0x42,0x41,0x41,0x75,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x74,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x71,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x37,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x4f,0x2c,0x47,0x41,0x41,0x47,0x7a,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x44,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x48,0x2c,0x45,0x41,0x41,0x47,0x6a,0x47,0x2c,0x47,0x41,0x41,0x47,0x67,0x48,0x2c,0x45,0x41,0x41,0x47,0x68,0x48,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x57,0x41,0x41,0x57,0x2b,0x48,0x2c,0x47,0x41,0x41,0x47,0x78,0x4a,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x6d,0x42,0x2c,0x4f,0x41,0x41,0x56,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x48,0x2c,0x51,0x41,0x41,0x65,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2f,0x49,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x68,0x43,0x2c,0x53,0x41,0x41,0x53,0x72,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x47,0x41,0x41,0x47,0x6b,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x33,0x42,0x2c,0x47,0x41,0x43,0x70,0x61,0x2c,0x49,0x41,0x41,0x49,0x2b,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x75,0x42,0x41,0x41,0x73,0x42,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x31,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x53,0x2c,0x47,0x41,0x41,0x47,0x76,0x53,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x47,0x6d,0x33,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x33,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x7a,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x61,0x41,0x43,0x31,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x48,0x2c,0x57,0x41,0x41,0x57,0x46,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x51,0x41,0x41,0x51,0x48,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x4a,0x2c,0x47,0x41,0x41,0x47,0x49,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x45,0x2c,0x65,0x41,0x41,0x65,0x4e,0x2c,0x47,0x41,0x41,0x47,0x4d,0x2c,0x65,0x41,0x41,0x65,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x6a,0x6f,0x43,0x2c,0x45,0x41,0x41,0x47,0x32,0x78,0x42,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x75,0x57,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x53,0x41,0x41,0x53,0x33,0x72,0x43,0x2c,0x47,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x47,0x41,0x41,0x47,0x68,0x53,0x2c,0x49,0x41,0x41,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x79,0x42,0x41,0x52,0x6a,0x4e,0x2c,0x57,0x41,0x41,0x63,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x53,0x70,0x55,0x69,0x42,0x2c,0x34,0x42,0x41,0x41,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x2c,0x6d,0x43,0x41,0x41,0x6d,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x43,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x59,0x41,0x41,0x59,0x44,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x7a,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x73,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x73,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x37,0x6f,0x43,0x2c,0x6d,0x44,0x41,0x41,0x6d,0x44,0x36,0x6d,0x43,0x2c,0x47,0x41,0x43,0x2f,0x59,0x67,0x43,0x2c,0x45,0x41,0x41,0x51,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x53,0x41,0x41,0x53,0x78,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x61,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x77,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x62,0x75,0x48,0x2c,0x53,0x41,0x41,0x59,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x61,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x6d,0x47,0x2c,0x53,0x41,0x41,0x53,0x78,0x43,0x2c,0x45,0x41,0x41,0x47,0x71,0x61,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x74,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6d,0x58,0x2c,0x63,0x41,0x41,0x63,0x6c,0x58,0x2c,0x45,0x41,0x41,0x45,0x34,0x77,0x42,0x2c,0x65,0x41,0x41,0x65,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x61,0x31,0x52,0x75,0x73,0x43,0x2c,0x43,0x41,0x41,0x47,0x7a,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x31,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x36,0x6e,0x43,0x2c,0x47,0x41,0x41,0x34,0x50,0x2c,0x4f,0x41,0x41,0x7a,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x70,0x43,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x73,0x43,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x7a,0x73,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x70,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x36,0x42,0x2c,0x75,0x42,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x53,0x33,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6f,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x78,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x6f,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x68,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x4b,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x72,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x30,0x50,0x2c,0x57,0x41,0x41,0x57,0x31,0x50,0x2c,0x47,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x77,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x76,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x72,0x66,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x4b,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x35,0x73,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x6a,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x69,0x43,0x2c,0x4d,0x41,0x41,0x33,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x4e,0x2c,0x47,0x41,0x41,0x47,0x71,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x57,0x70,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x71,0x43,0x2c,0x4f,0x41,0x41,0x35,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x56,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x47,0x41,0x41,0x47,0x2f,0x52,0x2c,0x49,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x51,0x2c,0x53,0x41,0x41,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x38,0x42,0x2c,0x45,0x41,0x41,0x51,0x4d,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x37,0x73,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x77,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x78,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x4f,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x39,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x2f,0x59,0x71,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x51,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x2f,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x73,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x72,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x6e,0x43,0x2c,0x47,0x41,0x41,0x79,0x4f,0x2c,0x47,0x41,0x41,0x74,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x70,0x43,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x79,0x73,0x43,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x6c,0x72,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x6c,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x36,0x42,0x2c,0x75,0x42,0x41,0x41,0x6b,0x42,0x2c,0x49,0x41,0x41,0x53,0x31,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6e,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x74,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6e,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x68,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x72,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x51,0x41,0x41,0x51,0x75,0x57,0x2c,0x47,0x41,0x41,0x47,0x31,0x6f,0x42,0x2c,0x47,0x41,0x41,0x4d,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x49,0x41,0x41,0x32,0x42,0x79,0x42,0x2c,0x47,0x41,0x41,0x68,0x42,0x41,0x2c,0x47,0x41,0x41,0x50,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x49,0x41,0x41,0x4f,0x69,0x74,0x43,0x2c,0x61,0x41,0x41,0x67,0x42,0x2f,0x73,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x74,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x6f,0x43,0x2c,0x67,0x43,0x41,0x41,0x67,0x43,0x7a,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x6f,0x43,0x2c,0x67,0x43,0x41,0x41,0x67,0x43,0x2c,0x43,0x41,0x41,0x43,0x78,0x6f,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x6f,0x43,0x2c,0x67,0x43,0x41,0x41,0x67,0x43,0x76,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x51,0x2c,0x45,0x41,0x43,0x76,0x68,0x42,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x69,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x6e,0x6d,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x70,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x30,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x33,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x67,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x59,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x53,0x41,0x41,0x53,0x6e,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x34,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x35,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x51,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x43,0x2c,0x73,0x42,0x41,0x41,0x71,0x42,0x71,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x73,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x70,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x6a,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x70,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x45,0x41,0x41,0x51,0x61,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x37,0x46,0x2c,0x47,0x41,0x43,0x2f,0x55,0x67,0x46,0x2c,0x45,0x41,0x41,0x51,0x63,0x2c,0x6f,0x43,0x41,0x41,0x6f,0x43,0x2c,0x53,0x41,0x41,0x53,0x72,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6f,0x6f,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2b,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x6b,0x37,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x32,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x39,0x70,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x71,0x43,0x2c,0x45,0x41,0x41,0x51,0x31,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x69,0x44,0x43,0x2f,0x54,0x37,0x4c,0x2c,0x49,0x41,0x41,0x49,0x37,0x35,0x42,0x2c,0x45,0x41,0x41,0x49,0x6e,0x52,0x2c,0x45,0x41,0x41,0x51,0x2c,0x4b,0x41,0x45,0x64,0x30,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x47,0x2c,0x57,0x41,0x41,0x61,0x31,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x37,0x42,0x2c,0x57,0x41,0x43,0x76,0x42,0x48,0x2c,0x45,0x41,0x41,0x51,0x51,0x2c,0x59,0x41,0x41,0x63,0x2f,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x37,0x42,0x2c,0x34,0x42,0x43,0x48,0x31,0x42,0x2c,0x53,0x41,0x41,0x53,0x4f,0x2c,0x49,0x41,0x45,0x50,0x2c,0x47,0x41,0x43,0x34,0x43,0x2c,0x71,0x42,0x41,0x41,0x6e,0x43,0x70,0x42,0x2c,0x67,0x43,0x41,0x43,0x34,0x43,0x2c,0x6f,0x42,0x41,0x41,0x35,0x43,0x41,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x6f,0x42,0x2c,0x53,0x41,0x63,0x78,0x43,0x2c,0x49,0x41,0x45,0x45,0x70,0x42,0x2c,0x2b,0x42,0x41,0x41,0x2b,0x42,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x43,0x31,0x43,0x2c,0x43,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x47,0x50,0x35,0x51,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x51,0x2c,0x45,0x41,0x43,0x68,0x42,0x2c,0x43,0x41,0x43,0x46,0x2c,0x43,0x41,0x4b,0x45,0x44,0x2c,0x47,0x41,0x43,0x41,0x45,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x6a,0x42,0x69,0x42,0x2c,0x77,0x42,0x43,0x7a,0x42,0x65,0x39,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x37,0x42,0x2c,0x45,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x69,0x47,0x2c,0x45,0x41,0x41,0x45,0x6c,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x2f,0x50,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x65,0x41,0x41,0x65,0x32,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x6d,0x44,0x41,0x41,0x6d,0x44,0x6d,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x39,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6f,0x65,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x36,0x52,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x79,0x64,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x47,0x41,0x43,0x68,0x50,0x2c,0x53,0x41,0x41,0x53,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x39,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x69,0x46,0x2c,0x49,0x41,0x41,0x49,0x35,0x46,0x2c,0x55,0x41,0x41,0x68,0x46,0x2c,0x49,0x41,0x41,0x53,0x30,0x42,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x55,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x53,0x6e,0x65,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x4b,0x41,0x41,0x63,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x52,0x2c,0x45,0x41,0x41,0x45,0x2f,0x4e,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x42,0x2c,0x65,0x41,0x41,0x65,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x36,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x37,0x36,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x53,0x74,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x71,0x47,0x2c,0x53,0x41,0x41,0x53,0x52,0x2c,0x45,0x41,0x41,0x45,0x35,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x49,0x41,0x41,0x49,0x31,0x63,0x2c,0x45,0x41,0x41,0x45,0x75,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x48,0x2c,0x45,0x41,0x41,0x45,0x33,0x57,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x6f,0x42,0x6f,0x36,0x42,0x2c,0x45,0x41,0x41,0x51,0x6f,0x42,0x2c,0x49,0x41,0x41,0x49,0x33,0x63,0x2c,0x45,0x41,0x41,0x45,0x75,0x62,0x2c,0x45,0x41,0x41,0x51,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x63,0x2c,0x65,0x43,0x44,0x37,0x56,0x2c,0x49,0x41,0x41,0x49,0x70,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x69,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x39,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6d,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x74,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x6f,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x74,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6b,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x71,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x73,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x6f,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x6c,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x71,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x74,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x65,0x2c,0x53,0x41,0x43,0x7a,0x57,0x2c,0x49,0x41,0x41,0x49,0x6d,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6d,0x6f,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x39,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x6f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x67,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x76,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x77,0x49,0x2c,0x53,0x41,0x41,0x53,0x73,0x57,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x67,0x44,0x2c,0x45,0x41,0x41,0x45,0x70,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2b,0x75,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x72,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x49,0x2c,0x45,0x41,0x41,0x45,0x76,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x6e,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x71,0x52,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x44,0x78,0x50,0x71,0x5a,0x2c,0x45,0x41,0x41,0x45,0x6a,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x71,0x6e,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x70,0x51,0x70,0x63,0x2c,0x45,0x41,0x41,0x45,0x6a,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x32,0x73,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x37,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x79,0x48,0x41,0x41,0x79,0x48,0x72,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x54,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x76,0x35,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x6b,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x34,0x73,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x39,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x36,0x42,0x2c,0x51,0x41,0x41,0x51,0x50,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x7a,0x35,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x67,0x42,0x6f,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x6f,0x42,0x2c,0x55,0x41,0x41,0x55,0x69,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x72,0x42,0x2c,0x55,0x41,0x41,0x73,0x46,0x2c,0x49,0x41,0x41,0x49,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6c,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x6b,0x6f,0x42,0x2c,0x45,0x41,0x43,0x72,0x66,0x6b,0x44,0x2c,0x45,0x41,0x41,0x45,0x72,0x6c,0x42,0x2c,0x59,0x41,0x41,0x59,0x6d,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x57,0x2c,0x45,0x41,0x41,0x45,0x69,0x58,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x6a,0x72,0x42,0x2c,0x57,0x41,0x41,0x57,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x50,0x2c,0x73,0x42,0x41,0x41,0x71,0x42,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x39,0x4d,0x2c,0x45,0x41,0x41,0x45,0x37,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x51,0x41,0x41,0x51,0x6b,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6e,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x65,0x41,0x41,0x65,0x30,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x31,0x68,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x31,0x57,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x36,0x52,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x79,0x64,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x55,0x41,0x41,0x53,0x2c,0x47,0x41,0x43,0x74,0x4b,0x2c,0x53,0x41,0x41,0x53,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x76,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x55,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x53,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x55,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x53,0x2f,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x72,0x59,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x71,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x7a,0x42,0x2c,0x65,0x41,0x41,0x65,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x53,0x41,0x41,0x53,0x37,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x48,0x2c,0x47,0x41,0x41,0x47,0x71,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x71,0x50,0x2c,0x49,0x41,0x41,0x49,0x74,0x50,0x2c,0x45,0x41,0x41,0x45,0x73,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x51,0x2c,0x55,0x41,0x41,0x55,0x36,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x39,0x51,0x2c,0x45,0x41,0x41,0x45,0x6f,0x4a,0x2c,0x53,0x41,0x41,0x53,0x35,0x48,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x38,0x36,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x74,0x35,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x47,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x36,0x42,0x2c,0x6b,0x42,0x41,0x41,0x65,0x2c,0x49,0x41,0x41,0x53,0x35,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x38,0x45,0x2c,0x53,0x41,0x41,0x53,0x56,0x2c,0x45,0x41,0x41,0x45,0x31,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x72,0x59,0x2c,0x45,0x41,0x41,0x45,0x6b,0x71,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x44,0x2c,0x45,0x41,0x41,0x45,0x31,0x68,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x43,0x68,0x56,0x2c,0x53,0x41,0x41,0x53,0x73,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x57,0x41,0x41,0x57,0x56,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x6f,0x47,0x2c,0x49,0x41,0x41,0x49,0x6b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x37,0x4b,0x2c,0x53,0x41,0x41,0x67,0x42,0x6e,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x2b,0x45,0x2b,0x74,0x43,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2f,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x69,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x43,0x2f,0x57,0x2c,0x53,0x41,0x41,0x53,0x73,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x34,0x46,0x2c,0x53,0x41,0x41,0x53,0x39,0x46,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x63,0x41,0x41,0x63,0x38,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x59,0x41,0x41,0x59,0x41,0x2c,0x49,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x36,0x46,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x36,0x46,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x73,0x47,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x6a,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x57,0x33,0x46,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x4e,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x47,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6b,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x6b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x42,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x44,0x2c,0x51,0x41,0x41,0x51,0x75,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x45,0x2c,0x49,0x41,0x41,0x49,0x75,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x44,0x6e,0x57,0x2c,0x53,0x41,0x41,0x57,0x46,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x71,0x47,0x2c,0x53,0x41,0x41,0x53,0x56,0x2c,0x45,0x41,0x41,0x45,0x31,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x63,0x2c,0x49,0x41,0x41,0x49,0x6c,0x65,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x56,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x79,0x51,0x75,0x46,0x2c,0x43,0x41,0x41,0x45,0x74,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x74,0x59,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x59,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x69,0x65,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x61,0x2c,0x51,0x41,0x41,0x51,0x75,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x31,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x79,0x42,0x2c,0x47,0x41,0x41,0x76,0x42,0x32,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x72,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4f,0x6b,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x43,0x2f,0x65,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x32,0x42,0x2c,0x45,0x41,0x44,0x77,0x65,0x35,0x78,0x42,0x2c,0x45,0x41,0x43,0x72,0x66,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x32,0x42,0x2c,0x47,0x41,0x41,0x65,0x41,0x2c,0x47,0x41,0x41,0x47,0x6b,0x45,0x2c,0x47,0x41,0x41,0x47,0x32,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x50,0x73,0x55,0x2c,0x53,0x41,0x41,0x57,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x73,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6a,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x47,0x41,0x41,0x47,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x65,0x41,0x41,0x30,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x4f,0x35,0x62,0x38,0x45,0x2c,0x43,0x41,0x41,0x45,0x39,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6d,0x45,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x78,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x4d,0x41,0x41,0x36,0x42,0x76,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x32,0x7a,0x42,0x2c,0x45,0x41,0x41,0x31,0x42,0x31,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x42,0x2c,0x4d,0x41,0x41,0x30,0x42,0x31,0x48,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x74,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x45,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x7a,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x65,0x2c,0x47,0x41,0x41,0x47,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6d,0x44,0x41,0x41,0x6d,0x44,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x68,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x67,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x39,0x4e,0x2c,0x47,0x41,0x41,0x47,0x71,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x70,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x36,0x45,0x41,0x41,0x36,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x7a,0x5a,0x2c,0x53,0x41,0x41,0x53,0x71,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x6d,0x44,0x2c,0x4f,0x41,0x41,0x6a,0x44,0x73,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x55,0x73,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x73,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x39,0x68,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2f,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x53,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x4b,0x41,0x41,0x4d,0x6d,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x6e,0x72,0x42,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x55,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x55,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x55,0x41,0x41,0x55,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x45,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x75,0x43,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x43,0x41,0x43,0x35,0x5a,0x2c,0x49,0x41,0x41,0x49,0x39,0x4c,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6d,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x74,0x71,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x70,0x4e,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2b,0x4d,0x2c,0x45,0x41,0x41,0x45,0x74,0x71,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x79,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x68,0x4b,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x77,0x50,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x2b,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x32,0x44,0x41,0x41,0x34,0x44,0x2c,0x43,0x41,0x43,0x7a,0x4d,0x73,0x6e,0x43,0x2c,0x45,0x41,0x41,0x51,0x34,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x4e,0x2c,0x45,0x41,0x41,0x45,0x33,0x2b,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x73,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x53,0x41,0x41,0x53,0x72,0x75,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x75,0x42,0x2c,0x4f,0x41,0x41,0x72,0x42,0x69,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x6c,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x55,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x75,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x74,0x75,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x6c,0x68,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x75,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x76,0x75,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x79,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x79,0x45,0x41,0x41,0x79,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x6a,0x46,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x69,0x43,0x2c,0x55,0x41,0x41,0x55,0x72,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x67,0x42,0x2c,0x45,0x41,0x41,0x51,0x6b,0x43,0x2c,0x53,0x41,0x41,0x53,0x31,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x6d,0x43,0x2c,0x53,0x41,0x41,0x53,0x7a,0x64,0x2c,0x45,0x41,0x41,0x45,0x73,0x62,0x2c,0x45,0x41,0x41,0x51,0x6f,0x43,0x2c,0x63,0x41,0x41,0x63,0x76,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x67,0x42,0x2c,0x45,0x41,0x41,0x51,0x71,0x43,0x2c,0x57,0x41,0x41,0x57,0x35,0x64,0x2c,0x45,0x41,0x41,0x45,0x75,0x62,0x2c,0x45,0x41,0x41,0x51,0x73,0x43,0x2c,0x53,0x41,0x41,0x53,0x31,0x6c,0x42,0x2c,0x45,0x41,0x43,0x6c,0x63,0x6f,0x6a,0x42,0x2c,0x45,0x41,0x41,0x51,0x37,0x6f,0x43,0x2c,0x6d,0x44,0x41,0x41,0x6d,0x44,0x38,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x4a,0x2c,0x45,0x41,0x41,0x51,0x75,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x4c,0x2c,0x45,0x41,0x43,0x7a,0x45,0x6b,0x4a,0x2c,0x45,0x41,0x41,0x51,0x77,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x53,0x41,0x41,0x53,0x2f,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x42,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x46,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x69,0x46,0x41,0x41,0x69,0x46,0x6a,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x54,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x32,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x65,0x2c,0x49,0x41,0x41,0x49,0x72,0x59,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x77,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x68,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x6f,0x45,0x2c,0x51,0x41,0x41,0x6e,0x45,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x68,0x42,0x2c,0x63,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x53,0x6c,0x53,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x4d,0x41,0x41,0x4d,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x6b,0x65,0x2c,0x4b,0x41,0x41,0x51,0x6e,0x65,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x34,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x6e,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x34,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x49,0x41,0x41,0x49,0x70,0x35,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6c,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x68,0x44,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x7a,0x42,0x2c,0x65,0x41,0x41,0x65,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x51,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x53,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x53,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x37,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x48,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x48,0x2c,0x47,0x41,0x43,0x72,0x66,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x73,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x74,0x50,0x2c,0x45,0x41,0x41,0x45,0x73,0x50,0x2c,0x49,0x41,0x41,0x49,0x72,0x50,0x2c,0x45,0x41,0x41,0x45,0x71,0x50,0x2c,0x47,0x41,0x41,0x47,0x37,0x51,0x2c,0x55,0x41,0x41,0x55,0x36,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x38,0x48,0x2c,0x53,0x41,0x41,0x53,0x33,0x48,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x32,0x45,0x2c,0x53,0x41,0x41,0x53,0x56,0x2c,0x45,0x41,0x41,0x45,0x31,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x63,0x2c,0x49,0x41,0x41,0x49,0x6a,0x65,0x2c,0x45,0x41,0x41,0x45,0x38,0x76,0x42,0x2c,0x49,0x41,0x41,0x49,0x6c,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x36,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x75,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x30,0x6d,0x43,0x2c,0x45,0x41,0x41,0x51,0x79,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x53,0x68,0x76,0x43,0x2c,0x47,0x41,0x41,0x71,0x4b,0x2c,0x4f,0x41,0x41,0x6c,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x73,0x47,0x2c,0x53,0x41,0x41,0x53,0x34,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x32,0x49,0x2c,0x63,0x41,0x41,0x63,0x37,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x76,0x43,0x2c,0x65,0x41,0x41,0x65,0x6a,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x76,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x51,0x48,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x37,0x6f,0x43,0x2c,0x53,0x41,0x41,0x53,0x79,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x78,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x76,0x47,0x2c,0x47,0x41,0x41,0x55,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x76,0x43,0x2c,0x53,0x41,0x41,0x53,0x70,0x76,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x72,0x43,0x2c,0x63,0x41,0x41,0x63,0x77,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x58,0x2c,0x45,0x41,0x41,0x51,0x67,0x44,0x2c,0x63,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x53,0x76,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x6f,0x42,0x2c,0x47,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x54,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x53,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x69,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x72,0x39,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x43,0x39,0x64,0x6f,0x36,0x42,0x2c,0x45,0x41,0x41,0x51,0x6b,0x44,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x7a,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x73,0x47,0x2c,0x53,0x41,0x41,0x53,0x2f,0x45,0x2c,0x45,0x41,0x41,0x45,0x36,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x70,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x6d,0x44,0x2c,0x65,0x41,0x41,0x65,0x6a,0x61,0x2c,0x45,0x41,0x41,0x45,0x38,0x57,0x2c,0x45,0x41,0x41,0x51,0x6f,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x33,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x73,0x47,0x2c,0x53,0x41,0x41,0x53,0x34,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x71,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x77,0x6e,0x43,0x2c,0x53,0x41,0x41,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x6a,0x75,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x71,0x37,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x79,0x4b,0x2c,0x45,0x41,0x41,0x51,0x71,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x35,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x71,0x47,0x2c,0x53,0x41,0x41,0x53,0x32,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2b,0x42,0x2c,0x61,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x53,0x6c,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x73,0x44,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x37,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x71,0x42,0x2c,0x57,0x41,0x41,0x57,0x73,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x71,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x68,0x59,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x73,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x74,0x71,0x42,0x2c,0x57,0x41,0x41,0x57,0x2f,0x58,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x75,0x44,0x2c,0x61,0x41,0x41,0x61,0x7a,0x4d,0x2c,0x45,0x41,0x41,0x45,0x6b,0x4a,0x2c,0x45,0x41,0x41,0x51,0x35,0x53,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x33,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x77,0x6e,0x42,0x2c,0x59,0x41,0x41,0x59,0x33,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x33,0x53,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x35,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x79,0x6e,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x33,0x66,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x6c,0x53,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x6b,0x53,0x2c,0x45,0x41,0x41,0x51,0x6a,0x53,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x53,0x41,0x41,0x53,0x74,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x6d,0x6f,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x74,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x31,0x53,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x37,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x30,0x6e,0x42,0x2c,0x55,0x41,0x41,0x55,0x37,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x37,0x52,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x79,0x48,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x75,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x45,0x41,0x41,0x45,0x36,0x52,0x2c,0x45,0x41,0x41,0x51,0x7a,0x53,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x39,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x32,0x6e,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x39,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x71,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x53,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x53,0x41,0x41,0x53,0x2f,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x34,0x6e,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2f,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x76,0x53,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x53,0x41,0x41,0x53,0x68,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x36,0x6e,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x68,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x43,0x7a,0x64,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x74,0x53,0x2c,0x51,0x41,0x41,0x51,0x2c,0x53,0x41,0x41,0x53,0x6a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x38,0x6e,0x42,0x2c,0x51,0x41,0x41,0x51,0x6a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x72,0x53,0x2c,0x57,0x41,0x41,0x57,0x2c,0x53,0x41,0x41,0x53,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x2b,0x6e,0x42,0x2c,0x57,0x41,0x41,0x57,0x6c,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x71,0x43,0x2c,0x45,0x41,0x41,0x51,0x70,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x6e,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x67,0x6f,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x6e,0x53,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x70,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6d,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x6f,0x42,0x2c,0x53,0x41,0x41,0x53,0x70,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x39,0x52,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x53,0x41,0x41,0x53,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x30,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x73,0x6f,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x7a,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x71,0x43,0x2c,0x45,0x41,0x41,0x51,0x68,0x53,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x34,0x48,0x2c,0x45,0x41,0x41,0x45,0x68,0x77,0x42,0x2c,0x51,0x41,0x41,0x51,0x6f,0x6f,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x45,0x41,0x41,0x45,0x67,0x53,0x2c,0x45,0x41,0x41,0x51,0x31,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x75,0x42,0x43,0x74,0x42,0x6c,0x61,0x32,0x43,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x6a,0x42,0x69,0x42,0x2c,0x6f,0x42,0x43,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x6a,0x42,0x69,0x42,0x2c,0x6b,0x42,0x43,0x4d,0x57,0x2c,0x53,0x41,0x41,0x53,0x39,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x6d,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x51,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x78,0x42,0x2c,0x49,0x41,0x41,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x45,0x41,0x41,0x37,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x43,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x71,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x4a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x39,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x48,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x37,0x76,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x78,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x54,0x2c,0x45,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x67,0x52,0x2c,0x47,0x41,0x41,0x47,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x39,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x59,0x2c,0x45,0x41,0x41,0x45,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x6e,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x54,0x2c,0x45,0x41,0x41,0x45,0x6e,0x56,0x2c,0x47,0x41,0x41,0x47,0x34,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x54,0x2c,0x49,0x41,0x41,0x49,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x54,0x2c,0x45,0x41,0x41,0x45,0x72,0x56,0x2c,0x45,0x41,0x41,0x45,0x67,0x52,0x2c,0x47,0x41,0x41,0x47,0x39,0x51,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x50,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x47,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x72,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6f,0x42,0x2c,0x49,0x41,0x41,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x45,0x41,0x41,0x37,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x35,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x6e,0x42,0x2c,0x43,0x41,0x41,0x63,0x2c,0x45,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x37,0x6f,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x33,0x63,0x2c,0x53,0x41,0x41,0x53,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x2f,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x39,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x59,0x2c,0x47,0x41,0x41,0x47,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x6d,0x59,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x36,0x33,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x41,0x2c,0x59,0x41,0x41,0x59,0x33,0x31,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x31,0x55,0x2c,0x45,0x41,0x41,0x45,0x71,0x71,0x43,0x2c,0x59,0x41,0x41,0x59,0x31,0x44,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x6e,0x4e,0x2c,0x45,0x41,0x41,0x45,0x30,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x76,0x61,0x2c,0x45,0x41,0x41,0x45,0x73,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x57,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x61,0x2c,0x4d,0x41,0x41,0x4d,0x69,0x79,0x42,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x61,0x41,0x41,0x61,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x68,0x54,0x2c,0x45,0x41,0x41,0x45,0x75,0x61,0x2c,0x4d,0x41,0x41,0x4d,0x30,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6c,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x33,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x37,0x75,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x79,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x67,0x4f,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x71,0x56,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x79,0x43,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x72,0x42,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x38,0x6d,0x42,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x61,0x41,0x41,0x61,0x2c,0x4b,0x41,0x43,0x6e,0x54,0x2c,0x53,0x41,0x41,0x53,0x39,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x30,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x37,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4d,0x41,0x41,0x47,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x77,0x43,0x2c,0x57,0x41,0x41,0x57,0x6e,0x77,0x43,0x2c,0x47,0x41,0x41,0x67,0x44,0x2c,0x4d,0x41,0x41,0x39,0x43,0x38,0x46,0x2c,0x45,0x41,0x41,0x45,0x69,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x39,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x76,0x43,0x2c,0x55,0x41,0x41,0x55,0x2f,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x77,0x43,0x2c,0x65,0x41,0x41,0x65,0x31,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x41,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x75,0x44,0x2c,0x45,0x41,0x41,0x45,0x74,0x73,0x42,0x2c,0x47,0x41,0x41,0x61,0x2c,0x47,0x41,0x41,0x56,0x38,0x53,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x73,0x5a,0x2c,0x45,0x41,0x41,0x45,0x70,0x73,0x42,0x2c,0x49,0x41,0x41,0x4f,0x38,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x65,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x73,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x34,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2f,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x39,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x34,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x48,0x2c,0x45,0x41,0x41,0x45,0x72,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x6e,0x77,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x43,0x72,0x61,0x2c,0x53,0x41,0x41,0x53,0x67,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x36,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x67,0x4f,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x71,0x5a,0x2c,0x45,0x41,0x41,0x45,0x30,0x49,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x78,0x79,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4c,0x39,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x73,0x42,0x2c,0x47,0x41,0x41,0x4f,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x76,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x43,0x2c,0x65,0x41,0x41,0x65,0x6e,0x77,0x43,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x49,0x41,0x41,0x49,0x75,0x31,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2f,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x6e,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x44,0x2c,0x45,0x41,0x41,0x45,0x6f,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x33,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x75,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x35,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x36,0x75,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6e,0x77,0x43,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x74,0x52,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x49,0x41,0x41,0x49,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x6e,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x37,0x45,0x2c,0x45,0x41,0x41,0x45,0x6e,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x6d,0x72,0x42,0x2c,0x47,0x41,0x41,0x47,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x31,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x34,0x6e,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x59,0x2c,0x45,0x41,0x41,0x45,0x6e,0x4c,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x58,0x2c,0x47,0x41,0x41,0x47,0x36,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x48,0x2c,0x45,0x41,0x41,0x45,0x74,0x62,0x2c,0x45,0x41,0x41,0x45,0x6d,0x2f,0x42,0x2c,0x55,0x41,0x41,0x55,0x6c,0x77,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x70,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x35,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x6d,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x44,0x31,0x61,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x69,0x75,0x43,0x2c,0x67,0x42,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x53,0x41,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x69,0x42,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x53,0x44,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x46,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x65,0x41,0x41,0x65,0x37,0x6e,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x6e,0x42,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x59,0x41,0x43,0x32,0x51,0x2c,0x49,0x41,0x43,0x7a,0x50,0x72,0x50,0x2c,0x45,0x41,0x44,0x36,0x50,0x31,0x4c,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x5a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x76,0x63,0x2c,0x53,0x41,0x41,0x53,0x6e,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x51,0x41,0x41,0x4f,0x67,0x58,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x65,0x41,0x41,0x65,0x32,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x45,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x30,0x44,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x65,0x41,0x41,0x65,0x32,0x6b,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x77,0x31,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x68,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x31,0x4c,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x44,0x2c,0x47,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x70,0x4d,0x2c,0x45,0x41,0x41,0x45,0x38,0x58,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x39,0x58,0x2c,0x45,0x41,0x41,0x45,0x6f,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x69,0x58,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x33,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x32,0x4f,0x2c,0x65,0x41,0x41,0x65,0x74,0x4f,0x2c,0x45,0x41,0x41,0x45,0x4c,0x2c,0x45,0x41,0x41,0x45,0x34,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x35,0x4f,0x2c,0x45,0x41,0x41,0x45,0x36,0x4f,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x55,0x41,0x41,0x55,0x70,0x58,0x2c,0x45,0x41,0x41,0x45,0x30,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x30,0x4f,0x2c,0x59,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x33,0x50,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2f,0x59,0x2c,0x45,0x41,0x41,0x45,0x71,0x52,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x39,0x4b,0x2c,0x45,0x41,0x41,0x45,0x31,0x75,0x42,0x2c,0x47,0x41,0x41,0x47,0x79,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x77,0x31,0x42,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x30,0x4c,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x53,0x41,0x41,0x53,0x72,0x4e,0x2c,0x45,0x41,0x41,0x45,0x37,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x34,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x4d,0x2c,0x47,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x6e,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x65,0x41,0x41,0x65,0x2c,0x47,0x41,0x41,0x45,0x39,0x53,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x43,0x35,0x64,0x73,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x35,0x34,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x34,0x34,0x42,0x2c,0x45,0x41,0x41,0x51,0x70,0x35,0x42,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x35,0x42,0x2c,0x45,0x41,0x41,0x51,0x39,0x34,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x34,0x42,0x2c,0x45,0x41,0x41,0x51,0x68,0x35,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x35,0x42,0x2c,0x45,0x41,0x41,0x51,0x75,0x45,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x76,0x45,0x2c,0x45,0x41,0x41,0x51,0x6c,0x35,0x42,0x2c,0x38,0x42,0x41,0x41,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x35,0x42,0x2c,0x45,0x41,0x41,0x51,0x39,0x35,0x42,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x53,0x41,0x41,0x53,0x7a,0x53,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x7a,0x42,0x2c,0x53,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x34,0x59,0x2c,0x45,0x41,0x41,0x51,0x77,0x45,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x2c,0x57,0x41,0x41,0x57,0x6a,0x73,0x43,0x2c,0x47,0x41,0x41,0x47,0x7a,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x34,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x43,0x31,0x55,0x75,0x6a,0x42,0x2c,0x45,0x41,0x41,0x51,0x79,0x45,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x53,0x41,0x41,0x53,0x68,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x38,0x42,0x2c,0x51,0x41,0x41,0x51,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x6d,0x48,0x41,0x41,0x6d,0x48,0x39,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x39,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x54,0x2c,0x4b,0x41,0x41,0x4b,0x6b,0x39,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x74,0x35,0x42,0x2c,0x69,0x43,0x41,0x41,0x69,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x69,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x62,0x2c,0x45,0x41,0x41,0x51,0x32,0x45,0x2c,0x38,0x42,0x41,0x41,0x38,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x72,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x73,0x62,0x2c,0x45,0x41,0x41,0x51,0x34,0x45,0x2c,0x63,0x41,0x41,0x63,0x2c,0x53,0x41,0x41,0x53,0x6e,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x6b,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x36,0x45,0x2c,0x77,0x42,0x41,0x41,0x77,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x43,0x39,0x66,0x37,0x45,0x2c,0x45,0x41,0x41,0x51,0x31,0x35,0x42,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x57,0x41,0x41,0x57,0x2c,0x45,0x41,0x41,0x45,0x30,0x35,0x42,0x2c,0x45,0x41,0x41,0x51,0x38,0x45,0x2c,0x79,0x42,0x41,0x41,0x79,0x42,0x2c,0x53,0x41,0x41,0x53,0x72,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6c,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x68,0x4d,0x71,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x68,0x36,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x53,0x41,0x41,0x53,0x76,0x53,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x71,0x43,0x2c,0x45,0x41,0x41,0x51,0x78,0x35,0x42,0x2c,0x65,0x41,0x41,0x38,0x46,0x2c,0x4f,0x41,0x41,0x2f,0x45,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x37,0x53,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x61,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6b,0x42,0x41,0x41,0x5a,0x41,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x78,0x43,0x2c,0x51,0x41,0x41,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x47,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x45,0x41,0x41,0x53,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x6d,0x4e,0x2c,0x4f,0x41,0x41,0x7a,0x4d,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6f,0x59,0x2c,0x47,0x41,0x41,0x47,0x38,0x51,0x2c,0x49,0x41,0x41,0x49,0x79,0x4b,0x2c,0x53,0x41,0x41,0x53,0x31,0x7a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x77,0x43,0x2c,0x63,0x41,0x41,0x63,0x72,0x77,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x6a,0x77,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x77,0x43,0x2c,0x65,0x41,0x41,0x76,0x44,0x33,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x42,0x2c,0x45,0x41,0x41,0x6f,0x45,0x75,0x75,0x43,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x39,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x39,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2f,0x6f,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x6f,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x6a,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x36,0x46,0x2c,0x45,0x41,0x41,0x45,0x6b,0x6a,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6a,0x57,0x2c,0x47,0x41,0x41,0x47,0x71,0x5a,0x2c,0x45,0x41,0x41,0x45,0x30,0x49,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2f,0x68,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2b,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x76,0x48,0x2c,0x45,0x41,0x41,0x45,0x70,0x73,0x42,0x2c,0x45,0x41,0x41,0x45,0x73,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x76,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x75,0x76,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x45,0x2c,0x47,0x41,0x41,0x47,0x7a,0x43,0x2c,0x49,0x41,0x41,0x49,0x79,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x34,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x31,0x46,0x2c,0x4b,0x41,0x41,0x59,0x68,0x70,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x6e,0x65,0x75,0x73,0x43,0x2c,0x45,0x41,0x41,0x51,0x35,0x35,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x34,0x69,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x58,0x2c,0x45,0x41,0x41,0x51,0x67,0x46,0x2c,0x73,0x42,0x41,0x41,0x73,0x42,0x2c,0x53,0x41,0x41,0x53,0x76,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x6a,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x51,0x2c,0x4d,0x41,0x41,0x4d,0x6e,0x50,0x2c,0x4b,0x41,0x41,0x4b,0x7a,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x43,0x41,0x41,0x43,0x2c,0x51,0x41,0x41,0x51,0x2b,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x68,0x78,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x69,0x42,0x43,0x66,0x37,0x4a,0x73,0x74,0x43,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x51,0x41,0x41,0x55,0x2c,0x45,0x41,0x41,0x6a,0x42,0x69,0x42,0x2c,0x4f,0x43,0x46,0x45,0x67,0x45,0x2c,0x45,0x41,0x41,0x32,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x47,0x68,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x43,0x2c,0x47,0x41,0x45,0x35,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x65,0x48,0x2c,0x45,0x41,0x41,0x79,0x42,0x45,0x2c,0x47,0x41,0x43,0x35,0x43,0x2c,0x51,0x41,0x41,0x71,0x42,0x45,0x2c,0x49,0x41,0x41,0x6a,0x42,0x44,0x2c,0x45,0x41,0x43,0x48,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x61,0x70,0x46,0x2c,0x51,0x41,0x47,0x72,0x42,0x2c,0x49,0x41,0x41,0x49,0x69,0x42,0x2c,0x45,0x41,0x41,0x53,0x67,0x45,0x2c,0x45,0x41,0x41,0x79,0x42,0x45,0x2c,0x47,0x41,0x41,0x59,0x2c,0x43,0x41,0x47,0x6a,0x44,0x6e,0x46,0x2c,0x51,0x41,0x41,0x53,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x4f,0x58,0x2c,0x4f,0x41,0x48,0x41,0x73,0x46,0x2c,0x45,0x41,0x41,0x6f,0x42,0x48,0x2c,0x47,0x41,0x41,0x55,0x6c,0x45,0x2c,0x45,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x51,0x41,0x41,0x53,0x6b,0x46,0x2c,0x47,0x41,0x47,0x2f,0x43,0x6a,0x45,0x2c,0x45,0x41,0x41,0x4f,0x6a,0x42,0x2c,0x4f,0x41,0x43,0x66,0x2c,0x43,0x41,0x47,0x41,0x6b,0x46,0x2c,0x45,0x41,0x41,0x6f,0x42,0x7a,0x67,0x43,0x2c,0x45,0x41,0x41,0x49,0x36,0x67,0x43,0x2c,0x45,0x43,0x78,0x42,0x78,0x42,0x4a,0x2c,0x45,0x41,0x41,0x6f,0x42,0x6a,0x77,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2b,0x71,0x43,0x2c,0x45,0x41,0x41,0x53,0x75,0x46,0x2c,0x4b,0x41,0x43,0x6a,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x33,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x32,0x7a,0x42,0x2c,0x45,0x41,0x43,0x58,0x4c,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x59,0x33,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x53,0x73,0x7a,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x78,0x46,0x2c,0x45,0x41,0x41,0x53,0x70,0x75,0x42,0x2c,0x49,0x41,0x43,0x35,0x45,0x6c,0x64,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x2b,0x6d,0x43,0x2c,0x45,0x41,0x41,0x53,0x70,0x75,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x45,0x2f,0x57,0x2c,0x59,0x41,0x41,0x59,0x2c,0x45,0x41,0x41,0x4d,0x46,0x2c,0x49,0x41,0x41,0x4b,0x34,0x71,0x43,0x2c,0x45,0x41,0x41,0x57,0x33,0x7a,0x42,0x2c,0x49,0x41,0x45,0x31,0x45,0x2c,0x45,0x43,0x4e,0x44,0x73,0x7a,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x2f,0x76,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x47,0x7a,0x42,0x2b,0x76,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x68,0x77,0x43,0x2c,0x45,0x41,0x41,0x4b,0x75,0x77,0x43,0x2c,0x47,0x41,0x43,0x6a,0x42,0x68,0x6e,0x42,0x2c,0x51,0x41,0x41,0x51,0x69,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x68,0x78,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x32,0x6a,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x2f,0x76,0x43,0x2c,0x47,0x41,0x41,0x47,0x77,0x77,0x43,0x2c,0x51,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x55,0x68,0x30,0x42,0x2c,0x4b,0x41,0x43,0x76,0x45,0x73,0x7a,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x2f,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x63,0x2c,0x47,0x41,0x41,0x4b,0x36,0x7a,0x42,0x2c,0x45,0x41,0x41,0x53,0x47,0x2c,0x47,0x41,0x43,0x37,0x42,0x41,0x2c,0x49,0x41,0x43,0x4c,0x2c,0x4b,0x43,0x4e,0x4a,0x56,0x2c,0x45,0x41,0x41,0x6f,0x42,0x76,0x6f,0x42,0x2c,0x45,0x41,0x41,0x4b,0x38,0x6f,0x42,0x2c,0x47,0x41,0x45,0x6a,0x42,0x2c,0x61,0x41,0x41,0x65,0x41,0x2c,0x45,0x41,0x41,0x66,0x2c,0x71,0x42,0x43,0x46,0x52,0x50,0x2c,0x45,0x41,0x41,0x6f,0x42,0x57,0x2c,0x53,0x41,0x41,0x59,0x4a,0x2c,0x49,0x41,0x45,0x66,0x2c,0x45,0x43,0x48,0x6a,0x42,0x50,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x4d,0x2c,0x45,0x41,0x41,0x4b,0x43,0x2c,0x49,0x41,0x41,0x55,0x72,0x78,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x55,0x41,0x41,0x55,0x43,0x2c,0x65,0x41,0x41,0x65,0x38,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6f,0x76,0x43,0x2c,0x45,0x41,0x41,0x4b,0x43,0x2c,0x53,0x43,0x41,0x6c,0x46,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x43,0x64,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x2c,0x75,0x42,0x41,0x45,0x78,0x42,0x66,0x2c,0x45,0x41,0x41,0x6f,0x42,0x37,0x72,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x67,0x63,0x2c,0x45,0x41,0x41,0x4b,0x77,0x50,0x2c,0x45,0x41,0x41,0x4d,0x6a,0x54,0x2c,0x45,0x41,0x41,0x4b,0x36,0x7a,0x42,0x2c,0x4b,0x41,0x43,0x78,0x43,0x2c,0x47,0x41,0x41,0x47,0x4f,0x2c,0x45,0x41,0x41,0x57,0x33,0x77,0x42,0x2c,0x47,0x41,0x41,0x51,0x32,0x77,0x42,0x2c,0x45,0x41,0x41,0x57,0x33,0x77,0x42,0x2c,0x47,0x41,0x41,0x4b,0x7a,0x52,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x68,0x42,0x2c,0x4f,0x41,0x41,0x33,0x43,0x2c,0x43,0x41,0x43,0x41,0x2c,0x49,0x41,0x41,0x49,0x71,0x68,0x42,0x2c,0x45,0x41,0x41,0x51,0x43,0x2c,0x45,0x41,0x43,0x5a,0x2c,0x51,0x41,0x41,0x57,0x64,0x2c,0x49,0x41,0x41,0x52,0x7a,0x7a,0x42,0x2c,0x45,0x41,0x45,0x46,0x2c,0x49,0x41,0x44,0x41,0x2c,0x49,0x41,0x41,0x49,0x77,0x30,0x42,0x2c,0x45,0x41,0x41,0x55,0x37,0x78,0x43,0x2c,0x53,0x41,0x41,0x53,0x38,0x78,0x43,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x55,0x41,0x43,0x70,0x43,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x51,0x76,0x79,0x43,0x2c,0x4f,0x41,0x41,0x51,0x79,0x79,0x43,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x43,0x41,0x43,0x76,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x49,0x48,0x2c,0x45,0x41,0x41,0x51,0x45,0x2c,0x47,0x41,0x43,0x68,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x55,0x6e,0x78,0x42,0x2c,0x47,0x41,0x41,0x4f,0x6b,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x69,0x42,0x41,0x41,0x6d,0x42,0x50,0x2c,0x45,0x41,0x41,0x6f,0x42,0x72,0x30,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x45,0x73,0x30,0x42,0x2c,0x45,0x41,0x41,0x53,0x4b,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x70,0x48,0x2c,0x43,0x41,0x45,0x47,0x4c,0x2c,0x49,0x41,0x43,0x48,0x43,0x2c,0x47,0x41,0x41,0x61,0x2c,0x47,0x41,0x43,0x62,0x44,0x2c,0x45,0x41,0x41,0x53,0x33,0x78,0x43,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x63,0x41,0x41,0x63,0x2c,0x57,0x41,0x45,0x7a,0x42,0x69,0x79,0x43,0x2c,0x51,0x41,0x41,0x55,0x2c,0x51,0x41,0x43,0x6a,0x42,0x50,0x2c,0x45,0x41,0x41,0x4f,0x51,0x2c,0x51,0x41,0x41,0x55,0x2c,0x49,0x41,0x43,0x62,0x78,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x79,0x42,0x2c,0x49,0x41,0x43,0x76,0x42,0x54,0x2c,0x45,0x41,0x41,0x4f,0x70,0x76,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x51,0x41,0x41,0x53,0x6f,0x75,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x79,0x42,0x2c,0x49,0x41,0x45,0x6c,0x44,0x54,0x2c,0x45,0x41,0x41,0x4f,0x70,0x76,0x43,0x2c,0x61,0x41,0x41,0x61,0x2c,0x65,0x41,0x41,0x67,0x42,0x6d,0x76,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x72,0x30,0x42,0x2c,0x47,0x41,0x45,0x78,0x44,0x73,0x30,0x42,0x2c,0x45,0x41,0x41,0x4f,0x68,0x4f,0x2c,0x49,0x41,0x41,0x4d,0x37,0x69,0x42,0x2c,0x47,0x41,0x45,0x64,0x32,0x77,0x42,0x2c,0x45,0x41,0x41,0x57,0x33,0x77,0x42,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x43,0x77,0x50,0x2c,0x47,0x41,0x43,0x6e,0x42,0x2c,0x49,0x41,0x41,0x49,0x2b,0x68,0x42,0x2c,0x45,0x41,0x41,0x6d,0x42,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x4d,0x6e,0x78,0x42,0x2c,0x4b,0x41,0x45,0x37,0x42,0x77,0x77,0x42,0x2c,0x45,0x41,0x41,0x4f,0x59,0x2c,0x51,0x41,0x41,0x55,0x5a,0x2c,0x45,0x41,0x41,0x4f,0x61,0x2c,0x4f,0x41,0x41,0x53,0x2c,0x4b,0x41,0x43,0x6a,0x43,0x78,0x6f,0x42,0x2c,0x61,0x41,0x41,0x61,0x6d,0x6f,0x42,0x2c,0x47,0x41,0x43,0x62,0x2c,0x49,0x41,0x41,0x49,0x4d,0x2c,0x45,0x41,0x41,0x55,0x68,0x42,0x2c,0x45,0x41,0x41,0x57,0x33,0x77,0x42,0x2c,0x47,0x41,0x49,0x7a,0x42,0x2c,0x55,0x41,0x48,0x4f,0x32,0x77,0x42,0x2c,0x45,0x41,0x41,0x57,0x33,0x77,0x42,0x2c,0x47,0x41,0x43,0x6c,0x42,0x36,0x77,0x42,0x2c,0x45,0x41,0x41,0x4f,0x2f,0x69,0x43,0x2c,0x59,0x41,0x41,0x63,0x2b,0x69,0x43,0x2c,0x45,0x41,0x41,0x4f,0x2f,0x69,0x43,0x2c,0x57,0x41,0x41,0x57,0x74,0x46,0x2c,0x59,0x41,0x41,0x59,0x71,0x6f,0x43,0x2c,0x47,0x41,0x43,0x6e,0x44,0x63,0x2c,0x47,0x41,0x41,0x57,0x41,0x2c,0x45,0x41,0x41,0x51,0x68,0x78,0x43,0x2c,0x53,0x41,0x41,0x53,0x69,0x78,0x43,0x2c,0x47,0x41,0x41,0x51,0x41,0x2c,0x45,0x41,0x41,0x47,0x76,0x78,0x42,0x2c,0x4b,0x41,0x43,0x70,0x43,0x6d,0x78,0x42,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x4b,0x6e,0x78,0x42,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x45,0x41,0x45,0x78,0x42,0x67,0x78,0x42,0x2c,0x45,0x41,0x41,0x55,0x72,0x6f,0x42,0x2c,0x57,0x41,0x41,0x57,0x75,0x6f,0x42,0x2c,0x45,0x41,0x41,0x69,0x42,0x78,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x55,0x41,0x41,0x4d,0x69,0x70,0x42,0x2c,0x45,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x45,0x31,0x76,0x43,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x55,0x41,0x41,0x57,0x71,0x4e,0x2c,0x4f,0x41,0x41,0x51,0x6b,0x6a,0x43,0x2c,0x49,0x41,0x41,0x57,0x2c,0x4d,0x41,0x43,0x74,0x47,0x41,0x2c,0x45,0x41,0x41,0x4f,0x59,0x2c,0x51,0x41,0x41,0x55,0x46,0x2c,0x45,0x41,0x41,0x69,0x42,0x78,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4d,0x38,0x70,0x42,0x2c,0x45,0x41,0x41,0x4f,0x59,0x2c,0x53,0x41,0x43,0x70,0x44,0x5a,0x2c,0x45,0x41,0x41,0x4f,0x61,0x2c,0x4f,0x41,0x41,0x53,0x48,0x2c,0x45,0x41,0x41,0x69,0x42,0x78,0x71,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4d,0x38,0x70,0x42,0x2c,0x45,0x41,0x41,0x4f,0x61,0x2c,0x51,0x41,0x43,0x6e,0x44,0x5a,0x2c,0x47,0x41,0x41,0x63,0x35,0x78,0x43,0x2c,0x53,0x41,0x41,0x53,0x32,0x79,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x70,0x70,0x43,0x2c,0x59,0x41,0x41,0x59,0x6f,0x6f,0x43,0x2c,0x45,0x41,0x70,0x43,0x6b,0x42,0x2c,0x43,0x41,0x6f,0x43,0x58,0x2c,0x4d,0x43,0x76,0x43,0x68,0x44,0x68,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x78,0x67,0x42,0x2c,0x45,0x41,0x41,0x4b,0x73,0x62,0x2c,0x49,0x41,0x43,0x48,0x2c,0x71,0x42,0x41,0x41,0x58,0x33,0x6f,0x43,0x2c,0x51,0x41,0x41,0x30,0x42,0x41,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x76,0x43,0x2c,0x61,0x41,0x43,0x31,0x43,0x7a,0x79,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x2b,0x6d,0x43,0x2c,0x45,0x41,0x41,0x53,0x33,0x6f,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x76,0x43,0x2c,0x59,0x41,0x41,0x61,0x2c,0x43,0x41,0x41,0x45,0x2f,0x72,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x57,0x41,0x45,0x37,0x44,0x31,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x75,0x45,0x2c,0x65,0x41,0x41,0x65,0x2b,0x6d,0x43,0x2c,0x45,0x41,0x41,0x53,0x2c,0x61,0x41,0x41,0x63,0x2c,0x43,0x41,0x41,0x45,0x35,0x6b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x4f,0x2c,0x45,0x43,0x4c,0x39,0x44,0x38,0x70,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x31,0x78,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x55,0x43,0x4b,0x78,0x42,0x2c,0x49,0x41,0x41,0x49,0x34,0x7a,0x43,0x2c,0x45,0x41,0x41,0x6b,0x42,0x2c,0x43,0x41,0x43,0x72,0x42,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x47,0x41,0x47,0x4e,0x6c,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x2f,0x76,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x79,0x43,0x2c,0x45,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x35,0x42,0x2c,0x45,0x41,0x41,0x53,0x47,0x2c,0x4b,0x41,0x45,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x30,0x42,0x2c,0x45,0x41,0x41,0x71,0x42,0x70,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x45,0x41,0x41,0x69,0x42,0x33,0x42,0x2c,0x47,0x41,0x41,0x57,0x32,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x51,0x41,0x41,0x57,0x4a,0x2c,0x45,0x41,0x43,0x74,0x47,0x2c,0x47,0x41,0x41,0x30,0x42,0x2c,0x49,0x41,0x41,0x76,0x42,0x69,0x43,0x2c,0x45,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x43,0x46,0x31,0x42,0x2c,0x45,0x41,0x41,0x53,0x68,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x6a,0x43,0x2c,0x45,0x41,0x41,0x6d,0x42,0x2c,0x51,0x41,0x43,0x33,0x42,0x2c,0x43,0x41,0x47,0x4c,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x55,0x2c,0x49,0x41,0x41,0x49,0x39,0x6f,0x42,0x2c,0x53,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x47,0x2c,0x45,0x41,0x41,0x53,0x34,0x6f,0x42,0x2c,0x49,0x41,0x41,0x59,0x46,0x2c,0x45,0x41,0x41,0x71,0x42,0x46,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x47,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x37,0x6d,0x42,0x2c,0x45,0x41,0x41,0x53,0x34,0x6f,0x42,0x2c,0x4b,0x41,0x43,0x31,0x47,0x35,0x42,0x2c,0x45,0x41,0x41,0x53,0x68,0x69,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x30,0x6a,0x43,0x2c,0x45,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x4b,0x43,0x2c,0x47,0x41,0x47,0x74,0x43,0x2c,0x49,0x41,0x41,0x49,0x6c,0x79,0x42,0x2c,0x45,0x41,0x41,0x4d,0x36,0x76,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x31,0x78,0x43,0x2c,0x45,0x41,0x41,0x49,0x30,0x78,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x76,0x6f,0x42,0x2c,0x45,0x41,0x41,0x45,0x38,0x6f,0x42,0x2c,0x47,0x41,0x45,0x70,0x44,0x70,0x56,0x2c,0x45,0x41,0x41,0x51,0x2c,0x49,0x41,0x41,0x49,0x33,0x33,0x42,0x2c,0x4d,0x41,0x67,0x42,0x68,0x42,0x77,0x73,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x37,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x63,0x2c,0x47,0x41,0x66,0x46,0x4b,0x2c,0x49,0x41,0x43,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x76,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x45,0x41,0x41,0x69,0x42,0x33,0x42,0x2c,0x4b,0x41,0x45,0x66,0x2c,0x4b,0x41,0x44,0x31,0x42,0x36,0x42,0x2c,0x45,0x41,0x41,0x71,0x42,0x46,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x4d,0x41,0x43,0x52,0x32,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x51,0x41,0x41,0x57,0x4a,0x2c,0x47,0x41,0x43,0x72,0x44,0x69,0x43,0x2c,0x47,0x41,0x41,0x6f,0x42,0x2c,0x43,0x41,0x43,0x74,0x42,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x59,0x2f,0x78,0x42,0x2c,0x49,0x41,0x41,0x79,0x42,0x2c,0x53,0x41,0x41,0x66,0x41,0x2c,0x45,0x41,0x41,0x4d,0x2f,0x66,0x2c,0x4b,0x41,0x41,0x6b,0x42,0x2c,0x55,0x41,0x41,0x59,0x2b,0x66,0x2c,0x45,0x41,0x41,0x4d,0x2f,0x66,0x2c,0x4d,0x41,0x43,0x68,0x45,0x2b,0x78,0x43,0x2c,0x45,0x41,0x41,0x55,0x68,0x79,0x42,0x2c,0x47,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x4d,0x31,0x53,0x2c,0x51,0x41,0x41,0x55,0x30,0x53,0x2c,0x45,0x41,0x41,0x4d,0x31,0x53,0x2c,0x4f,0x41,0x41,0x4f,0x6b,0x31,0x42,0x2c,0x49,0x41,0x43,0x70,0x44,0x37,0x48,0x2c,0x45,0x41,0x41,0x4d,0x4c,0x2c,0x51,0x41,0x41,0x55,0x2c,0x69,0x42,0x41,0x41,0x6d,0x42,0x79,0x56,0x2c,0x45,0x41,0x41,0x55,0x2c,0x63,0x41,0x41,0x67,0x42,0x67,0x43,0x2c,0x45,0x41,0x41,0x59,0x2c,0x4b,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x55,0x2c,0x49,0x41,0x43,0x31,0x46,0x72,0x58,0x2c,0x45,0x41,0x41,0x4d,0x33,0x32,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x2c,0x69,0x42,0x41,0x43,0x62,0x32,0x32,0x42,0x2c,0x45,0x41,0x41,0x4d,0x31,0x36,0x42,0x2c,0x4b,0x41,0x41,0x4f,0x38,0x78,0x43,0x2c,0x45,0x41,0x43,0x62,0x70,0x58,0x2c,0x45,0x41,0x41,0x4d,0x73,0x58,0x2c,0x51,0x41,0x41,0x55,0x44,0x2c,0x45,0x41,0x43,0x68,0x42,0x4a,0x2c,0x45,0x41,0x41,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x6a,0x58,0x2c,0x45,0x41,0x43,0x76,0x42,0x2c,0x43,0x41,0x43,0x44,0x2c,0x47,0x41,0x45,0x77,0x43,0x2c,0x53,0x41,0x41,0x57,0x6f,0x56,0x2c,0x45,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x45,0x2f,0x44,0x2c,0x43,0x41,0x43,0x44,0x2c,0x45,0x41,0x63,0x46,0x2c,0x49,0x41,0x41,0x49,0x6d,0x43,0x2c,0x45,0x41,0x41,0x75,0x42,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x45,0x41,0x41,0x34,0x42,0x76,0x33,0x42,0x2c,0x4b,0x41,0x43,0x76,0x44,0x2c,0x49,0x41,0x4b,0x49,0x36,0x30,0x42,0x2c,0x45,0x41,0x41,0x55,0x4d,0x2c,0x45,0x41,0x4c,0x56,0x71,0x43,0x2c,0x45,0x41,0x41,0x57,0x78,0x33,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x47,0x41,0x43,0x68,0x42,0x79,0x33,0x42,0x2c,0x45,0x41,0x41,0x63,0x7a,0x33,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x47,0x41,0x43,0x6e,0x42,0x30,0x33,0x42,0x2c,0x45,0x41,0x41,0x55,0x31,0x33,0x42,0x2c,0x45,0x41,0x41,0x4b,0x2c,0x47,0x41,0x47,0x49,0x67,0x32,0x42,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x43,0x33,0x42,0x2c,0x47,0x41,0x41,0x47,0x77,0x42,0x2c,0x45,0x41,0x41,0x53,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x70,0x38,0x42,0x2c,0x47,0x41,0x41,0x67,0x43,0x2c,0x49,0x41,0x41,0x78,0x42,0x75,0x37,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x76,0x37,0x42,0x2c,0x4b,0x41,0x41,0x61,0x2c,0x43,0x41,0x43,0x74,0x44,0x2c,0x49,0x41,0x41,0x49,0x73,0x35,0x42,0x2c,0x4b,0x41,0x41,0x59,0x34,0x43,0x2c,0x45,0x41,0x43,0x5a,0x37,0x43,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x45,0x41,0x41,0x61,0x35,0x43,0x2c,0x4b,0x41,0x43,0x72,0x43,0x44,0x2c,0x45,0x41,0x41,0x6f,0x42,0x7a,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x67,0x43,0x2c,0x47,0x41,0x41,0x59,0x34,0x43,0x2c,0x45,0x41,0x41,0x59,0x35,0x43,0x2c,0x49,0x41,0x47,0x68,0x44,0x2c,0x47,0x41,0x41,0x47,0x36,0x43,0x2c,0x45,0x41,0x41,0x73,0x42,0x41,0x2c,0x45,0x41,0x41,0x51,0x39,0x43,0x2c,0x45,0x41,0x43,0x6c,0x43,0x2c,0x43,0x41,0x45,0x41,0x2c,0x49,0x41,0x44,0x47,0x32,0x43,0x2c,0x47,0x41,0x41,0x34,0x42,0x41,0x2c,0x45,0x41,0x41,0x32,0x42,0x76,0x33,0x42,0x2c,0x47,0x41,0x43,0x72,0x44,0x67,0x32,0x42,0x2c,0x45,0x41,0x41,0x49,0x77,0x42,0x2c,0x45,0x41,0x41,0x53,0x6a,0x30,0x43,0x2c,0x4f,0x41,0x41,0x51,0x79,0x79,0x43,0x2c,0x49,0x41,0x43,0x7a,0x42,0x62,0x2c,0x45,0x41,0x41,0x55,0x71,0x43,0x2c,0x45,0x41,0x41,0x53,0x78,0x42,0x2c,0x47,0x41,0x43,0x68,0x42,0x70,0x42,0x2c,0x45,0x41,0x41,0x6f,0x42,0x4d,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x45,0x41,0x41,0x69,0x42,0x33,0x42,0x2c,0x49,0x41,0x41,0x59,0x32,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x49,0x41,0x43,0x72,0x45,0x32,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x47,0x41,0x41,0x53,0x2c,0x4b,0x41,0x45,0x31,0x42,0x32,0x42,0x2c,0x45,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x47,0x41,0x41,0x57,0x2c,0x43,0x41,0x43,0x35,0x42,0x2c,0x45,0x41,0x49,0x47,0x79,0x43,0x2c,0x45,0x41,0x41,0x71,0x42,0x43,0x2c,0x4b,0x41,0x41,0x73,0x43,0x2c,0x67,0x43,0x41,0x41,0x49,0x41,0x2c,0x4b,0x41,0x41,0x73,0x43,0x2c,0x69,0x43,0x41,0x41,0x4b,0x2c,0x47,0x41,0x43,0x39,0x47,0x44,0x2c,0x45,0x41,0x41,0x6d,0x42,0x6c,0x79,0x43,0x2c,0x51,0x41,0x41,0x51,0x34,0x78,0x43,0x2c,0x45,0x41,0x41,0x71,0x42,0x78,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4d,0x2c,0x49,0x41,0x43,0x33,0x44,0x38,0x72,0x42,0x2c,0x45,0x41,0x41,0x6d,0x42,0x74,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4f,0x67,0x6b,0x43,0x2c,0x45,0x41,0x41,0x71,0x42,0x78,0x72,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x4b,0x41,0x41,0x4d,0x38,0x72,0x42,0x2c,0x45,0x41,0x41,0x6d,0x42,0x74,0x6b,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x77,0x59,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x72,0x42,0x2c,0x73,0x43,0x43,0x72,0x46,0x76,0x46,0x2c,0x4d,0x41,0x77,0x45,0x41,0x2c,0x45,0x41,0x78,0x45,0x59,0x45,0x2c,0x4b,0x41,0x43,0x56,0x2c,0x4d,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x51,0x43,0x2c,0x49,0x41,0x41,0x61,0x7a,0x61,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x53,0x2c,0x4b,0x41,0x43,0x39,0x42,0x30,0x61,0x2c,0x45,0x41,0x41,0x51,0x43,0x2c,0x49,0x41,0x41,0x61,0x33,0x61,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x53,0x2c,0x4b,0x41,0x43,0x39,0x42,0x34,0x61,0x2c,0x45,0x41,0x41,0x51,0x43,0x2c,0x49,0x41,0x41,0x61,0x37,0x61,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x53,0x2c,0x4d,0x41,0x4f,0x72,0x43,0x2c,0x4f,0x41,0x43,0x45,0x38,0x61,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4d,0x41,0x41,0x41,0x2c,0x4f,0x41,0x41,0x4b,0x76,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x77,0x6e,0x43,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4f,0x41,0x41,0x51,0x43,0x2c,0x57,0x41,0x41,0x59,0x2c,0x71,0x42,0x41,0x41,0x73,0x42,0x39,0x72,0x43,0x2c,0x53,0x41,0x41,0x41,0x2c,0x45,0x41,0x43,0x39,0x44,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x4f,0x41,0x41,0x4b,0x35,0x51,0x2c,0x49,0x41,0x41,0x49,0x2c,0x63,0x41,0x41,0x63,0x35,0x6c,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x51,0x41,0x43,0x7a,0x43,0x75,0x32,0x42,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x4d,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x53,0x41,0x41,0x49,0x2c,0x79,0x42,0x41,0x43,0x4a,0x34,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4d,0x41,0x41,0x41,0x2c,0x4f,0x41,0x41,0x4b,0x76,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x32,0x6e,0x43,0x2c,0x61,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x53,0x68,0x73,0x43,0x2c,0x53,0x41,0x41,0x41,0x2c,0x45,0x41,0x43,0x6e,0x43,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x53,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x55,0x41,0x43,0x45,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x67,0x42,0x41,0x45,0x56,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x53,0x41,0x43,0x45,0x6e,0x7a,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x43,0x4c,0x79,0x46,0x2c,0x4d,0x41,0x41,0x4f,0x69,0x74,0x43,0x2c,0x45,0x41,0x43,0x50,0x57,0x2c,0x53,0x41,0x41,0x57,0x39,0x7a,0x43,0x2c,0x47,0x41,0x41,0x4d,0x6f,0x7a,0x43,0x2c,0x45,0x41,0x41,0x55,0x70,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x48,0x2c,0x4f,0x41,0x43,0x70,0x43,0x67,0x47,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x36,0x6e,0x43,0x2c,0x57,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x51,0x43,0x2c,0x51,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4f,0x43,0x2c,0x53,0x41,0x41,0x55,0x2c,0x63,0x41,0x47,0x33,0x44,0x52,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4d,0x41,0x41,0x41,0x2c,0x4f,0x41,0x41,0x4b,0x76,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x32,0x6e,0x43,0x2c,0x61,0x41,0x41,0x63,0x2c,0x51,0x41,0x41,0x53,0x68,0x73,0x43,0x2c,0x53,0x41,0x41,0x41,0x2c,0x45,0x41,0x43,0x6e,0x43,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x53,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x55,0x41,0x43,0x45,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x67,0x42,0x41,0x45,0x56,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x53,0x41,0x43,0x45,0x6e,0x7a,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x43,0x4c,0x79,0x46,0x2c,0x4d,0x41,0x41,0x4f,0x6d,0x74,0x43,0x2c,0x45,0x41,0x43,0x50,0x53,0x2c,0x53,0x41,0x41,0x57,0x39,0x7a,0x43,0x2c,0x47,0x41,0x41,0x4d,0x73,0x7a,0x43,0x2c,0x45,0x41,0x41,0x55,0x74,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x38,0x4e,0x2c,0x4f,0x41,0x41,0x4f,0x35,0x48,0x2c,0x4f,0x41,0x43,0x70,0x43,0x67,0x47,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x36,0x6e,0x43,0x2c,0x57,0x41,0x41,0x59,0x2c,0x4f,0x41,0x41,0x51,0x43,0x2c,0x51,0x41,0x41,0x53,0x2c,0x4d,0x41,0x41,0x4f,0x43,0x2c,0x53,0x41,0x41,0x55,0x2c,0x63,0x41,0x47,0x33,0x44,0x4c,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x55,0x41,0x43,0x45,0x37,0x54,0x2c,0x51,0x41,0x68,0x43,0x65,0x6d,0x55,0x2c,0x4b,0x41,0x43,0x6e,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x45,0x41,0x41,0x4d,0x43,0x2c,0x57,0x41,0x41,0x57,0x6a,0x42,0x2c,0x47,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x4b,0x69,0x42,0x2c,0x57,0x41,0x41,0x57,0x66,0x2c,0x47,0x41,0x41,0x55,0x2c,0x47,0x41,0x43,0x33,0x44,0x47,0x2c,0x45,0x41,0x41,0x55,0x57,0x2c,0x45,0x41,0x41,0x49,0x2c,0x45,0x41,0x2b,0x42,0x56,0x6a,0x6f,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x4c,0x38,0x6e,0x43,0x2c,0x51,0x41,0x41,0x53,0x2c,0x59,0x41,0x43,0x54,0x4b,0x2c,0x67,0x42,0x41,0x41,0x69,0x42,0x2c,0x55,0x41,0x43,0x6a,0x42,0x39,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x51,0x41,0x43,0x50,0x30,0x30,0x42,0x2c,0x53,0x41,0x41,0x55,0x2c,0x4f,0x41,0x43,0x56,0x4b,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4f,0x41,0x43,0x52,0x43,0x2c,0x61,0x41,0x41,0x63,0x2c,0x4d,0x41,0x43,0x64,0x43,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x55,0x41,0x43,0x52,0x43,0x2c,0x59,0x41,0x41,0x61,0x2c,0x51,0x41,0x43,0x62,0x35,0x73,0x43,0x2c,0x53,0x41,0x43,0x48,0x2c,0x67,0x43,0x41,0x47,0x44,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x55,0x41,0x43,0x45,0x6a,0x39,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x43,0x48,0x7a,0x4b,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x43,0x4c,0x38,0x6e,0x43,0x2c,0x51,0x41,0x41,0x53,0x2c,0x59,0x41,0x43,0x54,0x4b,0x2c,0x67,0x42,0x41,0x41,0x69,0x42,0x2c,0x55,0x41,0x43,0x6a,0x42,0x39,0x30,0x42,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x51,0x41,0x43,0x50,0x30,0x30,0x42,0x2c,0x53,0x41,0x41,0x55,0x2c,0x4f,0x41,0x43,0x56,0x4b,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x4f,0x41,0x43,0x52,0x43,0x2c,0x61,0x41,0x41,0x63,0x2c,0x4d,0x41,0x43,0x64,0x43,0x2c,0x4f,0x41,0x41,0x51,0x2c,0x57,0x41,0x43,0x52,0x33,0x73,0x43,0x2c,0x53,0x41,0x43,0x48,0x2c,0x30,0x42,0x41,0x47,0x44,0x34,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4d,0x41,0x41,0x41,0x2c,0x4f,0x41,0x41,0x4b,0x76,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4f,0x2c,0x43,0x41,0x41,0x45,0x77,0x6f,0x43,0x2c,0x55,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x51,0x54,0x2c,0x53,0x41,0x41,0x55,0x2c,0x51,0x41,0x41,0x53,0x70,0x73,0x43,0x2c,0x53,0x41,0x41,0x41,0x2c,0x45,0x41,0x43,0x6c,0x44,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x41,0x2c,0x55,0x41,0x41,0x41,0x2f,0x72,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x59,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x61,0x2c,0x4f,0x41,0x41,0x58,0x30,0x72,0x43,0x2c,0x45,0x41,0x41,0x6b,0x42,0x41,0x2c,0x45,0x41,0x41,0x53,0x2c,0x57,0x41,0x45,0x6e,0x44,0x2c,0x45,0x43,0x31,0x44,0x56,0x2c,0x45,0x41,0x5a,0x77,0x42,0x6f,0x42,0x2c,0x49,0x41,0x43,0x6c,0x42,0x41,0x2c,0x47,0x41,0x41,0x65,0x41,0x2c,0x61,0x41,0x41,0x75,0x42,0x43,0x2c,0x55,0x41,0x43,0x78,0x43,0x2c,0x36,0x42,0x41,0x41,0x71,0x42,0x6a,0x72,0x42,0x2c,0x4d,0x41,0x41,0x4b,0x6b,0x72,0x42,0x2c,0x49,0x41,0x41,0x6b,0x44,0x2c,0x49,0x41,0x41,0x6a,0x44,0x2c,0x4f,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x4d,0x2c,0x51,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x53,0x4c,0x2c,0x45,0x41,0x43,0x70,0x45,0x43,0x2c,0x45,0x41,0x41,0x4f,0x48,0x2c,0x47,0x41,0x43,0x50,0x49,0x2c,0x45,0x41,0x41,0x4f,0x4a,0x2c,0x47,0x41,0x43,0x50,0x4b,0x2c,0x45,0x41,0x41,0x4f,0x4c,0x2c,0x47,0x41,0x43,0x50,0x4d,0x2c,0x45,0x41,0x41,0x4f,0x4e,0x2c,0x47,0x41,0x43,0x50,0x4f,0x2c,0x45,0x41,0x41,0x51,0x50,0x2c,0x45,0x41,0x41,0x59,0x2c,0x47,0x41,0x45,0x78,0x42,0x2c,0x45,0x43,0x48,0x57,0x51,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x57,0x41,0x41,0x6f,0x42,0x39,0x31,0x43,0x2c,0x53,0x41,0x41,0x53,0x2b,0x31,0x43,0x2c,0x65,0x41,0x41,0x65,0x2c,0x53,0x41,0x43,0x70,0x44,0x7a,0x77,0x43,0x2c,0x51,0x41,0x43,0x48,0x69,0x76,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x43,0x79,0x42,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x57,0x41,0x41,0x67,0x42,0x2c,0x43,0x41,0x41,0x41,0x78,0x74,0x43,0x2c,0x55,0x41,0x43,0x66,0x2b,0x72,0x43,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x45,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x41,0x43,0x56,0x2c,0x45,0x41,0x41,0x47,0x2c,0x4f,0x41,0x4f,0x52,0x6f,0x43,0x22,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x22,0x3a,0x5b,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2f,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2f,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2f,0x63,0x6a,0x73,0x2f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x62,0x6f,0x6f,0x74,0x73,0x74,0x72,0x61,0x70,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x67,0x65,0x74,0x74,0x65,0x72,0x73,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x65,0x6e,0x73,0x75,0x72,0x65,0x20,0x63,0x68,0x75,0x6e,0x6b,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x67,0x65,0x74,0x20,0x6a,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x67,0x65,0x74,0x20,0x6d,0x69,0x6e,0x69,0x2d,0x63,0x73,0x73,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x73,0x68,0x6f,0x72,0x74,0x68,0x61,0x6e,0x64,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x6c,0x6f,0x61,0x64,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x6d,0x61,0x6b,0x65,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x70,0x75,0x62,0x6c,0x69,0x63,0x50,0x61,0x74,0x68,0x22,0x2c,0x22,0x2e,0x2e,0x2f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2f,0x6a,0x73,0x6f,0x6e,0x70,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x22,0x2c,0x22,0x41,0x70,0x70,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x22,0x3a,0x5b,0x22,0x2f,0x2a,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x5c,0x6e,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x5c,0x6e,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x5c,0x6e,0x20,0x2a,0x2f,0x5c,0x6e,0x2f,0x2a,0x5c,0x6e,0x20,0x4d,0x6f,0x64,0x65,0x72,0x6e,0x69,0x7a,0x72,0x20,0x33,0x2e,0x30,0x2e,0x30,0x70,0x72,0x65,0x20,0x28,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x42,0x75,0x69,0x6c,0x64,0x29,0x20,0x7c,0x20,0x4d,0x49,0x54,0x5c,0x6e,0x2a,0x2f,0x5c,0x6e,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x76,0x61,0x72,0x20,0x61,0x61,0x3d,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x5c,0x22,0x29,0x2c,0x63,0x61,0x3d,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x5c,0x22,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x5c,0x22,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x5c,0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x72,0x65,0x61,0x63,0x74,0x6a,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x64,0x6f,0x63,0x73,0x2f,0x65,0x72,0x72,0x6f,0x72,0x2d,0x64,0x65,0x63,0x6f,0x64,0x65,0x72,0x2e,0x68,0x74,0x6d,0x6c,0x3f,0x69,0x6e,0x76,0x61,0x72,0x69,0x61,0x6e,0x74,0x3d,0x5c,0x22,0x2b,0x61,0x2c,0x63,0x3d,0x31,0x3b,0x63,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x62,0x2b,0x3d,0x5c,0x22,0x26,0x61,0x72,0x67,0x73,0x5b,0x5d,0x3d,0x5c,0x22,0x2b,0x65,0x6e,0x63,0x6f,0x64,0x65,0x55,0x52,0x49,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x28,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x63,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x4d,0x69,0x6e,0x69,0x66,0x69,0x65,0x64,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x23,0x5c,0x22,0x2b,0x61,0x2b,0x5c,0x22,0x3b,0x20,0x76,0x69,0x73,0x69,0x74,0x20,0x5c,0x22,0x2b,0x62,0x2b,0x5c,0x22,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x66,0x75,0x6c,0x6c,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6f,0x72,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x6f,0x6e,0x2d,0x6d,0x69,0x6e,0x69,0x66,0x69,0x65,0x64,0x20,0x64,0x65,0x76,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x66,0x6f,0x72,0x20,0x66,0x75,0x6c,0x6c,0x20,0x65,0x72,0x72,0x6f,0x72,0x73,0x20,0x61,0x6e,0x64,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x68,0x65,0x6c,0x70,0x66,0x75,0x6c,0x20,0x77,0x61,0x72,0x6e,0x69,0x6e,0x67,0x73,0x2e,0x5c,0x22,0x7d,0x76,0x61,0x72,0x20,0x64,0x61,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x2c,0x65,0x61,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x28,0x61,0x2c,0x62,0x29,0x7b,0x68,0x61,0x28,0x61,0x2c,0x62,0x29,0x3b,0x68,0x61,0x28,0x61,0x2b,0x5c,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x2c,0x62,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x61,0x28,0x61,0x2c,0x62,0x29,0x7b,0x65,0x61,0x5b,0x61,0x5d,0x3d,0x62,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x30,0x3b,0x61,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2b,0x2b,0x29,0x64,0x61,0x2e,0x61,0x64,0x64,0x28,0x62,0x5b,0x61,0x5d,0x29,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x69,0x61,0x3d,0x21,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x2c,0x6a,0x61,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x6b,0x61,0x3d,0x2f,0x5e,0x5b,0x3a,0x41,0x2d,0x5a,0x5f,0x61,0x2d,0x7a,0x5c,0x5c,0x75,0x30,0x30,0x43,0x30,0x2d,0x5c,0x5c,0x75,0x30,0x30,0x44,0x36,0x5c,0x5c,0x75,0x30,0x30,0x44,0x38,0x2d,0x5c,0x5c,0x75,0x30,0x30,0x46,0x36,0x5c,0x5c,0x75,0x30,0x30,0x46,0x38,0x2d,0x5c,0x5c,0x75,0x30,0x32,0x46,0x46,0x5c,0x5c,0x75,0x30,0x33,0x37,0x30,0x2d,0x5c,0x5c,0x75,0x30,0x33,0x37,0x44,0x5c,0x5c,0x75,0x30,0x33,0x37,0x46,0x2d,0x5c,0x5c,0x75,0x31,0x46,0x46,0x46,0x5c,0x5c,0x75,0x32,0x30,0x30,0x43,0x2d,0x5c,0x5c,0x75,0x32,0x30,0x30,0x44,0x5c,0x5c,0x75,0x32,0x30,0x37,0x30,0x2d,0x5c,0x5c,0x75,0x32,0x31,0x38,0x46,0x5c,0x5c,0x75,0x32,0x43,0x30,0x30,0x2d,0x5c,0x5c,0x75,0x32,0x46,0x45,0x46,0x5c,0x5c,0x75,0x33,0x30,0x30,0x31,0x2d,0x5c,0x5c,0x75,0x44,0x37,0x46,0x46,0x5c,0x5c,0x75,0x46,0x39,0x30,0x30,0x2d,0x5c,0x5c,0x75,0x46,0x44,0x43,0x46,0x5c,0x5c,0x75,0x46,0x44,0x46,0x30,0x2d,0x5c,0x5c,0x75,0x46,0x46,0x46,0x44,0x5d,0x5b,0x3a,0x41,0x2d,0x5a,0x5f,0x61,0x2d,0x7a,0x5c,0x5c,0x75,0x30,0x30,0x43,0x30,0x2d,0x5c,0x5c,0x75,0x30,0x30,0x44,0x36,0x5c,0x5c,0x75,0x30,0x30,0x44,0x38,0x2d,0x5c,0x5c,0x75,0x30,0x30,0x46,0x36,0x5c,0x5c,0x75,0x30,0x30,0x46,0x38,0x2d,0x5c,0x5c,0x75,0x30,0x32,0x46,0x46,0x5c,0x5c,0x75,0x30,0x33,0x37,0x30,0x2d,0x5c,0x5c,0x75,0x30,0x33,0x37,0x44,0x5c,0x5c,0x75,0x30,0x33,0x37,0x46,0x2d,0x5c,0x5c,0x75,0x31,0x46,0x46,0x46,0x5c,0x5c,0x75,0x32,0x30,0x30,0x43,0x2d,0x5c,0x5c,0x75,0x32,0x30,0x30,0x44,0x5c,0x5c,0x75,0x32,0x30,0x37,0x30,0x2d,0x5c,0x5c,0x75,0x32,0x31,0x38,0x46,0x5c,0x5c,0x75,0x32,0x43,0x30,0x30,0x2d,0x5c,0x5c,0x75,0x32,0x46,0x45,0x46,0x5c,0x5c,0x75,0x33,0x30,0x30,0x31,0x2d,0x5c,0x5c,0x75,0x44,0x37,0x46,0x46,0x5c,0x5c,0x75,0x46,0x39,0x30,0x30,0x2d,0x5c,0x5c,0x75,0x46,0x44,0x43,0x46,0x5c,0x5c,0x75,0x46,0x44,0x46,0x30,0x2d,0x5c,0x5c,0x75,0x46,0x46,0x46,0x44,0x5c,0x5c,0x2d,0x2e,0x30,0x2d,0x39,0x5c,0x5c,0x75,0x30,0x30,0x42,0x37,0x5c,0x5c,0x75,0x30,0x33,0x30,0x30,0x2d,0x5c,0x5c,0x75,0x30,0x33,0x36,0x46,0x5c,0x5c,0x75,0x32,0x30,0x33,0x46,0x2d,0x5c,0x5c,0x75,0x32,0x30,0x34,0x30,0x5d,0x2a,0x24,0x2f,0x2c,0x6c,0x61,0x3d,0x5c,0x6e,0x7b,0x7d,0x2c,0x6d,0x61,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x61,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6a,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6d,0x61,0x2c,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x69,0x66,0x28,0x6a,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6c,0x61,0x2c,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x6b,0x61,0x2e,0x74,0x65,0x73,0x74,0x28,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x5b,0x61,0x5d,0x3d,0x21,0x30,0x3b,0x6c,0x61,0x5b,0x61,0x5d,0x3d,0x21,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x61,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x79,0x70,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x5c,0x22,0x3a,0x69,0x66,0x28,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x63,0x2e,0x61,0x63,0x63,0x65,0x70,0x74,0x73,0x42,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x73,0x3b,0x61,0x3d,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x30,0x2c,0x35,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x64,0x61,0x74,0x61,0x2d,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x26,0x26,0x5c,0x22,0x61,0x72,0x69,0x61,0x2d,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x61,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x7c,0x7c,0x70,0x61,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x69,0x66,0x28,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3d,0x3d,0x3d,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x73,0x4e,0x61,0x4e,0x28,0x62,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x73,0x4e,0x61,0x4e,0x28,0x62,0x29,0x7c,0x7c,0x31,0x3e,0x62,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x61,0x63,0x63,0x65,0x70,0x74,0x73,0x42,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x73,0x3d,0x32,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x3d,0x64,0x3b,0x74,0x68,0x69,0x73,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x3d,0x65,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x73,0x74,0x55,0x73,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3d,0x63,0x3b,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x3d,0x61,0x3b,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x73,0x61,0x6e,0x69,0x74,0x69,0x7a,0x65,0x55,0x52,0x4c,0x3d,0x66,0x3b,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x6d,0x70,0x74,0x79,0x53,0x74,0x72,0x69,0x6e,0x67,0x3d,0x67,0x7d,0x76,0x61,0x72,0x20,0x7a,0x3d,0x7b,0x7d,0x3b,0x5c,0x6e,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x20,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x20,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x20,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x20,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x20,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x30,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5b,0x5c,0x22,0x61,0x63,0x63,0x65,0x70,0x74,0x43,0x68,0x61,0x72,0x73,0x65,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x61,0x63,0x63,0x65,0x70,0x74,0x2d,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x5c,0x22,0x5d,0x2c,0x5b,0x5c,0x22,0x63,0x6c,0x61,0x73,0x73,0x4e,0x61,0x6d,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x6c,0x61,0x73,0x73,0x5c,0x22,0x5d,0x2c,0x5b,0x5c,0x22,0x68,0x74,0x6d,0x6c,0x46,0x6f,0x72,0x5c,0x22,0x2c,0x5c,0x22,0x66,0x6f,0x72,0x5c,0x22,0x5d,0x2c,0x5b,0x5c,0x22,0x68,0x74,0x74,0x70,0x45,0x71,0x75,0x69,0x76,0x5c,0x22,0x2c,0x5c,0x22,0x68,0x74,0x74,0x70,0x2d,0x65,0x71,0x75,0x69,0x76,0x5c,0x22,0x5d,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x5b,0x30,0x5d,0x3b,0x7a,0x5b,0x62,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x62,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x5b,0x31,0x5d,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x64,0x72,0x61,0x67,0x67,0x61,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x70,0x65,0x6c,0x6c,0x43,0x68,0x65,0x63,0x6b,0x5c,0x22,0x2c,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x32,0x2c,0x21,0x31,0x2c,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5c,0x6e,0x5b,0x5c,0x22,0x61,0x75,0x74,0x6f,0x52,0x65,0x76,0x65,0x72,0x73,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x65,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x52,0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x5c,0x22,0x2c,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x70,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x41,0x6c,0x70,0x68,0x61,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x32,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5c,0x22,0x61,0x6c,0x6c,0x6f,0x77,0x46,0x75,0x6c,0x6c,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x20,0x61,0x75,0x74,0x6f,0x50,0x6c,0x61,0x79,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x64,0x65,0x66,0x65,0x72,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x50,0x69,0x63,0x74,0x75,0x72,0x65,0x49,0x6e,0x50,0x69,0x63,0x74,0x75,0x72,0x65,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x52,0x65,0x6d,0x6f,0x74,0x65,0x50,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x20,0x66,0x6f,0x72,0x6d,0x4e,0x6f,0x56,0x61,0x6c,0x69,0x64,0x61,0x74,0x65,0x20,0x68,0x69,0x64,0x64,0x65,0x6e,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x6e,0x6f,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x6e,0x6f,0x56,0x61,0x6c,0x69,0x64,0x61,0x74,0x65,0x20,0x6f,0x70,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x73,0x49,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x72,0x65,0x61,0x64,0x4f,0x6e,0x6c,0x79,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x20,0x72,0x65,0x76,0x65,0x72,0x73,0x65,0x64,0x20,0x73,0x63,0x6f,0x70,0x65,0x64,0x20,0x73,0x65,0x61,0x6d,0x6c,0x65,0x73,0x73,0x20,0x69,0x74,0x65,0x6d,0x53,0x63,0x6f,0x70,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x33,0x2c,0x21,0x31,0x2c,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5c,0x6e,0x5b,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x5c,0x22,0x2c,0x5c,0x22,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x6d,0x75,0x74,0x65,0x64,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x33,0x2c,0x21,0x30,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x64,0x6f,0x77,0x6e,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x34,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x63,0x6f,0x6c,0x73,0x5c,0x22,0x2c,0x5c,0x22,0x72,0x6f,0x77,0x73,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x69,0x7a,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x70,0x61,0x6e,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x36,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x72,0x6f,0x77,0x53,0x70,0x61,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x35,0x2c,0x21,0x31,0x2c,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x76,0x61,0x72,0x20,0x72,0x61,0x3d,0x2f,0x5b,0x5c,0x5c,0x2d,0x3a,0x5d,0x28,0x5b,0x61,0x2d,0x7a,0x5d,0x29,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x61,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x5b,0x31,0x5d,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x7d,0x5c,0x6e,0x5c,0x22,0x61,0x63,0x63,0x65,0x6e,0x74,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x2d,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x20,0x61,0x72,0x61,0x62,0x69,0x63,0x2d,0x66,0x6f,0x72,0x6d,0x20,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x2d,0x73,0x68,0x69,0x66,0x74,0x20,0x63,0x61,0x70,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x20,0x63,0x6c,0x69,0x70,0x2d,0x72,0x75,0x6c,0x65,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x69,0x6e,0x74,0x65,0x72,0x70,0x6f,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x69,0x6e,0x74,0x65,0x72,0x70,0x6f,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x66,0x69,0x6c,0x74,0x65,0x72,0x73,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x64,0x6f,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x2d,0x62,0x61,0x73,0x65,0x6c,0x69,0x6e,0x65,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x2d,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x66,0x69,0x6c,0x6c,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x66,0x69,0x6c,0x6c,0x2d,0x72,0x75,0x6c,0x65,0x20,0x66,0x6c,0x6f,0x6f,0x64,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x66,0x6c,0x6f,0x6f,0x64,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x2d,0x61,0x64,0x6a,0x75,0x73,0x74,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74,0x79,0x6c,0x65,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x76,0x61,0x72,0x69,0x61,0x6e,0x74,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6e,0x61,0x6d,0x65,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x74,0x61,0x6c,0x20,0x67,0x6c,0x79,0x70,0x68,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x20,0x68,0x6f,0x72,0x69,0x7a,0x2d,0x61,0x64,0x76,0x2d,0x78,0x20,0x68,0x6f,0x72,0x69,0x7a,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x78,0x20,0x69,0x6d,0x61,0x67,0x65,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x6c,0x65,0x74,0x74,0x65,0x72,0x2d,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x20,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x65,0x6e,0x64,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x6d,0x69,0x64,0x20,0x6d,0x61,0x72,0x6b,0x65,0x72,0x2d,0x73,0x74,0x61,0x72,0x74,0x20,0x6f,0x76,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x76,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x70,0x61,0x69,0x6e,0x74,0x2d,0x6f,0x72,0x64,0x65,0x72,0x20,0x70,0x61,0x6e,0x6f,0x73,0x65,0x2d,0x31,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x2d,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x2d,0x69,0x6e,0x74,0x65,0x6e,0x74,0x20,0x73,0x68,0x61,0x70,0x65,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x73,0x74,0x6f,0x70,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x73,0x74,0x6f,0x70,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x73,0x74,0x72,0x69,0x6b,0x65,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x73,0x74,0x72,0x69,0x6b,0x65,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x64,0x61,0x73,0x68,0x61,0x72,0x72,0x61,0x79,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x64,0x61,0x73,0x68,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6c,0x69,0x6e,0x65,0x63,0x61,0x70,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6c,0x69,0x6e,0x65,0x6a,0x6f,0x69,0x6e,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6d,0x69,0x74,0x65,0x72,0x6c,0x69,0x6d,0x69,0x74,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x20,0x73,0x74,0x72,0x6f,0x6b,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x20,0x74,0x65,0x78,0x74,0x2d,0x61,0x6e,0x63,0x68,0x6f,0x72,0x20,0x74,0x65,0x78,0x74,0x2d,0x64,0x65,0x63,0x6f,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x65,0x78,0x74,0x2d,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x75,0x6e,0x64,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x75,0x6e,0x64,0x65,0x72,0x6c,0x69,0x6e,0x65,0x2d,0x74,0x68,0x69,0x63,0x6b,0x6e,0x65,0x73,0x73,0x20,0x75,0x6e,0x69,0x63,0x6f,0x64,0x65,0x2d,0x62,0x69,0x64,0x69,0x20,0x75,0x6e,0x69,0x63,0x6f,0x64,0x65,0x2d,0x72,0x61,0x6e,0x67,0x65,0x20,0x75,0x6e,0x69,0x74,0x73,0x2d,0x70,0x65,0x72,0x2d,0x65,0x6d,0x20,0x76,0x2d,0x61,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x20,0x76,0x2d,0x68,0x61,0x6e,0x67,0x69,0x6e,0x67,0x20,0x76,0x2d,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x20,0x76,0x2d,0x6d,0x61,0x74,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x20,0x76,0x65,0x63,0x74,0x6f,0x72,0x2d,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x76,0x65,0x72,0x74,0x2d,0x61,0x64,0x76,0x2d,0x79,0x20,0x76,0x65,0x72,0x74,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x78,0x20,0x76,0x65,0x72,0x74,0x2d,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2d,0x79,0x20,0x77,0x6f,0x72,0x64,0x2d,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x20,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0x2d,0x6d,0x6f,0x64,0x65,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6c,0x69,0x6e,0x6b,0x20,0x78,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x72,0x61,0x2c,0x5c,0x6e,0x73,0x61,0x29,0x3b,0x7a,0x5b,0x62,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x62,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x61,0x63,0x74,0x75,0x61,0x74,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x61,0x72,0x63,0x72,0x6f,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x72,0x6f,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x73,0x68,0x6f,0x77,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x74,0x69,0x74,0x6c,0x65,0x20,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x74,0x79,0x70,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x72,0x61,0x2c,0x73,0x61,0x29,0x3b,0x7a,0x5b,0x62,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x62,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x6c,0x69,0x6e,0x6b,0x5c,0x22,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x78,0x6d,0x6c,0x3a,0x62,0x61,0x73,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x78,0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x5c,0x22,0x2c,0x5c,0x22,0x78,0x6d,0x6c,0x3a,0x73,0x70,0x61,0x63,0x65,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x72,0x61,0x2c,0x73,0x61,0x29,0x3b,0x7a,0x5b,0x62,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x62,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x2c,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x58,0x4d,0x4c,0x2f,0x31,0x39,0x39,0x38,0x2f,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x5c,0x22,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5b,0x5c,0x22,0x74,0x61,0x62,0x49,0x6e,0x64,0x65,0x78,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x72,0x6f,0x73,0x73,0x4f,0x72,0x69,0x67,0x69,0x6e,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x7d,0x29,0x3b,0x5c,0x6e,0x7a,0x2e,0x78,0x6c,0x69,0x6e,0x6b,0x48,0x72,0x65,0x66,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x5c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x48,0x72,0x65,0x66,0x5c,0x22,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x5c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x3a,0x68,0x72,0x65,0x66,0x5c,0x22,0x2c,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x6c,0x69,0x6e,0x6b,0x5c,0x22,0x2c,0x21,0x30,0x2c,0x21,0x31,0x29,0x3b,0x5b,0x5c,0x22,0x73,0x72,0x63,0x5c,0x22,0x2c,0x5c,0x22,0x68,0x72,0x65,0x66,0x5c,0x22,0x2c,0x5c,0x22,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x66,0x6f,0x72,0x6d,0x41,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x7a,0x5b,0x61,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x76,0x28,0x61,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x2c,0x21,0x30,0x29,0x7d,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x61,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7a,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x62,0x29,0x3f,0x7a,0x5b,0x62,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3a,0x64,0x7c,0x7c,0x21,0x28,0x32,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x7c,0x7c,0x5c,0x22,0x6f,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x5b,0x30,0x5d,0x26,0x26,0x5c,0x22,0x4f,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x5b,0x30,0x5d,0x7c,0x7c,0x5c,0x22,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x5b,0x31,0x5d,0x26,0x26,0x5c,0x22,0x4e,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x5b,0x31,0x5d,0x29,0x71,0x61,0x28,0x62,0x2c,0x63,0x2c,0x65,0x2c,0x64,0x29,0x26,0x26,0x28,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x64,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x6f,0x61,0x28,0x62,0x29,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x62,0x29,0x3a,0x61,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x62,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x29,0x29,0x3a,0x65,0x2e,0x6d,0x75,0x73,0x74,0x55,0x73,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3f,0x61,0x5b,0x65,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x33,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x21,0x31,0x3a,0x5c,0x22,0x5c,0x22,0x3a,0x63,0x3a,0x28,0x62,0x3d,0x65,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x2c,0x64,0x3d,0x65,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x62,0x29,0x3a,0x28,0x65,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x3d,0x33,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x21,0x30,0x3d,0x3d,0x3d,0x63,0x3f,0x5c,0x22,0x5c,0x22,0x3a,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x2c,0x64,0x3f,0x61,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x53,0x28,0x64,0x2c,0x62,0x2c,0x63,0x29,0x3a,0x61,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x62,0x2c,0x63,0x29,0x29,0x29,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x75,0x61,0x3d,0x61,0x61,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x2c,0x76,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x77,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x6f,0x72,0x74,0x61,0x6c,0x5c,0x22,0x29,0x2c,0x79,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x7a,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x74,0x72,0x69,0x63,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x5c,0x22,0x29,0x2c,0x41,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x5c,0x22,0x29,0x2c,0x42,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x5c,0x22,0x29,0x2c,0x43,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2c,0x44,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x5f,0x72,0x65,0x66,0x5c,0x22,0x29,0x2c,0x45,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5c,0x22,0x29,0x2c,0x46,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5f,0x6c,0x69,0x73,0x74,0x5c,0x22,0x29,0x2c,0x47,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x5c,0x22,0x29,0x2c,0x48,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x61,0x7a,0x79,0x5c,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x63,0x6f,0x70,0x65,0x5c,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x64,0x65,0x62,0x75,0x67,0x5f,0x74,0x72,0x61,0x63,0x65,0x5f,0x6d,0x6f,0x64,0x65,0x5c,0x22,0x29,0x3b,0x5c,0x6e,0x76,0x61,0x72,0x20,0x49,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5c,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x65,0x67,0x61,0x63,0x79,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x61,0x63,0x68,0x65,0x5c,0x22,0x29,0x3b,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x74,0x72,0x61,0x63,0x69,0x6e,0x67,0x5f,0x6d,0x61,0x72,0x6b,0x65,0x72,0x5c,0x22,0x29,0x3b,0x76,0x61,0x72,0x20,0x4a,0x61,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x61,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x4a,0x61,0x26,0x26,0x61,0x5b,0x4a,0x61,0x5d,0x7c,0x7c,0x61,0x5b,0x5c,0x22,0x40,0x40,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x5c,0x22,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x3f,0x61,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x41,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x61,0x73,0x73,0x69,0x67,0x6e,0x2c,0x4c,0x61,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x61,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x4c,0x61,0x29,0x74,0x72,0x79,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x3b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x63,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x74,0x72,0x69,0x6d,0x28,0x29,0x2e,0x6d,0x61,0x74,0x63,0x68,0x28,0x2f,0x5c,0x5c,0x6e,0x28,0x20,0x2a,0x28,0x61,0x74,0x20,0x29,0x3f,0x29,0x2f,0x29,0x3b,0x4c,0x61,0x3d,0x62,0x26,0x26,0x62,0x5b,0x31,0x5d,0x7c,0x7c,0x5c,0x22,0x5c,0x22,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x2b,0x4c,0x61,0x2b,0x61,0x7d,0x76,0x61,0x72,0x20,0x4e,0x61,0x3d,0x21,0x31,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x61,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x21,0x61,0x7c,0x7c,0x4e,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x5c,0x22,0x3b,0x4e,0x61,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3b,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x62,0x29,0x69,0x66,0x28,0x62,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x3b,0x7d,0x2c,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x5c,0x22,0x70,0x72,0x6f,0x70,0x73,0x5c,0x22,0x2c,0x7b,0x73,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x3b,0x7d,0x7d,0x29,0x2c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x26,0x26,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x29,0x7b,0x74,0x72,0x79,0x7b,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x28,0x62,0x2c,0x5b,0x5d,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x6c,0x7d,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x28,0x61,0x2c,0x5b,0x5d,0x2c,0x62,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x74,0x72,0x79,0x7b,0x62,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x64,0x3d,0x6c,0x7d,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x74,0x72,0x79,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x3b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x64,0x3d,0x6c,0x7d,0x61,0x28,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x69,0x66,0x28,0x6c,0x26,0x26,0x64,0x26,0x26,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x2e,0x73,0x74,0x61,0x63,0x6b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x6c,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x29,0x2c,0x5c,0x6e,0x66,0x3d,0x64,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x29,0x2c,0x67,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x2c,0x68,0x3d,0x66,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x3b,0x31,0x3c,0x3d,0x67,0x26,0x26,0x30,0x3c,0x3d,0x68,0x26,0x26,0x65,0x5b,0x67,0x5d,0x21,0x3d,0x3d,0x66,0x5b,0x68,0x5d,0x3b,0x29,0x68,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x31,0x3c,0x3d,0x67,0x26,0x26,0x30,0x3c,0x3d,0x68,0x3b,0x67,0x2d,0x2d,0x2c,0x68,0x2d,0x2d,0x29,0x69,0x66,0x28,0x65,0x5b,0x67,0x5d,0x21,0x3d,0x3d,0x66,0x5b,0x68,0x5d,0x29,0x7b,0x69,0x66,0x28,0x31,0x21,0x3d,0x3d,0x67,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x64,0x6f,0x20,0x69,0x66,0x28,0x67,0x2d,0x2d,0x2c,0x68,0x2d,0x2d,0x2c,0x30,0x3e,0x68,0x7c,0x7c,0x65,0x5b,0x67,0x5d,0x21,0x3d,0x3d,0x66,0x5b,0x68,0x5d,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x2b,0x65,0x5b,0x67,0x5d,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x5c,0x22,0x20,0x61,0x74,0x20,0x6e,0x65,0x77,0x20,0x5c,0x22,0x2c,0x5c,0x22,0x20,0x61,0x74,0x20,0x5c,0x22,0x29,0x3b,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x6b,0x2e,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x28,0x5c,0x22,0x3c,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x3e,0x5c,0x22,0x29,0x26,0x26,0x28,0x6b,0x3d,0x6b,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x5c,0x22,0x3c,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x3e,0x5c,0x22,0x2c,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x3c,0x3d,0x67,0x26,0x26,0x30,0x3c,0x3d,0x68,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x4e,0x61,0x3d,0x21,0x31,0x2c,0x45,0x72,0x72,0x6f,0x72,0x2e,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x3d,0x63,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x61,0x3d,0x61,0x3f,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x3a,0x5c,0x22,0x5c,0x22,0x29,0x3f,0x4d,0x61,0x28,0x61,0x29,0x3a,0x5c,0x22,0x5c,0x22,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x61,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x61,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x61,0x28,0x5c,0x22,0x4c,0x61,0x7a,0x79,0x5c,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x61,0x28,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5c,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x61,0x28,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x5c,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x4f,0x61,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x21,0x31,0x29,0x2c,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x4f,0x61,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x2c,0x21,0x31,0x29,0x2c,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x4f,0x61,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x21,0x30,0x29,0x2c,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x5c,0x22,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x61,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x79,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x77,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x50,0x6f,0x72,0x74,0x61,0x6c,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x41,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x7a,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x45,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x46,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x5c,0x22,0x7d,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x43,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x42,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x61,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x44,0x61,0x3a,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3b,0x61,0x3d,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x3b,0x61,0x7c,0x7c,0x28,0x61,0x3d,0x62,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x6e,0x62,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x5c,0x22,0x2c,0x61,0x3d,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x3f,0x5c,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x28,0x5c,0x22,0x2b,0x61,0x2b,0x5c,0x22,0x29,0x5c,0x22,0x3a,0x5c,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x5c,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x47,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x62,0x3a,0x51,0x61,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x5c,0x22,0x4d,0x65,0x6d,0x6f,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x62,0x3d,0x61,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3b,0x61,0x3d,0x61,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x61,0x28,0x61,0x28,0x62,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x61,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x43,0x61,0x63,0x68,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x62,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x62,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x62,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x2c,0x61,0x3d,0x61,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x5c,0x22,0x5c,0x22,0x2c,0x62,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x28,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x3f,0x5c,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x28,0x5c,0x22,0x2b,0x61,0x2b,0x5c,0x22,0x29,0x5c,0x22,0x3a,0x5c,0x22,0x46,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x5c,0x22,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x50,0x6f,0x72,0x74,0x61,0x6c,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x52,0x6f,0x6f,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x54,0x65,0x78,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x51,0x61,0x28,0x62,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x3d,0x3d,0x7a,0x61,0x3f,0x5c,0x22,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x5c,0x22,0x3a,0x5c,0x22,0x4d,0x6f,0x64,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x4f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5c,0x22,0x3b,0x5c,0x6e,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x63,0x6f,0x70,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x4c,0x69,0x73,0x74,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x54,0x72,0x61,0x63,0x69,0x6e,0x67,0x4d,0x61,0x72,0x6b,0x65,0x72,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x7c,0x7c,0x62,0x2e,0x6e,0x61,0x6d,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x61,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x5c,0x22,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x61,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x61,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x29,0x26,0x26,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x26,0x26,0x28,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x61,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x54,0x61,0x28,0x61,0x29,0x3f,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x5c,0x22,0x3a,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x2c,0x63,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x67,0x65,0x74,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x6f,0x72,0x28,0x61,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x62,0x29,0x2c,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x5b,0x62,0x5d,0x3b,0x69,0x66,0x28,0x21,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x62,0x29,0x26,0x26,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x2e,0x67,0x65,0x74,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x2e,0x73,0x65,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x2e,0x67,0x65,0x74,0x2c,0x66,0x3d,0x63,0x2e,0x73,0x65,0x74,0x3b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x2c,0x62,0x2c,0x7b,0x63,0x6f,0x6e,0x66,0x69,0x67,0x75,0x72,0x61,0x62,0x6c,0x65,0x3a,0x21,0x30,0x2c,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x74,0x68,0x69,0x73,0x29,0x7d,0x2c,0x73,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x3b,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x29,0x7d,0x7d,0x29,0x3b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x2c,0x62,0x2c,0x7b,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x3a,0x63,0x2e,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x67,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x2c,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x7d,0x2c,0x73,0x74,0x6f,0x70,0x54,0x72,0x61,0x63,0x6b,0x69,0x6e,0x67,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x61,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x61,0x5b,0x62,0x5d,0x7d,0x7d,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x61,0x28,0x61,0x29,0x7b,0x61,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x7c,0x7c,0x28,0x61,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3d,0x55,0x61,0x28,0x61,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x61,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x3b,0x69,0x66,0x28,0x21,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x67,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x3b,0x61,0x26,0x26,0x28,0x64,0x3d,0x54,0x61,0x28,0x61,0x29,0x3f,0x61,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3f,0x5c,0x22,0x74,0x72,0x75,0x65,0x5c,0x22,0x3a,0x5c,0x22,0x66,0x61,0x6c,0x73,0x65,0x5c,0x22,0x3a,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0x61,0x3d,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x21,0x3d,0x3d,0x63,0x3f,0x28,0x62,0x2e,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x28,0x61,0x29,0x2c,0x21,0x30,0x29,0x3a,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x61,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x7c,0x7c,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3f,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x61,0x2e,0x62,0x6f,0x64,0x79,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x62,0x6f,0x64,0x79,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x61,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x41,0x28,0x7b,0x7d,0x2c,0x62,0x2c,0x7b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x3f,0x63,0x3a,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x61,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3f,0x5c,0x22,0x5c,0x22,0x3a,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3f,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x63,0x3d,0x53,0x61,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3f,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x63,0x29,0x3b,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x64,0x2c,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x63,0x2c,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x64,0x3a,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x62,0x3d,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x26,0x26,0x74,0x61,0x28,0x61,0x2c,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x5c,0x22,0x2c,0x62,0x2c,0x21,0x31,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x62,0x28,0x61,0x2c,0x62,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x53,0x61,0x28,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x29,0x69,0x66,0x28,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x5c,0x22,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7c,0x7c,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x21,0x3d,0x63,0x29,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x7d,0x65,0x6c,0x73,0x65,0x20,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x26,0x26,0x28,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x5c,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x5c,0x22,0x72,0x65,0x73,0x65,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x29,0x3f,0x63,0x62,0x28,0x61,0x2c,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x29,0x3a,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x5c,0x22,0x29,0x26,0x26,0x63,0x62,0x28,0x61,0x2c,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x53,0x61,0x28,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x2e,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x26,0x26,0x28,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3d,0x21,0x21,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x29,0x7c,0x7c,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x5c,0x22,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x21,0x28,0x5c,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x64,0x26,0x26,0x5c,0x22,0x72,0x65,0x73,0x65,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x64,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x62,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3b,0x63,0x7c,0x7c,0x62,0x3d,0x3d,0x3d,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7c,0x7c,0x28,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x62,0x29,0x3b,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x62,0x7d,0x63,0x3d,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x3b,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x29,0x3b,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3d,0x21,0x21,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x3b,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x3d,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x7c,0x7c,0x58,0x61,0x28,0x61,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x21,0x3d,0x3d,0x61,0x29,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x63,0x3f,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x26,0x26,0x28,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x29,0x7d,0x76,0x61,0x72,0x20,0x65,0x62,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x69,0x66,0x28,0x62,0x29,0x7b,0x62,0x3d,0x7b,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x62,0x5b,0x5c,0x22,0x24,0x5c,0x22,0x2b,0x63,0x5b,0x65,0x5d,0x5d,0x3d,0x21,0x30,0x3b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x65,0x3d,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x24,0x5c,0x22,0x2b,0x61,0x5b,0x63,0x5d,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x61,0x5b,0x63,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x61,0x5b,0x63,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x65,0x29,0x2c,0x65,0x26,0x26,0x64,0x26,0x26,0x28,0x61,0x5b,0x63,0x5d,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x63,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x53,0x61,0x28,0x63,0x29,0x3b,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x7b,0x69,0x66,0x28,0x61,0x5b,0x65,0x5d,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x61,0x5b,0x65,0x5d,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x3b,0x64,0x26,0x26,0x28,0x61,0x5b,0x65,0x5d,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x7c,0x7c,0x61,0x5b,0x65,0x5d,0x2e,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x7c,0x7c,0x28,0x62,0x3d,0x61,0x5b,0x65,0x5d,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x62,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x3d,0x21,0x30,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x39,0x31,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x41,0x28,0x7b,0x7d,0x2c,0x62,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x63,0x29,0x7b,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3b,0x62,0x3d,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x39,0x32,0x29,0x29,0x3b,0x69,0x66,0x28,0x65,0x62,0x28,0x63,0x29,0x29,0x7b,0x69,0x66,0x28,0x31,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x39,0x33,0x29,0x29,0x3b,0x63,0x3d,0x63,0x5b,0x30,0x5d,0x7d,0x62,0x3d,0x63,0x7d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x26,0x26,0x28,0x62,0x3d,0x5c,0x22,0x5c,0x22,0x29,0x3b,0x63,0x3d,0x62,0x7d,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x3a,0x53,0x61,0x28,0x63,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x53,0x61,0x28,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x64,0x3d,0x53,0x61,0x28,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x2c,0x63,0x21,0x3d,0x3d,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x28,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x63,0x29,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x64,0x26,0x26,0x28,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x62,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3b,0x62,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x62,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x76,0x67,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x5c,0x22,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x61,0x74,0x68,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x38,0x2f,0x4d,0x61,0x74,0x68,0x2f,0x4d,0x61,0x74,0x68,0x4d,0x4c,0x5c,0x22,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x6b,0x62,0x28,0x62,0x29,0x3a,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x5c,0x22,0x66,0x6f,0x72,0x65,0x69,0x67,0x6e,0x4f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x3f,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x3a,0x61,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x6d,0x62,0x2c,0x6e,0x62,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4d,0x53,0x41,0x70,0x70,0x26,0x26,0x4d,0x53,0x41,0x70,0x70,0x2e,0x65,0x78,0x65,0x63,0x55,0x6e,0x73,0x61,0x66,0x65,0x4c,0x6f,0x63,0x61,0x6c,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x4d,0x53,0x41,0x70,0x70,0x2e,0x65,0x78,0x65,0x63,0x55,0x6e,0x73,0x61,0x66,0x65,0x4c,0x6f,0x63,0x61,0x6c,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7d,0x29,0x7d,0x3a,0x61,0x7d,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x7c,0x7c,0x5c,0x22,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x5c,0x22,0x69,0x6e,0x20,0x61,0x29,0x61,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x62,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x6d,0x62,0x3d,0x6d,0x62,0x7c,0x7c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x5c,0x22,0x64,0x69,0x76,0x5c,0x22,0x29,0x3b,0x6d,0x62,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x5c,0x22,0x3c,0x73,0x76,0x67,0x3e,0x5c,0x22,0x2b,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x4f,0x66,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x29,0x2b,0x5c,0x22,0x3c,0x2f,0x73,0x76,0x67,0x3e,0x5c,0x22,0x3b,0x66,0x6f,0x72,0x28,0x62,0x3d,0x6d,0x62,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x62,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x61,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x62,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x7d,0x7d,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x63,0x26,0x26,0x63,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x61,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x26,0x26,0x33,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x61,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x62,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x70,0x62,0x3d,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x21,0x30,0x2c,0x61,0x73,0x70,0x65,0x63,0x74,0x52,0x61,0x74,0x69,0x6f,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x4f,0x75,0x74,0x73,0x65,0x74,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x53,0x6c,0x69,0x63,0x65,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x57,0x69,0x64,0x74,0x68,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x47,0x72,0x6f,0x75,0x70,0x3a,0x21,0x30,0x2c,0x62,0x6f,0x78,0x4f,0x72,0x64,0x69,0x6e,0x61,0x6c,0x47,0x72,0x6f,0x75,0x70,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x73,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x47,0x72,0x6f,0x77,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x50,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x53,0x68,0x72,0x69,0x6e,0x6b,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x4e,0x65,0x67,0x61,0x74,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x65,0x78,0x4f,0x72,0x64,0x65,0x72,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x41,0x72,0x65,0x61,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x45,0x6e,0x64,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x70,0x61,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x74,0x61,0x72,0x74,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x45,0x6e,0x64,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x70,0x61,0x6e,0x3a,0x21,0x30,0x2c,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x74,0x61,0x72,0x74,0x3a,0x21,0x30,0x2c,0x66,0x6f,0x6e,0x74,0x57,0x65,0x69,0x67,0x68,0x74,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x65,0x43,0x6c,0x61,0x6d,0x70,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3a,0x21,0x30,0x2c,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x6f,0x72,0x64,0x65,0x72,0x3a,0x21,0x30,0x2c,0x6f,0x72,0x70,0x68,0x61,0x6e,0x73,0x3a,0x21,0x30,0x2c,0x74,0x61,0x62,0x53,0x69,0x7a,0x65,0x3a,0x21,0x30,0x2c,0x77,0x69,0x64,0x6f,0x77,0x73,0x3a,0x21,0x30,0x2c,0x7a,0x49,0x6e,0x64,0x65,0x78,0x3a,0x21,0x30,0x2c,0x5c,0x6e,0x7a,0x6f,0x6f,0x6d,0x3a,0x21,0x30,0x2c,0x66,0x69,0x6c,0x6c,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x66,0x6c,0x6f,0x6f,0x64,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x6f,0x70,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x61,0x72,0x72,0x61,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x6f,0x66,0x66,0x73,0x65,0x74,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4d,0x69,0x74,0x65,0x72,0x6c,0x69,0x6d,0x69,0x74,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x3a,0x21,0x30,0x2c,0x73,0x74,0x72,0x6f,0x6b,0x65,0x57,0x69,0x64,0x74,0x68,0x3a,0x21,0x30,0x7d,0x2c,0x71,0x62,0x3d,0x5b,0x5c,0x22,0x57,0x65,0x62,0x6b,0x69,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x6d,0x73,0x5c,0x22,0x2c,0x5c,0x22,0x4d,0x6f,0x7a,0x5c,0x22,0x2c,0x5c,0x22,0x4f,0x5c,0x22,0x5d,0x3b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x70,0x62,0x29,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x71,0x62,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x7b,0x62,0x3d,0x62,0x2b,0x61,0x2e,0x63,0x68,0x61,0x72,0x41,0x74,0x28,0x30,0x29,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2b,0x61,0x2e,0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x31,0x29,0x3b,0x70,0x62,0x5b,0x62,0x5d,0x3d,0x70,0x62,0x5b,0x61,0x5d,0x7d,0x29,0x7d,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x7c,0x7c,0x5c,0x22,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x3f,0x5c,0x22,0x5c,0x22,0x3a,0x63,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x70,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x61,0x29,0x26,0x26,0x70,0x62,0x5b,0x61,0x5d,0x3f,0x28,0x5c,0x22,0x5c,0x22,0x2b,0x62,0x29,0x2e,0x74,0x72,0x69,0x6d,0x28,0x29,0x3a,0x62,0x2b,0x5c,0x22,0x70,0x78,0x5c,0x22,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x73,0x74,0x79,0x6c,0x65,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x20,0x69,0x6e,0x20,0x62,0x29,0x69,0x66,0x28,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x3d,0x3d,0x3d,0x63,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x5c,0x22,0x2d,0x2d,0x5c,0x22,0x29,0x2c,0x65,0x3d,0x72,0x62,0x28,0x63,0x2c,0x62,0x5b,0x63,0x5d,0x2c,0x64,0x29,0x3b,0x5c,0x22,0x66,0x6c,0x6f,0x61,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x5c,0x22,0x63,0x73,0x73,0x46,0x6c,0x6f,0x61,0x74,0x5c,0x22,0x29,0x3b,0x64,0x3f,0x61,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x2c,0x65,0x29,0x3a,0x61,0x5b,0x63,0x5d,0x3d,0x65,0x7d,0x7d,0x76,0x61,0x72,0x20,0x74,0x62,0x3d,0x41,0x28,0x7b,0x6d,0x65,0x6e,0x75,0x69,0x74,0x65,0x6d,0x3a,0x21,0x30,0x7d,0x2c,0x7b,0x61,0x72,0x65,0x61,0x3a,0x21,0x30,0x2c,0x62,0x61,0x73,0x65,0x3a,0x21,0x30,0x2c,0x62,0x72,0x3a,0x21,0x30,0x2c,0x63,0x6f,0x6c,0x3a,0x21,0x30,0x2c,0x65,0x6d,0x62,0x65,0x64,0x3a,0x21,0x30,0x2c,0x68,0x72,0x3a,0x21,0x30,0x2c,0x69,0x6d,0x67,0x3a,0x21,0x30,0x2c,0x69,0x6e,0x70,0x75,0x74,0x3a,0x21,0x30,0x2c,0x6b,0x65,0x79,0x67,0x65,0x6e,0x3a,0x21,0x30,0x2c,0x6c,0x69,0x6e,0x6b,0x3a,0x21,0x30,0x2c,0x6d,0x65,0x74,0x61,0x3a,0x21,0x30,0x2c,0x70,0x61,0x72,0x61,0x6d,0x3a,0x21,0x30,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x2c,0x74,0x72,0x61,0x63,0x6b,0x3a,0x21,0x30,0x2c,0x77,0x62,0x72,0x3a,0x21,0x30,0x7d,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x62,0x29,0x7b,0x69,0x66,0x28,0x74,0x62,0x5b,0x61,0x5d,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x33,0x37,0x2c,0x61,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x36,0x30,0x29,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x7c,0x7c,0x21,0x28,0x5c,0x22,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x69,0x6e,0x20,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x36,0x31,0x29,0x29,0x3b,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x73,0x74,0x79,0x6c,0x65,0x26,0x26,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x73,0x74,0x79,0x6c,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x36,0x32,0x29,0x29,0x3b,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x2d,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x5c,0x22,0x2d,0x5c,0x22,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x69,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x6e,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2d,0x78,0x6d,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6c,0x6f,0x72,0x2d,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x73,0x72,0x63,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x75,0x72,0x69,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x66,0x6f,0x72,0x6d,0x61,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x63,0x65,0x2d,0x6e,0x61,0x6d,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x67,0x6c,0x79,0x70,0x68,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x7d,0x76,0x61,0x72,0x20,0x77,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x62,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x61,0x2e,0x73,0x72,0x63,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x61,0x2e,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x55,0x73,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x55,0x73,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x61,0x7d,0x76,0x61,0x72,0x20,0x79,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x7a,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x41,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x62,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x61,0x3d,0x43,0x62,0x28,0x61,0x29,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x79,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x38,0x30,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x26,0x26,0x28,0x62,0x3d,0x44,0x62,0x28,0x62,0x29,0x2c,0x79,0x62,0x28,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x62,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x62,0x28,0x61,0x29,0x7b,0x7a,0x62,0x3f,0x41,0x62,0x3f,0x41,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x3a,0x41,0x62,0x3d,0x5b,0x61,0x5d,0x3a,0x7a,0x62,0x3d,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x62,0x28,0x29,0x7b,0x69,0x66,0x28,0x7a,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x7a,0x62,0x2c,0x62,0x3d,0x41,0x62,0x3b,0x41,0x62,0x3d,0x7a,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x42,0x62,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x62,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x30,0x3b,0x61,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2b,0x2b,0x29,0x42,0x62,0x28,0x62,0x5b,0x61,0x5d,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x62,0x28,0x29,0x7b,0x7d,0x76,0x61,0x72,0x20,0x49,0x62,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x49,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x62,0x2c,0x63,0x29,0x3b,0x49,0x62,0x3d,0x21,0x30,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x69,0x66,0x28,0x49,0x62,0x3d,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x7a,0x62,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x41,0x62,0x29,0x48,0x62,0x28,0x29,0x2c,0x46,0x62,0x28,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x62,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x44,0x62,0x28,0x63,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x3d,0x64,0x5b,0x62,0x5d,0x3b,0x61,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x55,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x55,0x70,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x28,0x64,0x3d,0x21,0x64,0x2e,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x29,0x7c,0x7c,0x28,0x61,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x64,0x3d,0x21,0x28,0x5c,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x29,0x3b,0x61,0x3d,0x21,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x61,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x63,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x5c,0x6e,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x33,0x31,0x2c,0x62,0x2c,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x76,0x61,0x72,0x20,0x4c,0x62,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x69,0x61,0x29,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x4d,0x62,0x3d,0x7b,0x7d,0x3b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x4d,0x62,0x2c,0x5c,0x22,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x5c,0x22,0x2c,0x7b,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4c,0x62,0x3d,0x21,0x30,0x7d,0x7d,0x29,0x3b,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x74,0x65,0x73,0x74,0x5c,0x22,0x2c,0x4d,0x62,0x2c,0x4d,0x62,0x29,0x3b,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x74,0x65,0x73,0x74,0x5c,0x22,0x2c,0x4d,0x62,0x2c,0x4d,0x62,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x4c,0x62,0x3d,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x33,0x29,0x3b,0x74,0x72,0x79,0x7b,0x62,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x63,0x2c,0x6c,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6d,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x6f,0x6e,0x45,0x72,0x72,0x6f,0x72,0x28,0x6d,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x4f,0x62,0x3d,0x21,0x31,0x2c,0x50,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x51,0x62,0x3d,0x21,0x31,0x2c,0x52,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x53,0x62,0x3d,0x7b,0x6f,0x6e,0x45,0x72,0x72,0x6f,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x4f,0x62,0x3d,0x21,0x30,0x3b,0x50,0x62,0x3d,0x61,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x4f,0x62,0x3d,0x21,0x31,0x3b,0x50,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x4e,0x62,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x53,0x62,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x62,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x54,0x62,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x3b,0x69,0x66,0x28,0x4f,0x62,0x29,0x7b,0x69,0x66,0x28,0x4f,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x50,0x62,0x3b,0x4f,0x62,0x3d,0x21,0x31,0x3b,0x50,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x39,0x38,0x29,0x29,0x3b,0x51,0x62,0x7c,0x7c,0x28,0x51,0x62,0x3d,0x21,0x30,0x2c,0x52,0x62,0x3d,0x6c,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x62,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2c,0x63,0x3d,0x61,0x3b,0x69,0x66,0x28,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x66,0x6f,0x72,0x28,0x3b,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x29,0x62,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x61,0x3d,0x62,0x3b,0x64,0x6f,0x20,0x62,0x3d,0x61,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x34,0x30,0x39,0x38,0x29,0x26,0x26,0x28,0x63,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x2c,0x61,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x61,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x3f,0x63,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x62,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x62,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x62,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x56,0x62,0x28,0x61,0x29,0x21,0x3d,0x3d,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x62,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x21,0x62,0x29,0x7b,0x62,0x3d,0x56,0x62,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x21,0x3d,0x3d,0x61,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x7d,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2c,0x64,0x3d,0x62,0x3b,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x29,0x7b,0x64,0x3d,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x63,0x3d,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x3d,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x66,0x6f,0x72,0x28,0x66,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x66,0x3b,0x29,0x7b,0x69,0x66,0x28,0x66,0x3d,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x62,0x28,0x65,0x29,0x2c,0x61,0x3b,0x69,0x66,0x28,0x66,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x62,0x28,0x65,0x29,0x2c,0x62,0x3b,0x66,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x7d,0x69,0x66,0x28,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x3d,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x63,0x3d,0x65,0x2c,0x64,0x3d,0x66,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x67,0x3d,0x21,0x31,0x2c,0x68,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x68,0x3b,0x29,0x7b,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x67,0x3d,0x21,0x30,0x3b,0x63,0x3d,0x65,0x3b,0x64,0x3d,0x66,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x67,0x3d,0x21,0x30,0x3b,0x64,0x3d,0x65,0x3b,0x63,0x3d,0x66,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x68,0x3d,0x68,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x69,0x66,0x28,0x21,0x67,0x29,0x7b,0x66,0x6f,0x72,0x28,0x68,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x68,0x3b,0x29,0x7b,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x5c,0x6e,0x63,0x29,0x7b,0x67,0x3d,0x21,0x30,0x3b,0x63,0x3d,0x66,0x3b,0x64,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x67,0x3d,0x21,0x30,0x3b,0x64,0x3d,0x66,0x3b,0x63,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x68,0x3d,0x68,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x69,0x66,0x28,0x21,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x39,0x29,0x29,0x3b,0x7d,0x7d,0x69,0x66,0x28,0x63,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x21,0x3d,0x3d,0x64,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x39,0x30,0x29,0x29,0x3b,0x7d,0x69,0x66,0x28,0x33,0x21,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x63,0x3f,0x61,0x3a,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x62,0x28,0x61,0x29,0x7b,0x61,0x3d,0x59,0x62,0x28,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x24,0x62,0x28,0x61,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x62,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x24,0x62,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x61,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x62,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x61,0x6e,0x63,0x65,0x6c,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x63,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x68,0x6f,0x75,0x6c,0x64,0x59,0x69,0x65,0x6c,0x64,0x2c,0x64,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x50,0x61,0x69,0x6e,0x74,0x2c,0x42,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x2c,0x65,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x2c,0x66,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x67,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x55,0x73,0x65,0x72,0x42,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x68,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x69,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4c,0x6f,0x77,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x6a,0x63,0x3d,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x64,0x6c,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x6b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x63,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6c,0x63,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x63,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x29,0x74,0x72,0x79,0x7b,0x6c,0x63,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x28,0x6b,0x63,0x2c,0x61,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x31,0x32,0x38,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x7d,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x6f,0x63,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x63,0x6c,0x7a,0x33,0x32,0x3f,0x4d,0x61,0x74,0x68,0x2e,0x63,0x6c,0x7a,0x33,0x32,0x3a,0x6e,0x63,0x2c,0x70,0x63,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6c,0x6f,0x67,0x2c,0x71,0x63,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x4c,0x4e,0x32,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x63,0x28,0x61,0x29,0x7b,0x61,0x3e,0x3e,0x3e,0x3d,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x3f,0x33,0x32,0x3a,0x33,0x31,0x2d,0x28,0x70,0x63,0x28,0x61,0x29,0x2f,0x71,0x63,0x7c,0x30,0x29,0x7c,0x30,0x7d,0x76,0x61,0x72,0x20,0x72,0x63,0x3d,0x36,0x34,0x2c,0x73,0x63,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x63,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x26,0x2d,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x37,0x37,0x37,0x32,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x33,0x35,0x35,0x34,0x34,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x37,0x31,0x30,0x38,0x38,0x36,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x26,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3b,0x5c,0x6e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x2c,0x65,0x3d,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x3d,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x67,0x3d,0x63,0x26,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x67,0x26,0x7e,0x65,0x3b,0x30,0x21,0x3d,0x3d,0x68,0x3f,0x64,0x3d,0x74,0x63,0x28,0x68,0x29,0x3a,0x28,0x66,0x26,0x3d,0x67,0x2c,0x30,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x64,0x3d,0x74,0x63,0x28,0x66,0x29,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x67,0x3d,0x63,0x26,0x7e,0x65,0x2c,0x30,0x21,0x3d,0x3d,0x67,0x3f,0x64,0x3d,0x74,0x63,0x28,0x67,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x64,0x3d,0x74,0x63,0x28,0x66,0x29,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x62,0x26,0x26,0x62,0x21,0x3d,0x3d,0x64,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x65,0x29,0x26,0x26,0x28,0x65,0x3d,0x64,0x26,0x2d,0x64,0x2c,0x66,0x3d,0x62,0x26,0x2d,0x62,0x2c,0x65,0x3e,0x3d,0x66,0x7c,0x7c,0x31,0x36,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x66,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x29,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x64,0x26,0x34,0x29,0x26,0x26,0x28,0x64,0x7c,0x3d,0x63,0x26,0x31,0x36,0x29,0x3b,0x62,0x3d,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x62,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x62,0x26,0x3d,0x64,0x3b,0x30,0x3c,0x62,0x3b,0x29,0x63,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x62,0x29,0x2c,0x65,0x3d,0x31,0x3c,0x3c,0x63,0x2c,0x64,0x7c,0x3d,0x61,0x5b,0x63,0x5d,0x2c,0x62,0x26,0x3d,0x7e,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2b,0x32,0x35,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2b,0x35,0x45,0x33,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x37,0x37,0x37,0x32,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x33,0x35,0x35,0x34,0x34,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x37,0x31,0x30,0x38,0x38,0x36,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x64,0x3d,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x65,0x3d,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x2c,0x66,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x30,0x3c,0x66,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x66,0x29,0x2c,0x68,0x3d,0x31,0x3c,0x3c,0x67,0x2c,0x6b,0x3d,0x65,0x5b,0x67,0x5d,0x3b,0x69,0x66,0x28,0x2d,0x31,0x3d,0x3d,0x3d,0x6b,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x68,0x26,0x63,0x29,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x68,0x26,0x64,0x29,0x29,0x65,0x5b,0x67,0x5d,0x3d,0x76,0x63,0x28,0x68,0x2c,0x62,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6b,0x3c,0x3d,0x62,0x26,0x26,0x28,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x68,0x29,0x3b,0x66,0x26,0x3d,0x7e,0x68,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x63,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x26,0x2d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x35,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x3a,0x61,0x26,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3f,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x3a,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x63,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x72,0x63,0x3b,0x72,0x63,0x3c,0x3c,0x3d,0x31,0x3b,0x30,0x3d,0x3d,0x3d,0x28,0x72,0x63,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x29,0x26,0x26,0x28,0x72,0x63,0x3d,0x36,0x34,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x63,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x5b,0x5d,0x2c,0x63,0x3d,0x30,0x3b,0x33,0x31,0x3e,0x63,0x3b,0x63,0x2b,0x2b,0x29,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x3b,0x61,0x3d,0x61,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3b,0x62,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x62,0x29,0x3b,0x61,0x5b,0x62,0x5d,0x3d,0x63,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x26,0x7e,0x62,0x3b,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x62,0x3b,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x62,0x3b,0x61,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x62,0x3b,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x62,0x3b,0x62,0x3d,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3b,0x30,0x3c,0x63,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x63,0x29,0x2c,0x66,0x3d,0x31,0x3c,0x3c,0x65,0x3b,0x62,0x5b,0x65,0x5d,0x3d,0x30,0x3b,0x64,0x5b,0x65,0x5d,0x3d,0x2d,0x31,0x3b,0x61,0x5b,0x65,0x5d,0x3d,0x2d,0x31,0x3b,0x63,0x26,0x3d,0x7e,0x66,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3b,0x63,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x63,0x29,0x2c,0x65,0x3d,0x31,0x3c,0x3c,0x64,0x3b,0x65,0x26,0x62,0x7c,0x61,0x5b,0x64,0x5d,0x26,0x62,0x26,0x26,0x28,0x61,0x5b,0x64,0x5d,0x7c,0x3d,0x62,0x29,0x3b,0x63,0x26,0x3d,0x7e,0x65,0x7d,0x7d,0x76,0x61,0x72,0x20,0x43,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x63,0x28,0x61,0x29,0x7b,0x61,0x26,0x3d,0x2d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3c,0x61,0x3f,0x34,0x3c,0x61,0x3f,0x30,0x21,0x3d,0x3d,0x28,0x61,0x26,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x29,0x3f,0x31,0x36,0x3a,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x34,0x3a,0x31,0x7d,0x76,0x61,0x72,0x20,0x45,0x63,0x2c,0x46,0x63,0x2c,0x47,0x63,0x2c,0x48,0x63,0x2c,0x49,0x63,0x2c,0x4a,0x63,0x3d,0x21,0x31,0x2c,0x4b,0x63,0x3d,0x5b,0x5d,0x2c,0x4c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4d,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4e,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4f,0x63,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x50,0x63,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x51,0x63,0x3d,0x5b,0x5d,0x2c,0x52,0x63,0x3d,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x20,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x20,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x20,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x20,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x20,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x20,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x20,0x64,0x72,0x6f,0x70,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x20,0x63,0x6f,0x70,0x79,0x20,0x63,0x75,0x74,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x20,0x72,0x65,0x73,0x65,0x74,0x20,0x73,0x75,0x62,0x6d,0x69,0x74,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x63,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x4c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3a,0x4d,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x4e,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x4f,0x63,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x62,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6c,0x6f,0x73,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x50,0x63,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x62,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x61,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x7b,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3a,0x62,0x2c,0x64,0x6f,0x6d,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x3a,0x63,0x2c,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x3a,0x64,0x2c,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3a,0x66,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x3a,0x5b,0x65,0x5d,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x62,0x3d,0x43,0x62,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x46,0x63,0x28,0x62,0x29,0x29,0x2c,0x61,0x3b,0x61,0x2e,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x64,0x3b,0x62,0x3d,0x61,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x2d,0x31,0x3d,0x3d,0x3d,0x62,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x65,0x29,0x26,0x26,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4c,0x63,0x3d,0x54,0x63,0x28,0x4c,0x63,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x63,0x3d,0x54,0x63,0x28,0x4d,0x63,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4e,0x63,0x3d,0x54,0x63,0x28,0x4e,0x63,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x76,0x61,0x72,0x20,0x66,0x3d,0x65,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x3b,0x4f,0x63,0x2e,0x73,0x65,0x74,0x28,0x66,0x2c,0x54,0x63,0x28,0x4f,0x63,0x2e,0x67,0x65,0x74,0x28,0x66,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x3d,0x65,0x2e,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x2c,0x50,0x63,0x2e,0x73,0x65,0x74,0x28,0x66,0x2c,0x54,0x63,0x28,0x50,0x63,0x2e,0x67,0x65,0x74,0x28,0x66,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x29,0x2c,0x21,0x30,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x63,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x57,0x63,0x28,0x61,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x56,0x62,0x28,0x62,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x69,0x66,0x28,0x62,0x3d,0x63,0x2e,0x74,0x61,0x67,0x2c,0x31,0x33,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x69,0x66,0x28,0x62,0x3d,0x57,0x62,0x28,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x62,0x3b,0x49,0x63,0x28,0x61,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x47,0x63,0x28,0x63,0x29,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x33,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x3f,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x63,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x3b,0x30,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x59,0x63,0x28,0x61,0x2e,0x64,0x6f,0x6d,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x2c,0x61,0x2e,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x2c,0x62,0x5b,0x30,0x5d,0x2c,0x61,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x63,0x3d,0x61,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x6e,0x65,0x77,0x20,0x63,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x28,0x63,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x29,0x3b,0x77,0x62,0x3d,0x64,0x3b,0x63,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x64,0x29,0x3b,0x77,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x43,0x62,0x28,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x46,0x63,0x28,0x62,0x29,0x2c,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x63,0x2c,0x21,0x31,0x3b,0x62,0x2e,0x73,0x68,0x69,0x66,0x74,0x28,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x58,0x63,0x28,0x61,0x29,0x26,0x26,0x63,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x63,0x28,0x29,0x7b,0x4a,0x63,0x3d,0x21,0x31,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4c,0x63,0x26,0x26,0x58,0x63,0x28,0x4c,0x63,0x29,0x26,0x26,0x28,0x4c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4d,0x63,0x26,0x26,0x58,0x63,0x28,0x4d,0x63,0x29,0x26,0x26,0x28,0x4d,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4e,0x63,0x26,0x26,0x58,0x63,0x28,0x4e,0x63,0x29,0x26,0x26,0x28,0x4e,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x4f,0x63,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x5a,0x63,0x29,0x3b,0x50,0x63,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x5a,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x64,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4a,0x63,0x7c,0x7c,0x28,0x4a,0x63,0x3d,0x21,0x30,0x2c,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x63,0x61,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x2c,0x24,0x63,0x29,0x29,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x64,0x28,0x61,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x28,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x64,0x28,0x62,0x2c,0x61,0x29,0x7d,0x69,0x66,0x28,0x30,0x3c,0x4b,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x7b,0x61,0x64,0x28,0x4b,0x63,0x5b,0x30,0x5d,0x2c,0x61,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x31,0x3b,0x63,0x3c,0x4b,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x4b,0x63,0x5b,0x63,0x5d,0x3b,0x64,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x64,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4c,0x63,0x26,0x26,0x61,0x64,0x28,0x4c,0x63,0x2c,0x61,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4d,0x63,0x26,0x26,0x61,0x64,0x28,0x4d,0x63,0x2c,0x61,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4e,0x63,0x26,0x26,0x61,0x64,0x28,0x4e,0x63,0x2c,0x61,0x29,0x3b,0x4f,0x63,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x62,0x29,0x3b,0x50,0x63,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x62,0x29,0x3b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x51,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x64,0x3d,0x51,0x63,0x5b,0x63,0x5d,0x2c,0x64,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x64,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x51,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x63,0x3d,0x51,0x63,0x5b,0x30,0x5d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x29,0x3b,0x29,0x56,0x63,0x28,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x26,0x26,0x51,0x63,0x2e,0x73,0x68,0x69,0x66,0x74,0x28,0x29,0x7d,0x76,0x61,0x72,0x20,0x63,0x64,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x64,0x64,0x3d,0x21,0x30,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x43,0x2c,0x66,0x3d,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x43,0x3d,0x31,0x2c,0x66,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x65,0x2c,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x43,0x2c,0x66,0x3d,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x72,0x79,0x7b,0x43,0x3d,0x34,0x2c,0x66,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x65,0x2c,0x63,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x64,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x59,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x29,0x68,0x64,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x69,0x64,0x2c,0x63,0x29,0x2c,0x53,0x63,0x28,0x61,0x2c,0x64,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x55,0x63,0x28,0x65,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x29,0x64,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x53,0x63,0x28,0x61,0x2c,0x64,0x29,0x2c,0x62,0x26,0x34,0x26,0x26,0x2d,0x31,0x3c,0x52,0x63,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x61,0x29,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x43,0x62,0x28,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x45,0x63,0x28,0x66,0x29,0x3b,0x66,0x3d,0x59,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x68,0x64,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x69,0x64,0x2c,0x63,0x29,0x3b,0x69,0x66,0x28,0x66,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x65,0x3d,0x66,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x64,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x68,0x64,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x69,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x78,0x62,0x28,0x64,0x29,0x3b,0x61,0x3d,0x57,0x63,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x69,0x66,0x28,0x62,0x3d,0x56,0x62,0x28,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x63,0x3d,0x62,0x2e,0x74,0x61,0x67,0x2c,0x31,0x33,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x61,0x3d,0x57,0x62,0x28,0x62,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x3f,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x62,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x69,0x64,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x64,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6c,0x6f,0x73,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x70,0x79,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x6f,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x61,0x73,0x74,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x61,0x75,0x73,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6c,0x61,0x79,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x72,0x61,0x74,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x72,0x65,0x73,0x65,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x72,0x65,0x73,0x69,0x7a,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x65,0x6b,0x65,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x66,0x74,0x65,0x72,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x75,0x6c,0x6c,0x73,0x63,0x72,0x65,0x65,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x68,0x61,0x73,0x68,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x70,0x73,0x74,0x61,0x74,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x78,0x69,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x5c,0x6e,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x5c,0x22,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x63,0x28,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x66,0x63,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x67,0x63,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x34,0x3b,0x63,0x61,0x73,0x65,0x20,0x68,0x63,0x3a,0x63,0x61,0x73,0x65,0x20,0x69,0x63,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x3b,0x63,0x61,0x73,0x65,0x20,0x6a,0x63,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x7d,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x36,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6d,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x64,0x28,0x29,0x7b,0x69,0x66,0x28,0x6d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x64,0x3b,0x76,0x61,0x72,0x20,0x61,0x2c,0x62,0x3d,0x6c,0x64,0x2c,0x63,0x3d,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x64,0x2c,0x65,0x3d,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x69,0x6e,0x20,0x6b,0x64,0x3f,0x6b,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x6b,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x66,0x3d,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x30,0x3b,0x61,0x3c,0x63,0x26,0x26,0x62,0x5b,0x61,0x5d,0x3d,0x3d,0x3d,0x65,0x5b,0x61,0x5d,0x3b,0x61,0x2b,0x2b,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x63,0x2d,0x61,0x3b,0x66,0x6f,0x72,0x28,0x64,0x3d,0x31,0x3b,0x64,0x3c,0x3d,0x67,0x26,0x26,0x62,0x5b,0x63,0x2d,0x64,0x5d,0x3d,0x3d,0x3d,0x65,0x5b,0x66,0x2d,0x64,0x5d,0x3b,0x64,0x2b,0x2b,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x64,0x3d,0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x61,0x2c,0x31,0x3c,0x64,0x3f,0x31,0x2d,0x64,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x64,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3b,0x5c,0x22,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x28,0x61,0x3d,0x61,0x2e,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x2c,0x30,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x31,0x33,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x3d,0x31,0x33,0x29,0x29,0x3a,0x61,0x3d,0x62,0x3b,0x31,0x30,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x3d,0x31,0x33,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x32,0x3c,0x3d,0x61,0x7c,0x7c,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x3f,0x61,0x3a,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x64,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x64,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x64,0x28,0x61,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x28,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,0x49,0x6e,0x73,0x74,0x3d,0x65,0x3b,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x64,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3d,0x66,0x3b,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x67,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x20,0x69,0x6e,0x20,0x61,0x29,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x26,0x26,0x28,0x62,0x3d,0x61,0x5b,0x63,0x5d,0x2c,0x74,0x68,0x69,0x73,0x5b,0x63,0x5d,0x3d,0x62,0x3f,0x62,0x28,0x66,0x29,0x3a,0x66,0x5b,0x63,0x5d,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3f,0x66,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3a,0x21,0x31,0x3d,0x3d,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x29,0x3f,0x70,0x64,0x3a,0x71,0x64,0x3b,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x3d,0x71,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x7d,0x41,0x28,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2c,0x7b,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x61,0x26,0x26,0x28,0x61,0x2e,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3f,0x61,0x2e,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x29,0x3a,0x5c,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x5c,0x6e,0x28,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x3d,0x21,0x31,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3d,0x70,0x64,0x29,0x7d,0x2c,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x61,0x26,0x26,0x28,0x61,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x3f,0x61,0x2e,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3a,0x5c,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x42,0x75,0x62,0x62,0x6c,0x65,0x26,0x26,0x28,0x61,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x42,0x75,0x62,0x62,0x6c,0x65,0x3d,0x21,0x30,0x29,0x2c,0x74,0x68,0x69,0x73,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x3d,0x70,0x64,0x29,0x7d,0x2c,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x69,0x73,0x50,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x6e,0x74,0x3a,0x70,0x64,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x73,0x64,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x50,0x68,0x61,0x73,0x65,0x3a,0x30,0x2c,0x62,0x75,0x62,0x62,0x6c,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x3a,0x30,0x2c,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x7c,0x7c,0x44,0x61,0x74,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x7d,0x2c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x3a,0x30,0x2c,0x69,0x73,0x54,0x72,0x75,0x73,0x74,0x65,0x64,0x3a,0x30,0x7d,0x2c,0x74,0x64,0x3d,0x72,0x64,0x28,0x73,0x64,0x29,0x2c,0x75,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x73,0x64,0x2c,0x7b,0x76,0x69,0x65,0x77,0x3a,0x30,0x2c,0x64,0x65,0x74,0x61,0x69,0x6c,0x3a,0x30,0x7d,0x29,0x2c,0x76,0x64,0x3d,0x72,0x64,0x28,0x75,0x64,0x29,0x2c,0x77,0x64,0x2c,0x78,0x64,0x2c,0x79,0x64,0x2c,0x41,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x75,0x64,0x2c,0x7b,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x3a,0x30,0x2c,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x3a,0x30,0x2c,0x63,0x6c,0x69,0x65,0x6e,0x74,0x58,0x3a,0x30,0x2c,0x63,0x6c,0x69,0x65,0x6e,0x74,0x59,0x3a,0x30,0x2c,0x70,0x61,0x67,0x65,0x58,0x3a,0x30,0x2c,0x70,0x61,0x67,0x65,0x59,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x7a,0x64,0x2c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x30,0x2c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x73,0x3a,0x30,0x2c,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3f,0x61,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x61,0x2e,0x73,0x72,0x63,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3f,0x61,0x2e,0x74,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x61,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x61,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7d,0x2c,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x5c,0x22,0x69,0x6e,0x5c,0x6e,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x3b,0x61,0x21,0x3d,0x3d,0x79,0x64,0x26,0x26,0x28,0x79,0x64,0x26,0x26,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x28,0x77,0x64,0x3d,0x61,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x2d,0x79,0x64,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x2c,0x78,0x64,0x3d,0x61,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x2d,0x79,0x64,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x29,0x3a,0x78,0x64,0x3d,0x77,0x64,0x3d,0x30,0x2c,0x79,0x64,0x3d,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x77,0x64,0x7d,0x2c,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x3a,0x78,0x64,0x7d,0x7d,0x29,0x2c,0x42,0x64,0x3d,0x72,0x64,0x28,0x41,0x64,0x29,0x2c,0x43,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x41,0x64,0x2c,0x7b,0x64,0x61,0x74,0x61,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x3a,0x30,0x7d,0x29,0x2c,0x44,0x64,0x3d,0x72,0x64,0x28,0x43,0x64,0x29,0x2c,0x45,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x75,0x64,0x2c,0x7b,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x30,0x7d,0x29,0x2c,0x46,0x64,0x3d,0x72,0x64,0x28,0x45,0x64,0x29,0x2c,0x47,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x73,0x64,0x2c,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x4e,0x61,0x6d,0x65,0x3a,0x30,0x2c,0x65,0x6c,0x61,0x70,0x73,0x65,0x64,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x70,0x73,0x65,0x75,0x64,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x30,0x7d,0x29,0x2c,0x48,0x64,0x3d,0x72,0x64,0x28,0x47,0x64,0x29,0x2c,0x49,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x73,0x64,0x2c,0x7b,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x7d,0x7d,0x29,0x2c,0x4a,0x64,0x3d,0x72,0x64,0x28,0x49,0x64,0x29,0x2c,0x4b,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x73,0x64,0x2c,0x7b,0x64,0x61,0x74,0x61,0x3a,0x30,0x7d,0x29,0x2c,0x4c,0x64,0x3d,0x72,0x64,0x28,0x4b,0x64,0x29,0x2c,0x4d,0x64,0x3d,0x7b,0x45,0x73,0x63,0x3a,0x5c,0x22,0x45,0x73,0x63,0x61,0x70,0x65,0x5c,0x22,0x2c,0x5c,0x6e,0x53,0x70,0x61,0x63,0x65,0x62,0x61,0x72,0x3a,0x5c,0x22,0x20,0x5c,0x22,0x2c,0x4c,0x65,0x66,0x74,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x4c,0x65,0x66,0x74,0x5c,0x22,0x2c,0x55,0x70,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x55,0x70,0x5c,0x22,0x2c,0x52,0x69,0x67,0x68,0x74,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x52,0x69,0x67,0x68,0x74,0x5c,0x22,0x2c,0x44,0x6f,0x77,0x6e,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x44,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x44,0x65,0x6c,0x3a,0x5c,0x22,0x44,0x65,0x6c,0x65,0x74,0x65,0x5c,0x22,0x2c,0x57,0x69,0x6e,0x3a,0x5c,0x22,0x4f,0x53,0x5c,0x22,0x2c,0x4d,0x65,0x6e,0x75,0x3a,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x5c,0x22,0x2c,0x41,0x70,0x70,0x73,0x3a,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x5c,0x22,0x2c,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x3a,0x5c,0x22,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x6f,0x63,0x6b,0x5c,0x22,0x2c,0x4d,0x6f,0x7a,0x50,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x4b,0x65,0x79,0x3a,0x5c,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x5c,0x22,0x7d,0x2c,0x4e,0x64,0x3d,0x7b,0x38,0x3a,0x5c,0x22,0x42,0x61,0x63,0x6b,0x73,0x70,0x61,0x63,0x65,0x5c,0x22,0x2c,0x39,0x3a,0x5c,0x22,0x54,0x61,0x62,0x5c,0x22,0x2c,0x31,0x32,0x3a,0x5c,0x22,0x43,0x6c,0x65,0x61,0x72,0x5c,0x22,0x2c,0x31,0x33,0x3a,0x5c,0x22,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x2c,0x31,0x36,0x3a,0x5c,0x22,0x53,0x68,0x69,0x66,0x74,0x5c,0x22,0x2c,0x31,0x37,0x3a,0x5c,0x22,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x5c,0x22,0x2c,0x31,0x38,0x3a,0x5c,0x22,0x41,0x6c,0x74,0x5c,0x22,0x2c,0x31,0x39,0x3a,0x5c,0x22,0x50,0x61,0x75,0x73,0x65,0x5c,0x22,0x2c,0x32,0x30,0x3a,0x5c,0x22,0x43,0x61,0x70,0x73,0x4c,0x6f,0x63,0x6b,0x5c,0x22,0x2c,0x32,0x37,0x3a,0x5c,0x22,0x45,0x73,0x63,0x61,0x70,0x65,0x5c,0x22,0x2c,0x33,0x32,0x3a,0x5c,0x22,0x20,0x5c,0x22,0x2c,0x33,0x33,0x3a,0x5c,0x22,0x50,0x61,0x67,0x65,0x55,0x70,0x5c,0x22,0x2c,0x33,0x34,0x3a,0x5c,0x22,0x50,0x61,0x67,0x65,0x44,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x33,0x35,0x3a,0x5c,0x22,0x45,0x6e,0x64,0x5c,0x22,0x2c,0x33,0x36,0x3a,0x5c,0x22,0x48,0x6f,0x6d,0x65,0x5c,0x22,0x2c,0x33,0x37,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x4c,0x65,0x66,0x74,0x5c,0x22,0x2c,0x33,0x38,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x55,0x70,0x5c,0x22,0x2c,0x33,0x39,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x52,0x69,0x67,0x68,0x74,0x5c,0x22,0x2c,0x34,0x30,0x3a,0x5c,0x22,0x41,0x72,0x72,0x6f,0x77,0x44,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x34,0x35,0x3a,0x5c,0x22,0x49,0x6e,0x73,0x65,0x72,0x74,0x5c,0x22,0x2c,0x34,0x36,0x3a,0x5c,0x22,0x44,0x65,0x6c,0x65,0x74,0x65,0x5c,0x22,0x2c,0x31,0x31,0x32,0x3a,0x5c,0x22,0x46,0x31,0x5c,0x22,0x2c,0x31,0x31,0x33,0x3a,0x5c,0x22,0x46,0x32,0x5c,0x22,0x2c,0x31,0x31,0x34,0x3a,0x5c,0x22,0x46,0x33,0x5c,0x22,0x2c,0x31,0x31,0x35,0x3a,0x5c,0x22,0x46,0x34,0x5c,0x22,0x2c,0x31,0x31,0x36,0x3a,0x5c,0x22,0x46,0x35,0x5c,0x22,0x2c,0x31,0x31,0x37,0x3a,0x5c,0x22,0x46,0x36,0x5c,0x22,0x2c,0x31,0x31,0x38,0x3a,0x5c,0x22,0x46,0x37,0x5c,0x22,0x2c,0x5c,0x6e,0x31,0x31,0x39,0x3a,0x5c,0x22,0x46,0x38,0x5c,0x22,0x2c,0x31,0x32,0x30,0x3a,0x5c,0x22,0x46,0x39,0x5c,0x22,0x2c,0x31,0x32,0x31,0x3a,0x5c,0x22,0x46,0x31,0x30,0x5c,0x22,0x2c,0x31,0x32,0x32,0x3a,0x5c,0x22,0x46,0x31,0x31,0x5c,0x22,0x2c,0x31,0x32,0x33,0x3a,0x5c,0x22,0x46,0x31,0x32,0x5c,0x22,0x2c,0x31,0x34,0x34,0x3a,0x5c,0x22,0x4e,0x75,0x6d,0x4c,0x6f,0x63,0x6b,0x5c,0x22,0x2c,0x31,0x34,0x35,0x3a,0x5c,0x22,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x6f,0x63,0x6b,0x5c,0x22,0x2c,0x32,0x32,0x34,0x3a,0x5c,0x22,0x4d,0x65,0x74,0x61,0x5c,0x22,0x7d,0x2c,0x4f,0x64,0x3d,0x7b,0x41,0x6c,0x74,0x3a,0x5c,0x22,0x61,0x6c,0x74,0x4b,0x65,0x79,0x5c,0x22,0x2c,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x3a,0x5c,0x22,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x5c,0x22,0x2c,0x4d,0x65,0x74,0x61,0x3a,0x5c,0x22,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x5c,0x22,0x2c,0x53,0x68,0x69,0x66,0x74,0x3a,0x5c,0x22,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x5c,0x22,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x64,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3f,0x62,0x2e,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x28,0x61,0x29,0x3a,0x28,0x61,0x3d,0x4f,0x64,0x5b,0x61,0x5d,0x29,0x3f,0x21,0x21,0x62,0x5b,0x61,0x5d,0x3a,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x64,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x64,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x51,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x75,0x64,0x2c,0x7b,0x6b,0x65,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x61,0x2e,0x6b,0x65,0x79,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x4d,0x64,0x5b,0x61,0x2e,0x6b,0x65,0x79,0x5d,0x7c,0x7c,0x61,0x2e,0x6b,0x65,0x79,0x3b,0x69,0x66,0x28,0x5c,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x28,0x61,0x3d,0x6f,0x64,0x28,0x61,0x29,0x2c,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x3f,0x5c,0x22,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x61,0x29,0x29,0x3a,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x4e,0x64,0x5b,0x61,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x5d,0x7c,0x7c,0x5c,0x22,0x55,0x6e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x64,0x5c,0x22,0x3a,0x5c,0x22,0x5c,0x22,0x7d,0x2c,0x63,0x6f,0x64,0x65,0x3a,0x30,0x2c,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x72,0x65,0x70,0x65,0x61,0x74,0x3a,0x30,0x2c,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x7a,0x64,0x2c,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6f,0x64,0x28,0x61,0x29,0x3a,0x30,0x7d,0x2c,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x61,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x2c,0x77,0x68,0x69,0x63,0x68,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3d,0x3d,0x3d,0x5c,0x6e,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6f,0x64,0x28,0x61,0x29,0x3a,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3f,0x61,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x7d,0x29,0x2c,0x52,0x64,0x3d,0x72,0x64,0x28,0x51,0x64,0x29,0x2c,0x53,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x41,0x64,0x2c,0x7b,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x3a,0x30,0x2c,0x77,0x69,0x64,0x74,0x68,0x3a,0x30,0x2c,0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x30,0x2c,0x70,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x3a,0x30,0x2c,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x69,0x61,0x6c,0x50,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x3a,0x30,0x2c,0x74,0x69,0x6c,0x74,0x58,0x3a,0x30,0x2c,0x74,0x69,0x6c,0x74,0x59,0x3a,0x30,0x2c,0x74,0x77,0x69,0x73,0x74,0x3a,0x30,0x2c,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x54,0x79,0x70,0x65,0x3a,0x30,0x2c,0x69,0x73,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x3a,0x30,0x7d,0x29,0x2c,0x54,0x64,0x3d,0x72,0x64,0x28,0x53,0x64,0x29,0x2c,0x55,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x75,0x64,0x2c,0x7b,0x74,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x3a,0x30,0x2c,0x61,0x6c,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x3a,0x30,0x2c,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x7a,0x64,0x7d,0x29,0x2c,0x56,0x64,0x3d,0x72,0x64,0x28,0x55,0x64,0x29,0x2c,0x57,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x73,0x64,0x2c,0x7b,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x3a,0x30,0x2c,0x65,0x6c,0x61,0x70,0x73,0x65,0x64,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x70,0x73,0x65,0x75,0x64,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x30,0x7d,0x29,0x2c,0x58,0x64,0x3d,0x72,0x64,0x28,0x57,0x64,0x29,0x2c,0x59,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x41,0x64,0x2c,0x7b,0x64,0x65,0x6c,0x74,0x61,0x58,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x64,0x65,0x6c,0x74,0x61,0x58,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x64,0x65,0x6c,0x74,0x61,0x58,0x3a,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x58,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x2d,0x61,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x58,0x3a,0x30,0x7d,0x2c,0x5c,0x6e,0x64,0x65,0x6c,0x74,0x61,0x59,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x64,0x65,0x6c,0x74,0x61,0x59,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x64,0x65,0x6c,0x74,0x61,0x59,0x3a,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x59,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x2d,0x61,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x59,0x3a,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x2d,0x61,0x2e,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x3a,0x30,0x7d,0x2c,0x64,0x65,0x6c,0x74,0x61,0x5a,0x3a,0x30,0x2c,0x64,0x65,0x6c,0x74,0x61,0x4d,0x6f,0x64,0x65,0x3a,0x30,0x7d,0x29,0x2c,0x5a,0x64,0x3d,0x72,0x64,0x28,0x59,0x64,0x29,0x2c,0x24,0x64,0x3d,0x5b,0x39,0x2c,0x31,0x33,0x2c,0x32,0x37,0x2c,0x33,0x32,0x5d,0x2c,0x61,0x65,0x3d,0x69,0x61,0x26,0x26,0x5c,0x22,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x5c,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x62,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x61,0x26,0x26,0x5c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x5c,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x28,0x62,0x65,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x65,0x3d,0x69,0x61,0x26,0x26,0x5c,0x22,0x54,0x65,0x78,0x74,0x45,0x76,0x65,0x6e,0x74,0x5c,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x26,0x26,0x21,0x62,0x65,0x2c,0x64,0x65,0x3d,0x69,0x61,0x26,0x26,0x28,0x21,0x61,0x65,0x7c,0x7c,0x62,0x65,0x26,0x26,0x38,0x3c,0x62,0x65,0x26,0x26,0x31,0x31,0x3e,0x3d,0x62,0x65,0x29,0x2c,0x65,0x65,0x3d,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x33,0x32,0x29,0x2c,0x66,0x65,0x3d,0x21,0x31,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x2d,0x31,0x21,0x3d,0x3d,0x24,0x64,0x2e,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x28,0x62,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x32,0x39,0x21,0x3d,0x3d,0x62,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x65,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x64,0x65,0x74,0x61,0x69,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x5c,0x22,0x64,0x61,0x74,0x61,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x64,0x61,0x74,0x61,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x69,0x65,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x65,0x28,0x62,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3a,0x69,0x66,0x28,0x33,0x32,0x21,0x3d,0x3d,0x62,0x2e,0x77,0x68,0x69,0x63,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x65,0x3d,0x21,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x65,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x62,0x2e,0x64,0x61,0x74,0x61,0x2c,0x61,0x3d,0x3d,0x3d,0x65,0x65,0x26,0x26,0x66,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x69,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x21,0x61,0x65,0x26,0x26,0x67,0x65,0x28,0x61,0x2c,0x62,0x29,0x3f,0x28,0x61,0x3d,0x6e,0x64,0x28,0x29,0x2c,0x6d,0x64,0x3d,0x6c,0x64,0x3d,0x6b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x65,0x3d,0x21,0x31,0x2c,0x61,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x61,0x73,0x74,0x65,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3a,0x69,0x66,0x28,0x21,0x28,0x62,0x2e,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x7c,0x7c,0x62,0x2e,0x61,0x6c,0x74,0x4b,0x65,0x79,0x7c,0x7c,0x62,0x2e,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x29,0x7c,0x7c,0x62,0x2e,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x26,0x26,0x62,0x2e,0x61,0x6c,0x74,0x4b,0x65,0x79,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x63,0x68,0x61,0x72,0x26,0x26,0x31,0x3c,0x62,0x2e,0x63,0x68,0x61,0x72,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x61,0x72,0x3b,0x69,0x66,0x28,0x62,0x2e,0x77,0x68,0x69,0x63,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x28,0x62,0x2e,0x77,0x68,0x69,0x63,0x68,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x26,0x26,0x5c,0x22,0x6b,0x6f,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x2e,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x2e,0x64,0x61,0x74,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x6c,0x65,0x3d,0x7b,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x21,0x30,0x2c,0x64,0x61,0x74,0x65,0x3a,0x21,0x30,0x2c,0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,0x3a,0x21,0x30,0x2c,0x5c,0x22,0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,0x2d,0x6c,0x6f,0x63,0x61,0x6c,0x5c,0x22,0x3a,0x21,0x30,0x2c,0x65,0x6d,0x61,0x69,0x6c,0x3a,0x21,0x30,0x2c,0x6d,0x6f,0x6e,0x74,0x68,0x3a,0x21,0x30,0x2c,0x6e,0x75,0x6d,0x62,0x65,0x72,0x3a,0x21,0x30,0x2c,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3a,0x21,0x30,0x2c,0x72,0x61,0x6e,0x67,0x65,0x3a,0x21,0x30,0x2c,0x73,0x65,0x61,0x72,0x63,0x68,0x3a,0x21,0x30,0x2c,0x74,0x65,0x6c,0x3a,0x21,0x30,0x2c,0x74,0x65,0x78,0x74,0x3a,0x21,0x30,0x2c,0x74,0x69,0x6d,0x65,0x3a,0x21,0x30,0x2c,0x75,0x72,0x6c,0x3a,0x21,0x30,0x2c,0x77,0x65,0x65,0x6b,0x3a,0x21,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x26,0x26,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x3f,0x21,0x21,0x6c,0x65,0x5b,0x61,0x2e,0x74,0x79,0x70,0x65,0x5d,0x3a,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x3f,0x21,0x30,0x3a,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x65,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x45,0x62,0x28,0x64,0x29,0x3b,0x62,0x3d,0x6f,0x65,0x28,0x62,0x2c,0x5c,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x29,0x3b,0x30,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x63,0x3d,0x6e,0x65,0x77,0x20,0x74,0x64,0x28,0x5c,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x64,0x29,0x2c,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x63,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x62,0x7d,0x29,0x29,0x7d,0x76,0x61,0x72,0x20,0x70,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x28,0x61,0x29,0x7b,0x73,0x65,0x28,0x61,0x2c,0x30,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x65,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x75,0x65,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x57,0x61,0x28,0x62,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x76,0x61,0x72,0x20,0x77,0x65,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x69,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x78,0x65,0x3b,0x69,0x66,0x28,0x69,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x79,0x65,0x3d,0x5c,0x22,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x69,0x66,0x28,0x21,0x79,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x7a,0x65,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x5c,0x22,0x64,0x69,0x76,0x5c,0x22,0x29,0x3b,0x7a,0x65,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x5c,0x22,0x29,0x3b,0x79,0x65,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x7a,0x65,0x2e,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x7d,0x78,0x65,0x3d,0x79,0x65,0x7d,0x65,0x6c,0x73,0x65,0x20,0x78,0x65,0x3d,0x21,0x31,0x3b,0x77,0x65,0x3d,0x78,0x65,0x26,0x26,0x28,0x21,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x7c,0x7c,0x39,0x3c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x65,0x28,0x29,0x7b,0x70,0x65,0x26,0x26,0x28,0x70,0x65,0x2e,0x64,0x65,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x5c,0x22,0x6f,0x6e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x42,0x65,0x29,0x2c,0x71,0x65,0x3d,0x70,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x65,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x74,0x65,0x28,0x71,0x65,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x5b,0x5d,0x3b,0x6e,0x65,0x28,0x62,0x2c,0x71,0x65,0x2c,0x61,0x2c,0x78,0x62,0x28,0x61,0x29,0x29,0x3b,0x4a,0x62,0x28,0x72,0x65,0x2c,0x62,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x65,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x28,0x41,0x65,0x28,0x29,0x2c,0x70,0x65,0x3d,0x62,0x2c,0x71,0x65,0x3d,0x63,0x2c,0x70,0x65,0x2e,0x61,0x74,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x28,0x5c,0x22,0x6f,0x6e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x42,0x65,0x29,0x29,0x3a,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x41,0x65,0x28,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x65,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x65,0x28,0x71,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x65,0x28,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x65,0x28,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x61,0x7c,0x7c,0x31,0x2f,0x61,0x3d,0x3d,0x3d,0x31,0x2f,0x62,0x29,0x7c,0x7c,0x61,0x21,0x3d,0x3d,0x61,0x26,0x26,0x62,0x21,0x3d,0x3d,0x62,0x7d,0x76,0x61,0x72,0x20,0x48,0x65,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x69,0x73,0x3f,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x69,0x73,0x3a,0x47,0x65,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x48,0x65,0x28,0x61,0x2c,0x62,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x61,0x29,0x2c,0x64,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x62,0x29,0x3b,0x69,0x66,0x28,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x21,0x3d,0x3d,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x64,0x3d,0x30,0x3b,0x64,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x64,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x5b,0x64,0x5d,0x3b,0x69,0x66,0x28,0x21,0x6a,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x62,0x2c,0x65,0x29,0x7c,0x7c,0x21,0x48,0x65,0x28,0x61,0x5b,0x65,0x5d,0x2c,0x62,0x5b,0x65,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x65,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x61,0x26,0x26,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x61,0x3d,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4a,0x65,0x28,0x61,0x29,0x3b,0x61,0x3d,0x30,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3b,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x64,0x3d,0x61,0x2b,0x63,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x69,0x66,0x28,0x61,0x3c,0x3d,0x62,0x26,0x26,0x64,0x3e,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x6e,0x6f,0x64,0x65,0x3a,0x63,0x2c,0x6f,0x66,0x66,0x73,0x65,0x74,0x3a,0x62,0x2d,0x61,0x7d,0x3b,0x61,0x3d,0x64,0x7d,0x61,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x63,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7b,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x63,0x3d,0x63,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x63,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x63,0x3d,0x4a,0x65,0x28,0x63,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x26,0x26,0x62,0x3f,0x61,0x3d,0x3d,0x3d,0x62,0x3f,0x21,0x30,0x3a,0x61,0x26,0x26,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x21,0x31,0x3a,0x62,0x26,0x26,0x33,0x3d,0x3d,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x4c,0x65,0x28,0x61,0x2c,0x62,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x29,0x3a,0x5c,0x22,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x5c,0x22,0x69,0x6e,0x20,0x61,0x3f,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x28,0x62,0x29,0x3a,0x61,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3f,0x21,0x21,0x28,0x61,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x26,0x31,0x36,0x29,0x3a,0x21,0x31,0x3a,0x21,0x31,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x65,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x61,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x62,0x3d,0x58,0x61,0x28,0x29,0x3b,0x62,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x6f,0x66,0x20,0x61,0x2e,0x48,0x54,0x4d,0x4c,0x49,0x46,0x72,0x61,0x6d,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3b,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x72,0x65,0x66,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x64,0x29,0x7b,0x63,0x3d,0x21,0x31,0x7d,0x69,0x66,0x28,0x63,0x29,0x61,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x62,0x3d,0x58,0x61,0x28,0x61,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x65,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x26,0x26,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x26,0x26,0x28,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x5c,0x22,0x74,0x65,0x78,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x73,0x65,0x61,0x72,0x63,0x68,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x74,0x65,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x75,0x72,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x29,0x7c,0x7c,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x74,0x72,0x75,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x65,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x4d,0x65,0x28,0x29,0x2c,0x63,0x3d,0x61,0x2e,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x45,0x6c,0x65,0x6d,0x2c,0x64,0x3d,0x61,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x52,0x61,0x6e,0x67,0x65,0x3b,0x69,0x66,0x28,0x62,0x21,0x3d,0x3d,0x63,0x26,0x26,0x63,0x26,0x26,0x63,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x4c,0x65,0x28,0x63,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x63,0x29,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x4e,0x65,0x28,0x63,0x29,0x29,0x69,0x66,0x28,0x62,0x3d,0x64,0x2e,0x73,0x74,0x61,0x72,0x74,0x2c,0x61,0x3d,0x64,0x2e,0x65,0x6e,0x64,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x3d,0x62,0x29,0x2c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x69,0x6e,0x20,0x63,0x29,0x63,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x3d,0x62,0x2c,0x63,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x61,0x2c,0x63,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x61,0x3d,0x28,0x62,0x3d,0x63,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x7c,0x7c,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x26,0x26,0x62,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2c,0x61,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x66,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x64,0x2e,0x73,0x74,0x61,0x72,0x74,0x2c,0x65,0x29,0x3b,0x64,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x2e,0x65,0x6e,0x64,0x3f,0x66,0x3a,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x69,0x6e,0x28,0x64,0x2e,0x65,0x6e,0x64,0x2c,0x65,0x29,0x3b,0x21,0x61,0x2e,0x65,0x78,0x74,0x65,0x6e,0x64,0x26,0x26,0x66,0x3e,0x64,0x26,0x26,0x28,0x65,0x3d,0x64,0x2c,0x64,0x3d,0x66,0x2c,0x66,0x3d,0x65,0x29,0x3b,0x65,0x3d,0x4b,0x65,0x28,0x63,0x2c,0x66,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x4b,0x65,0x28,0x63,0x2c,0x5c,0x6e,0x64,0x29,0x3b,0x65,0x26,0x26,0x67,0x26,0x26,0x28,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x72,0x61,0x6e,0x67,0x65,0x43,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x61,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x7c,0x7c,0x61,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x21,0x3d,0x3d,0x65,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x7c,0x7c,0x61,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x67,0x2e,0x6e,0x6f,0x64,0x65,0x7c,0x7c,0x61,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x21,0x3d,0x3d,0x67,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x26,0x26,0x28,0x62,0x3d,0x62,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x61,0x6e,0x67,0x65,0x28,0x29,0x2c,0x62,0x2e,0x73,0x65,0x74,0x53,0x74,0x61,0x72,0x74,0x28,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x65,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x6c,0x6c,0x52,0x61,0x6e,0x67,0x65,0x73,0x28,0x29,0x2c,0x66,0x3e,0x64,0x3f,0x28,0x61,0x2e,0x61,0x64,0x64,0x52,0x61,0x6e,0x67,0x65,0x28,0x62,0x29,0x2c,0x61,0x2e,0x65,0x78,0x74,0x65,0x6e,0x64,0x28,0x67,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x67,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3a,0x28,0x62,0x2e,0x73,0x65,0x74,0x45,0x6e,0x64,0x28,0x67,0x2e,0x6e,0x6f,0x64,0x65,0x2c,0x67,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x61,0x2e,0x61,0x64,0x64,0x52,0x61,0x6e,0x67,0x65,0x28,0x62,0x29,0x29,0x29,0x7d,0x62,0x3d,0x5b,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x63,0x3b,0x61,0x3d,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x29,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x61,0x2c,0x6c,0x65,0x66,0x74,0x3a,0x61,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x65,0x66,0x74,0x2c,0x74,0x6f,0x70,0x3a,0x61,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x54,0x6f,0x70,0x7d,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x2e,0x66,0x6f,0x63,0x75,0x73,0x26,0x26,0x63,0x2e,0x66,0x6f,0x63,0x75,0x73,0x28,0x29,0x3b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x61,0x3d,0x62,0x5b,0x63,0x5d,0x2c,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x65,0x66,0x74,0x3d,0x61,0x2e,0x6c,0x65,0x66,0x74,0x2c,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2e,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x54,0x6f,0x70,0x3d,0x61,0x2e,0x74,0x6f,0x70,0x7d,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x50,0x65,0x3d,0x69,0x61,0x26,0x26,0x5c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x5c,0x22,0x69,0x6e,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x31,0x31,0x3e,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x2c,0x51,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x52,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x53,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x54,0x65,0x3d,0x21,0x31,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x65,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3d,0x3d,0x3d,0x63,0x3f,0x63,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3a,0x39,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x63,0x3a,0x63,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x54,0x65,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x51,0x65,0x7c,0x7c,0x51,0x65,0x21,0x3d,0x3d,0x58,0x61,0x28,0x64,0x29,0x7c,0x7c,0x28,0x64,0x3d,0x51,0x65,0x2c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x69,0x6e,0x20,0x64,0x26,0x26,0x4e,0x65,0x28,0x64,0x29,0x3f,0x64,0x3d,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x64,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x65,0x6e,0x64,0x3a,0x64,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x7d,0x3a,0x28,0x64,0x3d,0x28,0x64,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x26,0x26,0x64,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x29,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x2c,0x64,0x3d,0x7b,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x3a,0x64,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x2c,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x3a,0x64,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x3a,0x64,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x2c,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x3a,0x64,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x7d,0x29,0x2c,0x53,0x65,0x26,0x26,0x49,0x65,0x28,0x53,0x65,0x2c,0x64,0x29,0x7c,0x7c,0x28,0x53,0x65,0x3d,0x64,0x2c,0x64,0x3d,0x6f,0x65,0x28,0x52,0x65,0x2c,0x5c,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x29,0x2c,0x30,0x3c,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x62,0x3d,0x6e,0x65,0x77,0x20,0x74,0x64,0x28,0x5c,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x62,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x64,0x7d,0x29,0x2c,0x62,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x51,0x65,0x29,0x29,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x7b,0x7d,0x3b,0x63,0x5b,0x61,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x5d,0x3d,0x62,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x63,0x5b,0x5c,0x22,0x57,0x65,0x62,0x6b,0x69,0x74,0x5c,0x22,0x2b,0x61,0x5d,0x3d,0x5c,0x22,0x77,0x65,0x62,0x6b,0x69,0x74,0x5c,0x22,0x2b,0x62,0x3b,0x63,0x5b,0x5c,0x22,0x4d,0x6f,0x7a,0x5c,0x22,0x2b,0x61,0x5d,0x3d,0x5c,0x22,0x6d,0x6f,0x7a,0x5c,0x22,0x2b,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x76,0x61,0x72,0x20,0x57,0x65,0x3d,0x7b,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x3a,0x56,0x65,0x28,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x29,0x2c,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x56,0x65,0x28,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x29,0x2c,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x3a,0x56,0x65,0x28,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x29,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x3a,0x56,0x65,0x28,0x5c,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x29,0x7d,0x2c,0x58,0x65,0x3d,0x7b,0x7d,0x2c,0x59,0x65,0x3d,0x7b,0x7d,0x3b,0x5c,0x6e,0x69,0x61,0x26,0x26,0x28,0x59,0x65,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x5c,0x22,0x64,0x69,0x76,0x5c,0x22,0x29,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2c,0x5c,0x22,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x5c,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x28,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x57,0x65,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x57,0x65,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x57,0x65,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x2e,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x5c,0x22,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x76,0x65,0x6e,0x74,0x5c,0x22,0x69,0x6e,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x7c,0x7c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x57,0x65,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x65,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x58,0x65,0x5b,0x61,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x65,0x5b,0x61,0x5d,0x3b,0x69,0x66,0x28,0x21,0x57,0x65,0x5b,0x61,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x57,0x65,0x5b,0x61,0x5d,0x2c,0x63,0x3b,0x66,0x6f,0x72,0x28,0x63,0x20,0x69,0x6e,0x20,0x62,0x29,0x69,0x66,0x28,0x62,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x29,0x26,0x26,0x63,0x20,0x69,0x6e,0x20,0x59,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x65,0x5b,0x61,0x5d,0x3d,0x62,0x5b,0x63,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x76,0x61,0x72,0x20,0x24,0x65,0x3d,0x5a,0x65,0x28,0x5c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x29,0x2c,0x61,0x66,0x3d,0x5a,0x65,0x28,0x5c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x29,0x2c,0x62,0x66,0x3d,0x5a,0x65,0x28,0x5c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x29,0x2c,0x63,0x66,0x3d,0x5a,0x65,0x28,0x5c,0x22,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x29,0x2c,0x64,0x66,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x2c,0x65,0x66,0x3d,0x5c,0x22,0x61,0x62,0x6f,0x72,0x74,0x20,0x61,0x75,0x78,0x43,0x6c,0x69,0x63,0x6b,0x20,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x63,0x61,0x6e,0x50,0x6c,0x61,0x79,0x20,0x63,0x61,0x6e,0x50,0x6c,0x61,0x79,0x54,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x65,0x6e,0x75,0x20,0x63,0x6f,0x70,0x79,0x20,0x63,0x75,0x74,0x20,0x64,0x72,0x61,0x67,0x20,0x64,0x72,0x61,0x67,0x45,0x6e,0x64,0x20,0x64,0x72,0x61,0x67,0x45,0x6e,0x74,0x65,0x72,0x20,0x64,0x72,0x61,0x67,0x45,0x78,0x69,0x74,0x20,0x64,0x72,0x61,0x67,0x4c,0x65,0x61,0x76,0x65,0x20,0x64,0x72,0x61,0x67,0x4f,0x76,0x65,0x72,0x20,0x64,0x72,0x61,0x67,0x53,0x74,0x61,0x72,0x74,0x20,0x64,0x72,0x6f,0x70,0x20,0x64,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x65,0x6d,0x70,0x74,0x69,0x65,0x64,0x20,0x65,0x6e,0x63,0x72,0x79,0x70,0x74,0x65,0x64,0x20,0x65,0x6e,0x64,0x65,0x64,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x67,0x6f,0x74,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x6b,0x65,0x79,0x44,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x50,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x55,0x70,0x20,0x6c,0x6f,0x61,0x64,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x44,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x4d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x53,0x74,0x61,0x72,0x74,0x20,0x6c,0x6f,0x73,0x74,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x6d,0x6f,0x75,0x73,0x65,0x44,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4d,0x6f,0x76,0x65,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4f,0x75,0x74,0x20,0x6d,0x6f,0x75,0x73,0x65,0x4f,0x76,0x65,0x72,0x20,0x6d,0x6f,0x75,0x73,0x65,0x55,0x70,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x70,0x61,0x75,0x73,0x65,0x20,0x70,0x6c,0x61,0x79,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x43,0x61,0x6e,0x63,0x65,0x6c,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x44,0x6f,0x77,0x6e,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4d,0x6f,0x76,0x65,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4f,0x75,0x74,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4f,0x76,0x65,0x72,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x55,0x70,0x20,0x70,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x20,0x72,0x61,0x74,0x65,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x72,0x65,0x73,0x65,0x74,0x20,0x72,0x65,0x73,0x69,0x7a,0x65,0x20,0x73,0x65,0x65,0x6b,0x65,0x64,0x20,0x73,0x65,0x65,0x6b,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x20,0x73,0x75,0x62,0x6d,0x69,0x74,0x20,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x20,0x74,0x69,0x6d,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x20,0x74,0x6f,0x75,0x63,0x68,0x43,0x61,0x6e,0x63,0x65,0x6c,0x20,0x74,0x6f,0x75,0x63,0x68,0x45,0x6e,0x64,0x20,0x74,0x6f,0x75,0x63,0x68,0x53,0x74,0x61,0x72,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x20,0x74,0x6f,0x67,0x67,0x6c,0x65,0x20,0x74,0x6f,0x75,0x63,0x68,0x4d,0x6f,0x76,0x65,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x20,0x77,0x68,0x65,0x65,0x6c,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x66,0x28,0x61,0x2c,0x62,0x29,0x7b,0x64,0x66,0x2e,0x73,0x65,0x74,0x28,0x61,0x2c,0x62,0x29,0x3b,0x66,0x61,0x28,0x62,0x2c,0x5b,0x61,0x5d,0x29,0x7d,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x67,0x66,0x3d,0x30,0x3b,0x67,0x66,0x3c,0x65,0x66,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x67,0x66,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x66,0x3d,0x65,0x66,0x5b,0x67,0x66,0x5d,0x2c,0x6a,0x66,0x3d,0x68,0x66,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2c,0x6b,0x66,0x3d,0x68,0x66,0x5b,0x30,0x5d,0x2e,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x2b,0x68,0x66,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x31,0x29,0x3b,0x66,0x66,0x28,0x6a,0x66,0x2c,0x5c,0x22,0x6f,0x6e,0x5c,0x22,0x2b,0x6b,0x66,0x29,0x7d,0x66,0x66,0x28,0x24,0x65,0x2c,0x5c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x61,0x66,0x2c,0x5c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x62,0x66,0x2c,0x5c,0x22,0x6f,0x6e,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x5c,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x2c,0x5c,0x22,0x6f,0x6e,0x44,0x6f,0x75,0x62,0x6c,0x65,0x43,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x6f,0x6e,0x46,0x6f,0x63,0x75,0x73,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x6f,0x6e,0x42,0x6c,0x75,0x72,0x5c,0x22,0x29,0x3b,0x66,0x66,0x28,0x63,0x66,0x2c,0x5c,0x22,0x6f,0x6e,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x29,0x3b,0x68,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x2c,0x5b,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x5d,0x29,0x3b,0x68,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4c,0x65,0x61,0x76,0x65,0x5c,0x22,0x2c,0x5b,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x5d,0x29,0x3b,0x68,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x2c,0x5b,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x5d,0x29,0x3b,0x5c,0x6e,0x68,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4c,0x65,0x61,0x76,0x65,0x5c,0x22,0x2c,0x5b,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x5d,0x29,0x3b,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x6c,0x69,0x63,0x6b,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x29,0x3b,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x53,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x20,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x20,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x29,0x3b,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x5b,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x2c,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x2c,0x5c,0x22,0x74,0x65,0x78,0x74,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x70,0x61,0x73,0x74,0x65,0x5c,0x22,0x5d,0x29,0x3b,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x29,0x3b,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x29,0x3b,0x5c,0x6e,0x66,0x61,0x28,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x55,0x70,0x64,0x61,0x74,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x20,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x20,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x20,0x6b,0x65,0x79,0x75,0x70,0x20,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x66,0x3d,0x5c,0x22,0x61,0x62,0x6f,0x72,0x74,0x20,0x63,0x61,0x6e,0x70,0x6c,0x61,0x79,0x20,0x63,0x61,0x6e,0x70,0x6c,0x61,0x79,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x64,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x65,0x6d,0x70,0x74,0x69,0x65,0x64,0x20,0x65,0x6e,0x63,0x72,0x79,0x70,0x74,0x65,0x64,0x20,0x65,0x6e,0x64,0x65,0x64,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x6d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x20,0x6c,0x6f,0x61,0x64,0x73,0x74,0x61,0x72,0x74,0x20,0x70,0x61,0x75,0x73,0x65,0x20,0x70,0x6c,0x61,0x79,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x70,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x20,0x72,0x61,0x74,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x72,0x65,0x73,0x69,0x7a,0x65,0x20,0x73,0x65,0x65,0x6b,0x65,0x64,0x20,0x73,0x65,0x65,0x6b,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x20,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x20,0x74,0x69,0x6d,0x65,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2c,0x6d,0x66,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x28,0x5c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x6c,0x6f,0x61,0x64,0x20,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x20,0x74,0x6f,0x67,0x67,0x6c,0x65,0x5c,0x22,0x2e,0x73,0x70,0x6c,0x69,0x74,0x28,0x5c,0x22,0x20,0x5c,0x22,0x29,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x6c,0x66,0x29,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x2d,0x65,0x76,0x65,0x6e,0x74,0x5c,0x22,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x63,0x3b,0x55,0x62,0x28,0x64,0x2c,0x62,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x61,0x29,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x62,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x26,0x34,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x5b,0x63,0x5d,0x2c,0x65,0x3d,0x64,0x2e,0x65,0x76,0x65,0x6e,0x74,0x3b,0x64,0x3d,0x64,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3b,0x61,0x3a,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x62,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x67,0x3d,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x3b,0x30,0x3c,0x3d,0x67,0x3b,0x67,0x2d,0x2d,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x64,0x5b,0x67,0x5d,0x2c,0x6b,0x3d,0x68,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2c,0x6c,0x3d,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3b,0x68,0x3d,0x68,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x6b,0x21,0x3d,0x3d,0x66,0x26,0x26,0x65,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x28,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x6e,0x66,0x28,0x65,0x2c,0x68,0x2c,0x6c,0x29,0x3b,0x66,0x3d,0x6b,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x67,0x3d,0x30,0x3b,0x67,0x3c,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x67,0x2b,0x2b,0x29,0x7b,0x68,0x3d,0x64,0x5b,0x67,0x5d,0x3b,0x6b,0x3d,0x68,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x6c,0x3d,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3b,0x68,0x3d,0x68,0x2e,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x6b,0x21,0x3d,0x3d,0x66,0x26,0x26,0x65,0x2e,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x28,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x6e,0x66,0x28,0x65,0x2c,0x68,0x2c,0x6c,0x29,0x3b,0x66,0x3d,0x6b,0x7d,0x7d,0x7d,0x69,0x66,0x28,0x51,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x61,0x3d,0x52,0x62,0x2c,0x51,0x62,0x3d,0x21,0x31,0x2c,0x52,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x3b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x5b,0x6f,0x66,0x5d,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x62,0x5b,0x6f,0x66,0x5d,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2b,0x5c,0x22,0x5f,0x5f,0x62,0x75,0x62,0x62,0x6c,0x65,0x5c,0x22,0x3b,0x63,0x2e,0x68,0x61,0x73,0x28,0x64,0x29,0x7c,0x7c,0x28,0x70,0x66,0x28,0x62,0x2c,0x61,0x2c,0x32,0x2c,0x21,0x31,0x29,0x2c,0x63,0x2e,0x61,0x64,0x64,0x28,0x64,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x3b,0x62,0x26,0x26,0x28,0x64,0x7c,0x3d,0x34,0x29,0x3b,0x70,0x66,0x28,0x63,0x2c,0x61,0x2c,0x64,0x2c,0x62,0x29,0x7d,0x76,0x61,0x72,0x20,0x72,0x66,0x3d,0x5c,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x2b,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x32,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x66,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x61,0x5b,0x72,0x66,0x5d,0x29,0x7b,0x61,0x5b,0x72,0x66,0x5d,0x3d,0x21,0x30,0x3b,0x64,0x61,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x7b,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x6d,0x66,0x2e,0x68,0x61,0x73,0x28,0x62,0x29,0x7c,0x7c,0x71,0x66,0x28,0x62,0x2c,0x21,0x31,0x2c,0x61,0x29,0x2c,0x71,0x66,0x28,0x62,0x2c,0x21,0x30,0x2c,0x61,0x29,0x29,0x7d,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x39,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x3a,0x61,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x62,0x5b,0x72,0x66,0x5d,0x7c,0x7c,0x28,0x62,0x5b,0x72,0x66,0x5d,0x3d,0x21,0x30,0x2c,0x71,0x66,0x28,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x21,0x31,0x2c,0x62,0x29,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6a,0x64,0x28,0x62,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x65,0x3d,0x65,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x65,0x3d,0x67,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x66,0x64,0x7d,0x63,0x3d,0x65,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x63,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x21,0x4c,0x62,0x7c,0x7c,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x7c,0x7c,0x28,0x65,0x3d,0x21,0x30,0x29,0x3b,0x64,0x3f,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x65,0x3f,0x61,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x62,0x2c,0x63,0x2c,0x7b,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x2c,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x65,0x7d,0x29,0x3a,0x61,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x62,0x2c,0x63,0x2c,0x21,0x30,0x29,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x65,0x3f,0x61,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x62,0x2c,0x63,0x2c,0x7b,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x65,0x7d,0x29,0x3a,0x61,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x62,0x2c,0x63,0x2c,0x21,0x31,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x64,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x64,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x31,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x32,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x61,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x64,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x67,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x38,0x3d,0x3d,0x3d,0x68,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x68,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x34,0x3d,0x3d,0x3d,0x67,0x29,0x66,0x6f,0x72,0x28,0x67,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x67,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x6b,0x29,0x69,0x66,0x28,0x6b,0x3d,0x67,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x6b,0x3d,0x3d,0x3d,0x65,0x7c,0x7c,0x38,0x3d,0x3d,0x3d,0x6b,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x6b,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x67,0x3d,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x3b,0x29,0x7b,0x67,0x3d,0x57,0x63,0x28,0x68,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6b,0x3d,0x67,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x6b,0x29,0x7b,0x64,0x3d,0x66,0x3d,0x67,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x61,0x7d,0x68,0x3d,0x68,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x7d,0x64,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x4a,0x62,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x66,0x2c,0x65,0x3d,0x78,0x62,0x28,0x63,0x29,0x2c,0x67,0x3d,0x5b,0x5d,0x3b,0x5c,0x6e,0x61,0x3a,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x64,0x66,0x2e,0x67,0x65,0x74,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x74,0x64,0x2c,0x6e,0x3d,0x61,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x70,0x72,0x65,0x73,0x73,0x5c,0x22,0x3a,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x6f,0x64,0x28,0x63,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3a,0x6b,0x3d,0x52,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3a,0x6e,0x3d,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x5c,0x22,0x3b,0x6b,0x3d,0x46,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x6e,0x3d,0x5c,0x22,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3b,0x6b,0x3d,0x46,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x66,0x74,0x65,0x72,0x62,0x6c,0x75,0x72,0x5c,0x22,0x3a,0x6b,0x3d,0x46,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x69,0x66,0x28,0x32,0x3d,0x3d,0x3d,0x63,0x2e,0x62,0x75,0x74,0x74,0x6f,0x6e,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x75,0x78,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x62,0x6c,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x5c,0x22,0x3a,0x6b,0x3d,0x42,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x78,0x69,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x6f,0x70,0x5c,0x22,0x3a,0x6b,0x3d,0x5c,0x6e,0x44,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x6b,0x3d,0x56,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x24,0x65,0x3a,0x63,0x61,0x73,0x65,0x20,0x61,0x66,0x3a,0x63,0x61,0x73,0x65,0x20,0x62,0x66,0x3a,0x6b,0x3d,0x48,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x63,0x66,0x3a,0x6b,0x3d,0x58,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3a,0x6b,0x3d,0x76,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x77,0x68,0x65,0x65,0x6c,0x5c,0x22,0x3a,0x6b,0x3d,0x5a,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x70,0x79,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x61,0x73,0x74,0x65,0x5c,0x22,0x3a,0x6b,0x3d,0x4a,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x67,0x6f,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6c,0x6f,0x73,0x74,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6d,0x6f,0x76,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x5c,0x22,0x3a,0x6b,0x3d,0x54,0x64,0x7d,0x76,0x61,0x72,0x20,0x74,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x26,0x34,0x29,0x2c,0x4a,0x3d,0x21,0x74,0x26,0x26,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2c,0x78,0x3d,0x74,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x3f,0x68,0x2b,0x5c,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x3a,0x6e,0x75,0x6c,0x6c,0x3a,0x68,0x3b,0x74,0x3d,0x5b,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x77,0x3d,0x64,0x2c,0x75,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x77,0x3b,0x29,0x7b,0x75,0x3d,0x77,0x3b,0x76,0x61,0x72,0x20,0x46,0x3d,0x75,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x35,0x3d,0x3d,0x3d,0x75,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x46,0x26,0x26,0x28,0x75,0x3d,0x46,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x26,0x26,0x28,0x46,0x3d,0x4b,0x62,0x28,0x77,0x2c,0x78,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x46,0x26,0x26,0x74,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x66,0x28,0x77,0x2c,0x46,0x2c,0x75,0x29,0x29,0x29,0x29,0x3b,0x69,0x66,0x28,0x4a,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x77,0x3d,0x77,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x30,0x3c,0x74,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x68,0x3d,0x6e,0x65,0x77,0x20,0x6b,0x28,0x68,0x2c,0x6e,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x65,0x29,0x2c,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x68,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x74,0x7d,0x29,0x29,0x7d,0x7d,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x37,0x29,0x29,0x7b,0x61,0x3a,0x7b,0x68,0x3d,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3b,0x6b,0x3d,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x6f,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3b,0x69,0x66,0x28,0x68,0x26,0x26,0x63,0x21,0x3d,0x3d,0x77,0x62,0x26,0x26,0x28,0x6e,0x3d,0x63,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x63,0x2e,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x26,0x26,0x28,0x57,0x63,0x28,0x6e,0x29,0x7c,0x7c,0x6e,0x5b,0x75,0x66,0x5d,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x69,0x66,0x28,0x6b,0x7c,0x7c,0x68,0x29,0x7b,0x68,0x3d,0x65,0x2e,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3d,0x3d,0x3d,0x65,0x3f,0x65,0x3a,0x28,0x68,0x3d,0x65,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x3f,0x68,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x68,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x69,0x66,0x28,0x6b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x3d,0x63,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x7c,0x7c,0x63,0x2e,0x74,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x6b,0x3d,0x64,0x2c,0x6e,0x3d,0x6e,0x3f,0x57,0x63,0x28,0x6e,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x6e,0x26,0x26,0x28,0x4a,0x3d,0x56,0x62,0x28,0x6e,0x29,0x2c,0x6e,0x21,0x3d,0x3d,0x4a,0x7c,0x7c,0x35,0x21,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x6e,0x2e,0x74,0x61,0x67,0x29,0x29,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x3d,0x64,0x3b,0x69,0x66,0x28,0x6b,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x74,0x3d,0x42,0x64,0x3b,0x46,0x3d,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x4c,0x65,0x61,0x76,0x65,0x5c,0x22,0x3b,0x78,0x3d,0x5c,0x22,0x6f,0x6e,0x4d,0x6f,0x75,0x73,0x65,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3b,0x77,0x3d,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x5c,0x22,0x3b,0x69,0x66,0x28,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x6f,0x76,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x29,0x74,0x3d,0x54,0x64,0x2c,0x46,0x3d,0x5c,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x4c,0x65,0x61,0x76,0x65,0x5c,0x22,0x2c,0x78,0x3d,0x5c,0x22,0x6f,0x6e,0x50,0x6f,0x69,0x6e,0x74,0x65,0x72,0x45,0x6e,0x74,0x65,0x72,0x5c,0x22,0x2c,0x77,0x3d,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x5c,0x22,0x3b,0x4a,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6b,0x3f,0x68,0x3a,0x75,0x65,0x28,0x6b,0x29,0x3b,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x6e,0x3f,0x68,0x3a,0x75,0x65,0x28,0x6e,0x29,0x3b,0x68,0x3d,0x6e,0x65,0x77,0x20,0x74,0x28,0x46,0x2c,0x77,0x2b,0x5c,0x22,0x6c,0x65,0x61,0x76,0x65,0x5c,0x22,0x2c,0x6b,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x68,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x4a,0x3b,0x68,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x75,0x3b,0x46,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x57,0x63,0x28,0x65,0x29,0x3d,0x3d,0x3d,0x64,0x26,0x26,0x28,0x74,0x3d,0x6e,0x65,0x77,0x20,0x74,0x28,0x78,0x2c,0x77,0x2b,0x5c,0x22,0x65,0x6e,0x74,0x65,0x72,0x5c,0x22,0x2c,0x6e,0x2c,0x63,0x2c,0x65,0x29,0x2c,0x74,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x3d,0x75,0x2c,0x74,0x2e,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x3d,0x4a,0x2c,0x46,0x3d,0x74,0x29,0x3b,0x4a,0x3d,0x46,0x3b,0x69,0x66,0x28,0x6b,0x26,0x26,0x6e,0x29,0x62,0x3a,0x7b,0x74,0x3d,0x6b,0x3b,0x78,0x3d,0x6e,0x3b,0x77,0x3d,0x30,0x3b,0x66,0x6f,0x72,0x28,0x75,0x3d,0x74,0x3b,0x75,0x3b,0x75,0x3d,0x76,0x66,0x28,0x75,0x29,0x29,0x77,0x2b,0x2b,0x3b,0x75,0x3d,0x30,0x3b,0x66,0x6f,0x72,0x28,0x46,0x3d,0x78,0x3b,0x46,0x3b,0x46,0x3d,0x76,0x66,0x28,0x46,0x29,0x29,0x75,0x2b,0x2b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x77,0x2d,0x75,0x3b,0x29,0x74,0x3d,0x76,0x66,0x28,0x74,0x29,0x2c,0x77,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x75,0x2d,0x77,0x3b,0x29,0x78,0x3d,0x5c,0x6e,0x76,0x66,0x28,0x78,0x29,0x2c,0x75,0x2d,0x2d,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x77,0x2d,0x2d,0x3b,0x29,0x7b,0x69,0x66,0x28,0x74,0x3d,0x3d,0x3d,0x78,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x26,0x26,0x74,0x3d,0x3d,0x3d,0x78,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x3b,0x74,0x3d,0x76,0x66,0x28,0x74,0x29,0x3b,0x78,0x3d,0x76,0x66,0x28,0x78,0x29,0x7d,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x77,0x66,0x28,0x67,0x2c,0x68,0x2c,0x6b,0x2c,0x74,0x2c,0x21,0x31,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4a,0x26,0x26,0x77,0x66,0x28,0x67,0x2c,0x4a,0x2c,0x6e,0x2c,0x74,0x2c,0x21,0x30,0x29,0x7d,0x7d,0x7d,0x61,0x3a,0x7b,0x68,0x3d,0x64,0x3f,0x75,0x65,0x28,0x64,0x29,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x6b,0x3d,0x68,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x26,0x26,0x68,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x26,0x26,0x5c,0x22,0x66,0x69,0x6c,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x68,0x2e,0x74,0x79,0x70,0x65,0x29,0x76,0x61,0x72,0x20,0x6e,0x61,0x3d,0x76,0x65,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6d,0x65,0x28,0x68,0x29,0x29,0x69,0x66,0x28,0x77,0x65,0x29,0x6e,0x61,0x3d,0x46,0x65,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x6e,0x61,0x3d,0x44,0x65,0x3b,0x76,0x61,0x72,0x20,0x78,0x61,0x3d,0x43,0x65,0x7d,0x65,0x6c,0x73,0x65,0x28,0x6b,0x3d,0x68,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x29,0x26,0x26,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x26,0x26,0x28,0x5c,0x22,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x5c,0x22,0x3d,0x3d,0x3d,0x68,0x2e,0x74,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x3d,0x3d,0x3d,0x68,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x28,0x6e,0x61,0x3d,0x45,0x65,0x29,0x3b,0x69,0x66,0x28,0x6e,0x61,0x26,0x26,0x28,0x6e,0x61,0x3d,0x6e,0x61,0x28,0x61,0x2c,0x64,0x29,0x29,0x29,0x7b,0x6e,0x65,0x28,0x67,0x2c,0x6e,0x61,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x78,0x61,0x26,0x26,0x78,0x61,0x28,0x61,0x2c,0x68,0x2c,0x64,0x29,0x3b,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x78,0x61,0x3d,0x68,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x5c,0x6e,0x78,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x64,0x26,0x26,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x68,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x63,0x62,0x28,0x68,0x2c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x2c,0x68,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x7d,0x78,0x61,0x3d,0x64,0x3f,0x75,0x65,0x28,0x64,0x29,0x3a,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x5c,0x22,0x3a,0x69,0x66,0x28,0x6d,0x65,0x28,0x78,0x61,0x29,0x7c,0x7c,0x5c,0x22,0x74,0x72,0x75,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x78,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x29,0x51,0x65,0x3d,0x78,0x61,0x2c,0x52,0x65,0x3d,0x64,0x2c,0x53,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x63,0x75,0x73,0x6f,0x75,0x74,0x5c,0x22,0x3a,0x53,0x65,0x3d,0x52,0x65,0x3d,0x51,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x54,0x65,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x6d,0x65,0x6e,0x75,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x75,0x70,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x72,0x61,0x67,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x54,0x65,0x3d,0x21,0x31,0x3b,0x55,0x65,0x28,0x67,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x3a,0x69,0x66,0x28,0x50,0x65,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6b,0x65,0x79,0x75,0x70,0x5c,0x22,0x3a,0x55,0x65,0x28,0x67,0x2c,0x63,0x2c,0x65,0x29,0x7d,0x76,0x61,0x72,0x20,0x24,0x61,0x3b,0x69,0x66,0x28,0x61,0x65,0x29,0x62,0x3a,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x3a,0x76,0x61,0x72,0x20,0x62,0x61,0x3d,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x5c,0x22,0x3a,0x62,0x61,0x3d,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x3b,0x5c,0x6e,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x75,0x70,0x64,0x61,0x74,0x65,0x5c,0x22,0x3a,0x62,0x61,0x3d,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x55,0x70,0x64,0x61,0x74,0x65,0x5c,0x22,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x7d,0x62,0x61,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x65,0x3f,0x67,0x65,0x28,0x61,0x2c,0x63,0x29,0x26,0x26,0x28,0x62,0x61,0x3d,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x29,0x3a,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x32,0x32,0x39,0x3d,0x3d,0x3d,0x63,0x2e,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x26,0x26,0x28,0x62,0x61,0x3d,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x29,0x3b,0x62,0x61,0x26,0x26,0x28,0x64,0x65,0x26,0x26,0x5c,0x22,0x6b,0x6f,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x2e,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x26,0x26,0x28,0x69,0x65,0x7c,0x7c,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x61,0x3f,0x5c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x61,0x26,0x26,0x69,0x65,0x26,0x26,0x28,0x24,0x61,0x3d,0x6e,0x64,0x28,0x29,0x29,0x3a,0x28,0x6b,0x64,0x3d,0x65,0x2c,0x6c,0x64,0x3d,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x69,0x6e,0x20,0x6b,0x64,0x3f,0x6b,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3a,0x6b,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x69,0x65,0x3d,0x21,0x30,0x29,0x29,0x2c,0x78,0x61,0x3d,0x6f,0x65,0x28,0x64,0x2c,0x62,0x61,0x29,0x2c,0x30,0x3c,0x78,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x62,0x61,0x3d,0x6e,0x65,0x77,0x20,0x4c,0x64,0x28,0x62,0x61,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x65,0x29,0x2c,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x62,0x61,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x78,0x61,0x7d,0x29,0x2c,0x24,0x61,0x3f,0x62,0x61,0x2e,0x64,0x61,0x74,0x61,0x3d,0x24,0x61,0x3a,0x28,0x24,0x61,0x3d,0x68,0x65,0x28,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x24,0x61,0x26,0x26,0x28,0x62,0x61,0x2e,0x64,0x61,0x74,0x61,0x3d,0x24,0x61,0x29,0x29,0x29,0x29,0x3b,0x69,0x66,0x28,0x24,0x61,0x3d,0x63,0x65,0x3f,0x6a,0x65,0x28,0x61,0x2c,0x63,0x29,0x3a,0x6b,0x65,0x28,0x61,0x2c,0x63,0x29,0x29,0x64,0x3d,0x6f,0x65,0x28,0x64,0x2c,0x5c,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x29,0x2c,0x5c,0x6e,0x30,0x3c,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x28,0x65,0x3d,0x6e,0x65,0x77,0x20,0x4c,0x64,0x28,0x5c,0x22,0x6f,0x6e,0x42,0x65,0x66,0x6f,0x72,0x65,0x49,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x62,0x65,0x66,0x6f,0x72,0x65,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x65,0x29,0x2c,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x65,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x64,0x7d,0x29,0x2c,0x65,0x2e,0x64,0x61,0x74,0x61,0x3d,0x24,0x61,0x29,0x7d,0x73,0x65,0x28,0x67,0x2c,0x62,0x29,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x61,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x3a,0x62,0x2c,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x3a,0x63,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2b,0x5c,0x22,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x5c,0x22,0x2c,0x64,0x3d,0x5b,0x5d,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2c,0x66,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x35,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x65,0x3d,0x66,0x2c,0x66,0x3d,0x4b,0x62,0x28,0x61,0x2c,0x63,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x26,0x26,0x64,0x2e,0x75,0x6e,0x73,0x68,0x69,0x66,0x74,0x28,0x74,0x66,0x28,0x61,0x2c,0x66,0x2c,0x65,0x29,0x29,0x2c,0x66,0x3d,0x4b,0x62,0x28,0x61,0x2c,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x26,0x26,0x64,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x66,0x28,0x61,0x2c,0x66,0x2c,0x65,0x29,0x29,0x29,0x3b,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x66,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x6f,0x20,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x61,0x26,0x26,0x35,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3f,0x61,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x2c,0x67,0x3d,0x5b,0x5d,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x63,0x21,0x3d,0x3d,0x64,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x63,0x2c,0x6b,0x3d,0x68,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6c,0x3d,0x68,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x6b,0x3d,0x3d,0x3d,0x64,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x35,0x3d,0x3d,0x3d,0x68,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x68,0x3d,0x6c,0x2c,0x65,0x3f,0x28,0x6b,0x3d,0x4b,0x62,0x28,0x63,0x2c,0x66,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x67,0x2e,0x75,0x6e,0x73,0x68,0x69,0x66,0x74,0x28,0x74,0x66,0x28,0x63,0x2c,0x6b,0x2c,0x68,0x29,0x29,0x29,0x3a,0x65,0x7c,0x7c,0x28,0x6b,0x3d,0x4b,0x62,0x28,0x63,0x2c,0x66,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x74,0x66,0x28,0x63,0x2c,0x6b,0x2c,0x68,0x29,0x29,0x29,0x29,0x3b,0x63,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x30,0x21,0x3d,0x3d,0x67,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x7b,0x65,0x76,0x65,0x6e,0x74,0x3a,0x62,0x2c,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x3a,0x67,0x7d,0x29,0x7d,0x76,0x61,0x72,0x20,0x78,0x66,0x3d,0x2f,0x5c,0x5c,0x72,0x5c,0x5c,0x6e,0x3f,0x2f,0x67,0x2c,0x79,0x66,0x3d,0x2f,0x5c,0x5c,0x75,0x30,0x30,0x30,0x30,0x7c,0x5c,0x5c,0x75,0x46,0x46,0x46,0x44,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x66,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x3f,0x61,0x3a,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x78,0x66,0x2c,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x79,0x66,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x66,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x62,0x3d,0x7a,0x66,0x28,0x62,0x29,0x3b,0x69,0x66,0x28,0x7a,0x66,0x28,0x61,0x29,0x21,0x3d,0x3d,0x62,0x26,0x26,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x35,0x29,0x29,0x3b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x66,0x28,0x29,0x7b,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x43,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x44,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x66,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6e,0x6f,0x73,0x63,0x72,0x69,0x70,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x46,0x66,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x47,0x66,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x48,0x66,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x3f,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x4a,0x66,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x71,0x75,0x65,0x75,0x65,0x4d,0x69,0x63,0x72,0x6f,0x74,0x61,0x73,0x6b,0x3f,0x71,0x75,0x65,0x75,0x65,0x4d,0x69,0x63,0x72,0x6f,0x74,0x61,0x73,0x6b,0x3a,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x48,0x66,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x66,0x2e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x61,0x29,0x2e,0x63,0x61,0x74,0x63,0x68,0x28,0x49,0x66,0x29,0x7d,0x3a,0x46,0x66,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x66,0x28,0x61,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x61,0x3b,0x7d,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x66,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2c,0x64,0x3d,0x30,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x63,0x29,0x3b,0x69,0x66,0x28,0x65,0x26,0x26,0x38,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x69,0x66,0x28,0x63,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x2c,0x5c,0x22,0x2f,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x29,0x3b,0x62,0x64,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x64,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x5c,0x22,0x24,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x5c,0x22,0x24,0x21,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x64,0x2b,0x2b,0x3b,0x63,0x3d,0x65,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x63,0x29,0x3b,0x62,0x64,0x28,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x66,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x62,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x62,0x3d,0x61,0x2e,0x64,0x61,0x74,0x61,0x3b,0x69,0x66,0x28,0x5c,0x22,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x24,0x21,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x69,0x66,0x28,0x5c,0x22,0x2f,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x66,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x30,0x3b,0x61,0x3b,0x29,0x7b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x64,0x61,0x74,0x61,0x3b,0x69,0x66,0x28,0x5c,0x22,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x7c,0x7c,0x5c,0x22,0x24,0x21,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x7c,0x7c,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x62,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x5c,0x22,0x2f,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x62,0x2b,0x2b,0x7d,0x61,0x3d,0x61,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x4e,0x66,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x32,0x29,0x2c,0x4f,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x46,0x69,0x62,0x65,0x72,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x2c,0x50,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x50,0x72,0x6f,0x70,0x73,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x2c,0x75,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x2c,0x6f,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x45,0x76,0x65,0x6e,0x74,0x73,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x2c,0x51,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x2c,0x52,0x66,0x3d,0x5c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x73,0x24,0x5c,0x22,0x2b,0x4e,0x66,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x63,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x5b,0x4f,0x66,0x5d,0x3b,0x69,0x66,0x28,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x62,0x3d,0x63,0x5b,0x75,0x66,0x5d,0x7c,0x7c,0x63,0x5b,0x4f,0x66,0x5d,0x29,0x7b,0x63,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x4d,0x66,0x28,0x61,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x69,0x66,0x28,0x63,0x3d,0x61,0x5b,0x4f,0x66,0x5d,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x3b,0x61,0x3d,0x4d,0x66,0x28,0x61,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x61,0x3d,0x63,0x3b,0x63,0x3d,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x62,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x5b,0x4f,0x66,0x5d,0x7c,0x7c,0x61,0x5b,0x75,0x66,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x61,0x7c,0x7c,0x35,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x33,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x33,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x65,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x33,0x29,0x29,0x3b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x62,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x5b,0x50,0x66,0x5d,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x53,0x66,0x3d,0x5b,0x5d,0x2c,0x54,0x66,0x3d,0x2d,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x66,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x61,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x28,0x61,0x29,0x7b,0x30,0x3e,0x54,0x66,0x7c,0x7c,0x28,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x53,0x66,0x5b,0x54,0x66,0x5d,0x2c,0x53,0x66,0x5b,0x54,0x66,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x54,0x66,0x2d,0x2d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x28,0x61,0x2c,0x62,0x29,0x7b,0x54,0x66,0x2b,0x2b,0x3b,0x53,0x66,0x5b,0x54,0x66,0x5d,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x62,0x7d,0x76,0x61,0x72,0x20,0x56,0x66,0x3d,0x7b,0x7d,0x2c,0x48,0x3d,0x55,0x66,0x28,0x56,0x66,0x29,0x2c,0x57,0x66,0x3d,0x55,0x66,0x28,0x21,0x31,0x29,0x2c,0x58,0x66,0x3d,0x56,0x66,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x66,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x3b,0x69,0x66,0x28,0x21,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x56,0x66,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x64,0x26,0x26,0x64,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x7d,0x2c,0x66,0x3b,0x66,0x6f,0x72,0x28,0x66,0x20,0x69,0x6e,0x20,0x63,0x29,0x65,0x5b,0x66,0x5d,0x3d,0x62,0x5b,0x66,0x5d,0x3b,0x64,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x61,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x62,0x2c,0x61,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x66,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x66,0x28,0x29,0x7b,0x45,0x28,0x57,0x66,0x29,0x3b,0x45,0x28,0x48,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x56,0x66,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x38,0x29,0x29,0x3b,0x47,0x28,0x48,0x2c,0x62,0x29,0x3b,0x47,0x28,0x57,0x66,0x2c,0x63,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x67,0x65,0x74,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x3b,0x64,0x3d,0x64,0x2e,0x67,0x65,0x74,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x28,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x20,0x69,0x6e,0x20,0x64,0x29,0x69,0x66,0x28,0x21,0x28,0x65,0x20,0x69,0x6e,0x20,0x62,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x30,0x38,0x2c,0x52,0x61,0x28,0x61,0x29,0x7c,0x7c,0x5c,0x22,0x55,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x65,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x41,0x28,0x7b,0x7d,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x67,0x28,0x61,0x29,0x7b,0x61,0x3d,0x28,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x26,0x26,0x61,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7c,0x7c,0x56,0x66,0x3b,0x58,0x66,0x3d,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x47,0x28,0x48,0x2c,0x61,0x29,0x3b,0x47,0x28,0x57,0x66,0x2c,0x57,0x66,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x21,0x64,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x39,0x29,0x29,0x3b,0x63,0x3f,0x28,0x61,0x3d,0x62,0x67,0x28,0x61,0x2c,0x62,0x2c,0x58,0x66,0x29,0x2c,0x64,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x61,0x2c,0x45,0x28,0x57,0x66,0x29,0x2c,0x45,0x28,0x48,0x29,0x2c,0x47,0x28,0x48,0x2c,0x61,0x29,0x29,0x3a,0x45,0x28,0x57,0x66,0x29,0x3b,0x47,0x28,0x57,0x66,0x2c,0x63,0x29,0x7d,0x76,0x61,0x72,0x20,0x65,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x67,0x3d,0x21,0x31,0x2c,0x67,0x67,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x67,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x67,0x3f,0x65,0x67,0x3d,0x5b,0x61,0x5d,0x3a,0x65,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x67,0x28,0x61,0x29,0x7b,0x66,0x67,0x3d,0x21,0x30,0x3b,0x68,0x67,0x28,0x61,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x67,0x28,0x29,0x7b,0x69,0x66,0x28,0x21,0x67,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x67,0x29,0x7b,0x67,0x67,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x61,0x3d,0x30,0x2c,0x62,0x3d,0x43,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x65,0x67,0x3b,0x66,0x6f,0x72,0x28,0x43,0x3d,0x31,0x3b,0x61,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x5b,0x61,0x5d,0x3b,0x64,0x6f,0x20,0x64,0x3d,0x64,0x28,0x21,0x30,0x29,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7d,0x65,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x67,0x3d,0x21,0x31,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x67,0x26,0x26,0x28,0x65,0x67,0x3d,0x65,0x67,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x61,0x2b,0x31,0x29,0x29,0x2c,0x61,0x63,0x28,0x66,0x63,0x2c,0x6a,0x67,0x29,0x2c,0x65,0x3b,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x62,0x2c,0x67,0x67,0x3d,0x21,0x31,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x6b,0x67,0x3d,0x5b,0x5d,0x2c,0x6c,0x67,0x3d,0x30,0x2c,0x6d,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x67,0x3d,0x30,0x2c,0x6f,0x67,0x3d,0x5b,0x5d,0x2c,0x70,0x67,0x3d,0x30,0x2c,0x71,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x67,0x3d,0x31,0x2c,0x73,0x67,0x3d,0x5c,0x22,0x5c,0x22,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x6b,0x67,0x5b,0x6c,0x67,0x2b,0x2b,0x5d,0x3d,0x6e,0x67,0x3b,0x6b,0x67,0x5b,0x6c,0x67,0x2b,0x2b,0x5d,0x3d,0x6d,0x67,0x3b,0x6d,0x67,0x3d,0x61,0x3b,0x6e,0x67,0x3d,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x72,0x67,0x3b,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x73,0x67,0x3b,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x71,0x67,0x3b,0x71,0x67,0x3d,0x61,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x72,0x67,0x3b,0x61,0x3d,0x73,0x67,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x33,0x32,0x2d,0x6f,0x63,0x28,0x64,0x29,0x2d,0x31,0x3b,0x64,0x26,0x3d,0x7e,0x28,0x31,0x3c,0x3c,0x65,0x29,0x3b,0x63,0x2b,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x33,0x32,0x2d,0x6f,0x63,0x28,0x62,0x29,0x2b,0x65,0x3b,0x69,0x66,0x28,0x33,0x30,0x3c,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x65,0x2d,0x65,0x25,0x35,0x3b,0x66,0x3d,0x28,0x64,0x26,0x28,0x31,0x3c,0x3c,0x67,0x29,0x2d,0x31,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x3b,0x64,0x3e,0x3e,0x3d,0x67,0x3b,0x65,0x2d,0x3d,0x67,0x3b,0x72,0x67,0x3d,0x31,0x3c,0x3c,0x33,0x32,0x2d,0x6f,0x63,0x28,0x62,0x29,0x2b,0x65,0x7c,0x63,0x3c,0x3c,0x65,0x7c,0x64,0x3b,0x73,0x67,0x3d,0x66,0x2b,0x61,0x7d,0x65,0x6c,0x73,0x65,0x20,0x72,0x67,0x3d,0x31,0x3c,0x3c,0x66,0x7c,0x63,0x3c,0x3c,0x65,0x7c,0x64,0x2c,0x73,0x67,0x3d,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x67,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x26,0x26,0x28,0x74,0x67,0x28,0x61,0x2c,0x31,0x29,0x2c,0x75,0x67,0x28,0x61,0x2c,0x31,0x2c,0x30,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x67,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x61,0x3d,0x3d,0x3d,0x6d,0x67,0x3b,0x29,0x6d,0x67,0x3d,0x6b,0x67,0x5b,0x2d,0x2d,0x6c,0x67,0x5d,0x2c,0x6b,0x67,0x5b,0x6c,0x67,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x67,0x3d,0x6b,0x67,0x5b,0x2d,0x2d,0x6c,0x67,0x5d,0x2c,0x6b,0x67,0x5b,0x6c,0x67,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x61,0x3d,0x3d,0x3d,0x71,0x67,0x3b,0x29,0x71,0x67,0x3d,0x6f,0x67,0x5b,0x2d,0x2d,0x70,0x67,0x5d,0x2c,0x6f,0x67,0x5b,0x70,0x67,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x67,0x3d,0x6f,0x67,0x5b,0x2d,0x2d,0x70,0x67,0x5d,0x2c,0x6f,0x67,0x5b,0x70,0x67,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x67,0x3d,0x6f,0x67,0x5b,0x2d,0x2d,0x70,0x67,0x5d,0x2c,0x6f,0x67,0x5b,0x70,0x67,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x78,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x49,0x3d,0x21,0x31,0x2c,0x7a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x42,0x67,0x28,0x35,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x29,0x3b,0x63,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x5c,0x22,0x44,0x45,0x4c,0x45,0x54,0x45,0x44,0x5c,0x22,0x3b,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x62,0x3b,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x62,0x3d,0x61,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x3f,0x28,0x61,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x63,0x5d,0x2c,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3b,0x62,0x3d,0x31,0x21,0x3d,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x63,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x21,0x3d,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x2e,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x28,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x28,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x62,0x2c,0x78,0x67,0x3d,0x61,0x2c,0x79,0x67,0x3d,0x4c,0x66,0x28,0x62,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x2c,0x21,0x30,0x29,0x3a,0x21,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x5c,0x22,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x33,0x21,0x3d,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x28,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x62,0x2c,0x78,0x67,0x3d,0x61,0x2c,0x79,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x29,0x3a,0x21,0x31,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x38,0x21,0x3d,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x28,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x71,0x67,0x3f,0x7b,0x69,0x64,0x3a,0x72,0x67,0x2c,0x6f,0x76,0x65,0x72,0x66,0x6c,0x6f,0x77,0x3a,0x73,0x67,0x7d,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x62,0x2c,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x63,0x2c,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3a,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x7d,0x2c,0x63,0x3d,0x42,0x67,0x28,0x31,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x30,0x29,0x2c,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x62,0x2c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x63,0x2c,0x78,0x67,0x3d,0x61,0x2c,0x79,0x67,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x30,0x29,0x3a,0x21,0x31,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x67,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x67,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x49,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x79,0x67,0x3b,0x69,0x66,0x28,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x3b,0x69,0x66,0x28,0x21,0x43,0x67,0x28,0x61,0x2c,0x62,0x29,0x29,0x7b,0x69,0x66,0x28,0x44,0x67,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x62,0x3d,0x4c,0x66,0x28,0x63,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x78,0x67,0x3b,0x62,0x26,0x26,0x43,0x67,0x28,0x61,0x2c,0x62,0x29,0x3f,0x41,0x67,0x28,0x64,0x2c,0x63,0x29,0x3a,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x2d,0x34,0x30,0x39,0x37,0x7c,0x32,0x2c,0x49,0x3d,0x21,0x31,0x2c,0x78,0x67,0x3d,0x61,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x44,0x67,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x2d,0x34,0x30,0x39,0x37,0x7c,0x32,0x3b,0x49,0x3d,0x21,0x31,0x3b,0x78,0x67,0x3d,0x61,0x7d,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x67,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x35,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x33,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x33,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3b,0x29,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x78,0x67,0x3d,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x67,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x61,0x21,0x3d,0x3d,0x78,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x69,0x66,0x28,0x21,0x49,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x67,0x28,0x61,0x29,0x2c,0x49,0x3d,0x21,0x30,0x2c,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x62,0x3b,0x28,0x62,0x3d,0x33,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x21,0x28,0x62,0x3d,0x35,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x26,0x26,0x28,0x62,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x62,0x3d,0x5c,0x22,0x68,0x65,0x61,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x5c,0x22,0x62,0x6f,0x64,0x79,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x26,0x26,0x21,0x45,0x66,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x29,0x29,0x3b,0x69,0x66,0x28,0x62,0x26,0x26,0x28,0x62,0x3d,0x79,0x67,0x29,0x29,0x7b,0x69,0x66,0x28,0x44,0x67,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x48,0x67,0x28,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x31,0x38,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x62,0x3b,0x29,0x41,0x67,0x28,0x61,0x2c,0x62,0x29,0x2c,0x62,0x3d,0x4c,0x66,0x28,0x62,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7d,0x46,0x67,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x21,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x37,0x29,0x29,0x3b,0x61,0x3a,0x7b,0x61,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x66,0x6f,0x72,0x28,0x62,0x3d,0x30,0x3b,0x61,0x3b,0x29,0x7b,0x69,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x64,0x61,0x74,0x61,0x3b,0x69,0x66,0x28,0x5c,0x22,0x2f,0x24,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x79,0x67,0x3d,0x4c,0x66,0x28,0x61,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x62,0x2d,0x2d,0x7d,0x65,0x6c,0x73,0x65,0x5c,0x22,0x24,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x5c,0x22,0x24,0x21,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x26,0x26,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x62,0x2b,0x2b,0x7d,0x61,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x79,0x67,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x79,0x67,0x3d,0x78,0x67,0x3f,0x4c,0x66,0x28,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x67,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x61,0x3d,0x79,0x67,0x3b,0x61,0x3b,0x29,0x61,0x3d,0x4c,0x66,0x28,0x61,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x67,0x28,0x29,0x7b,0x79,0x67,0x3d,0x78,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x49,0x3d,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x67,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x7a,0x67,0x3f,0x7a,0x67,0x3d,0x5b,0x61,0x5d,0x3a,0x7a,0x67,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x7d,0x76,0x61,0x72,0x20,0x4b,0x67,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x3d,0x63,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x7b,0x69,0x66,0x28,0x63,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x29,0x7b,0x63,0x3d,0x63,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x63,0x29,0x7b,0x69,0x66,0x28,0x31,0x21,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x30,0x39,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x69,0x66,0x28,0x21,0x64,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x34,0x37,0x2c,0x61,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2c,0x66,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x62,0x2e,0x72,0x65,0x66,0x2e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x52,0x65,0x66,0x3d,0x3d,0x3d,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x72,0x65,0x66,0x3b,0x62,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x65,0x2e,0x72,0x65,0x66,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x66,0x5d,0x3a,0x62,0x5b,0x66,0x5d,0x3d,0x61,0x7d,0x3b,0x62,0x2e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x52,0x65,0x66,0x3d,0x66,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x38,0x34,0x29,0x29,0x3b,0x69,0x66,0x28,0x21,0x63,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x39,0x30,0x2c,0x61,0x29,0x29,0x3b,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x62,0x29,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x2c,0x5c,0x22,0x5b,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x5d,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x6b,0x65,0x79,0x73,0x20,0x7b,0x5c,0x22,0x2b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x62,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x5c,0x22,0x2c,0x20,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x7d,0x5c,0x22,0x3a,0x61,0x29,0x29,0x3b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x67,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x28,0x61,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x67,0x28,0x61,0x29,0x7b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x28,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x3f,0x28,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x63,0x5d,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x64,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x28,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x21,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x3b,0x29,0x62,0x28,0x63,0x2c,0x64,0x29,0x2c,0x64,0x3d,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x28,0x61,0x2c,0x62,0x29,0x7b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x61,0x70,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x6b,0x65,0x79,0x3f,0x61,0x2e,0x73,0x65,0x74,0x28,0x62,0x2e,0x6b,0x65,0x79,0x2c,0x62,0x29,0x3a,0x61,0x2e,0x73,0x65,0x74,0x28,0x62,0x2e,0x69,0x6e,0x64,0x65,0x78,0x2c,0x62,0x29,0x2c,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x50,0x67,0x28,0x61,0x2c,0x62,0x29,0x3b,0x61,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x30,0x3b,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x28,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x62,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x64,0x3b,0x69,0x66,0x28,0x21,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x2c,0x63,0x3b,0x64,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x64,0x2e,0x69,0x6e,0x64,0x65,0x78,0x2c,0x64,0x3c,0x63,0x3f,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x2c,0x63,0x29,0x3a,0x64,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x28,0x62,0x29,0x7b,0x61,0x26,0x26,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x36,0x21,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x51,0x67,0x28,0x63,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x64,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x62,0x3d,0x65,0x28,0x62,0x2c,0x63,0x29,0x3b,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x66,0x3d,0x3d,0x3d,0x79,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x64,0x2c,0x63,0x2e,0x6b,0x65,0x79,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x66,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x66,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x48,0x61,0x26,0x26,0x4e,0x67,0x28,0x66,0x29,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x65,0x28,0x62,0x2c,0x63,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x2c,0x64,0x2e,0x72,0x65,0x66,0x3d,0x4c,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x64,0x3b,0x64,0x3d,0x52,0x67,0x28,0x63,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x2e,0x6b,0x65,0x79,0x2c,0x63,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x64,0x29,0x3b,0x64,0x2e,0x72,0x65,0x66,0x3d,0x4c,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x34,0x21,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x5c,0x6e,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x21,0x3d,0x3d,0x63,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x7c,0x7c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x21,0x3d,0x3d,0x63,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x53,0x67,0x28,0x63,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x64,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x62,0x3d,0x65,0x28,0x62,0x2c,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5b,0x5d,0x29,0x3b,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x66,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x7c,0x7c,0x37,0x21,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x54,0x67,0x28,0x63,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x64,0x2c,0x66,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x62,0x3d,0x65,0x28,0x62,0x2c,0x63,0x29,0x3b,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x26,0x26,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x62,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x51,0x67,0x28,0x5c,0x22,0x5c,0x22,0x2b,0x62,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x76,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x3d,0x52,0x67,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x62,0x2e,0x6b,0x65,0x79,0x2c,0x62,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x63,0x29,0x2c,0x5c,0x6e,0x63,0x2e,0x72,0x65,0x66,0x3d,0x4c,0x67,0x28,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x29,0x2c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x63,0x3b,0x63,0x61,0x73,0x65,0x20,0x77,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x53,0x67,0x28,0x62,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x71,0x28,0x61,0x2c,0x64,0x28,0x62,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x63,0x29,0x7d,0x69,0x66,0x28,0x65,0x62,0x28,0x62,0x29,0x7c,0x7c,0x4b,0x61,0x28,0x62,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x54,0x67,0x28,0x62,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x62,0x3b,0x4d,0x67,0x28,0x61,0x2c,0x62,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x62,0x2e,0x6b,0x65,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x68,0x28,0x61,0x2c,0x62,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x76,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x65,0x3f,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x77,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x65,0x3f,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x63,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x2c,0x72,0x28,0x61,0x2c,0x5c,0x6e,0x62,0x2c,0x65,0x28,0x63,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x64,0x29,0x7d,0x69,0x66,0x28,0x65,0x62,0x28,0x63,0x29,0x7c,0x7c,0x4b,0x61,0x28,0x63,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x6d,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x4d,0x67,0x28,0x61,0x2c,0x63,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x26,0x26,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x64,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x2e,0x67,0x65,0x74,0x28,0x63,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x28,0x62,0x2c,0x61,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x64,0x2c,0x65,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x64,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x76,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x2e,0x67,0x65,0x74,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x2e,0x6b,0x65,0x79,0x3f,0x63,0x3a,0x64,0x2e,0x6b,0x65,0x79,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x28,0x62,0x2c,0x61,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x77,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x2e,0x67,0x65,0x74,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x2e,0x6b,0x65,0x79,0x3f,0x63,0x3a,0x64,0x2e,0x6b,0x65,0x79,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x28,0x62,0x2c,0x61,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x76,0x61,0x72,0x20,0x66,0x3d,0x64,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x79,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x66,0x28,0x64,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x65,0x29,0x7d,0x69,0x66,0x28,0x65,0x62,0x28,0x64,0x29,0x7c,0x7c,0x4b,0x61,0x28,0x64,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x2e,0x67,0x65,0x74,0x28,0x63,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x6d,0x28,0x62,0x2c,0x61,0x2c,0x64,0x2c,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x4d,0x67,0x28,0x62,0x2c,0x64,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x65,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x75,0x3d,0x67,0x2c,0x77,0x3d,0x67,0x3d,0x30,0x2c,0x78,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x26,0x26,0x77,0x3c,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x77,0x2b,0x2b,0x29,0x7b,0x75,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3e,0x77,0x3f,0x28,0x78,0x3d,0x75,0x2c,0x75,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x78,0x3d,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x72,0x28,0x65,0x2c,0x75,0x2c,0x68,0x5b,0x77,0x5d,0x2c,0x6b,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x26,0x26,0x28,0x75,0x3d,0x78,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x61,0x26,0x26,0x75,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x62,0x28,0x65,0x2c,0x75,0x29,0x3b,0x67,0x3d,0x66,0x28,0x6e,0x2c,0x67,0x2c,0x77,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x3f,0x6c,0x3d,0x6e,0x3a,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x3b,0x6d,0x3d,0x6e,0x3b,0x75,0x3d,0x78,0x7d,0x69,0x66,0x28,0x77,0x3d,0x3d,0x3d,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x28,0x65,0x2c,0x75,0x29,0x2c,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x2c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x77,0x3c,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x77,0x2b,0x2b,0x29,0x75,0x3d,0x71,0x28,0x65,0x2c,0x68,0x5b,0x77,0x5d,0x2c,0x6b,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x26,0x26,0x28,0x67,0x3d,0x66,0x28,0x75,0x2c,0x67,0x2c,0x77,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x3f,0x6c,0x3d,0x75,0x3a,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x75,0x2c,0x6d,0x3d,0x75,0x29,0x3b,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x7d,0x66,0x6f,0x72,0x28,0x75,0x3d,0x64,0x28,0x65,0x2c,0x75,0x29,0x3b,0x77,0x3c,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x77,0x2b,0x2b,0x29,0x78,0x3d,0x79,0x28,0x75,0x2c,0x65,0x2c,0x77,0x2c,0x68,0x5b,0x77,0x5d,0x2c,0x6b,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x26,0x26,0x28,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x75,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x5c,0x6e,0x78,0x2e,0x6b,0x65,0x79,0x3f,0x77,0x3a,0x78,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x67,0x3d,0x66,0x28,0x78,0x2c,0x67,0x2c,0x77,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x3f,0x6c,0x3d,0x78,0x3a,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x78,0x2c,0x6d,0x3d,0x78,0x29,0x3b,0x61,0x26,0x26,0x75,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x28,0x65,0x2c,0x61,0x29,0x7d,0x29,0x3b,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x28,0x65,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x4b,0x61,0x28,0x68,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x35,0x30,0x29,0x29,0x3b,0x68,0x3d,0x6c,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x68,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x68,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x35,0x31,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x75,0x3d,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6d,0x3d,0x67,0x2c,0x77,0x3d,0x67,0x3d,0x30,0x2c,0x78,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x3d,0x68,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x26,0x26,0x21,0x6e,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x77,0x2b,0x2b,0x2c,0x6e,0x3d,0x68,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x7b,0x6d,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3e,0x77,0x3f,0x28,0x78,0x3d,0x6d,0x2c,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x78,0x3d,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x74,0x3d,0x72,0x28,0x65,0x2c,0x6d,0x2c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6b,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x26,0x26,0x28,0x6d,0x3d,0x78,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x61,0x26,0x26,0x6d,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x62,0x28,0x65,0x2c,0x6d,0x29,0x3b,0x67,0x3d,0x66,0x28,0x74,0x2c,0x67,0x2c,0x77,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x3f,0x6c,0x3d,0x74,0x3a,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x74,0x3b,0x75,0x3d,0x74,0x3b,0x6d,0x3d,0x78,0x7d,0x69,0x66,0x28,0x6e,0x2e,0x64,0x6f,0x6e,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x28,0x65,0x2c,0x5c,0x6e,0x6d,0x29,0x2c,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x2c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x21,0x6e,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x77,0x2b,0x2b,0x2c,0x6e,0x3d,0x68,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x6e,0x3d,0x71,0x28,0x65,0x2c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6b,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x67,0x3d,0x66,0x28,0x6e,0x2c,0x67,0x2c,0x77,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x3f,0x6c,0x3d,0x6e,0x3a,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x2c,0x75,0x3d,0x6e,0x29,0x3b,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x7d,0x66,0x6f,0x72,0x28,0x6d,0x3d,0x64,0x28,0x65,0x2c,0x6d,0x29,0x3b,0x21,0x6e,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x77,0x2b,0x2b,0x2c,0x6e,0x3d,0x68,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x6e,0x3d,0x79,0x28,0x6d,0x2c,0x65,0x2c,0x77,0x2c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6b,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x6d,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x2e,0x6b,0x65,0x79,0x3f,0x77,0x3a,0x6e,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x67,0x3d,0x66,0x28,0x6e,0x2c,0x67,0x2c,0x77,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x75,0x3f,0x6c,0x3d,0x6e,0x3a,0x75,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x2c,0x75,0x3d,0x6e,0x29,0x3b,0x61,0x26,0x26,0x6d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x28,0x65,0x2c,0x61,0x29,0x7d,0x29,0x3b,0x49,0x26,0x26,0x74,0x67,0x28,0x65,0x2c,0x77,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x28,0x61,0x2c,0x64,0x2c,0x66,0x2c,0x68,0x29,0x7b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x66,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x79,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x66,0x3d,0x66,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x66,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x76,0x61,0x3a,0x61,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6b,0x3d,0x5c,0x6e,0x66,0x2e,0x6b,0x65,0x79,0x2c,0x6c,0x3d,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6c,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x6b,0x29,0x7b,0x6b,0x3d,0x66,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x6b,0x3d,0x3d,0x3d,0x79,0x61,0x29,0x7b,0x69,0x66,0x28,0x37,0x3d,0x3d,0x3d,0x6c,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x28,0x61,0x2c,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x64,0x3d,0x65,0x28,0x6c,0x2c,0x66,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x61,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6c,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x6b,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x48,0x61,0x26,0x26,0x4e,0x67,0x28,0x6b,0x29,0x3d,0x3d,0x3d,0x6c,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x63,0x28,0x61,0x2c,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x64,0x3d,0x65,0x28,0x6c,0x2c,0x66,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x3b,0x64,0x2e,0x72,0x65,0x66,0x3d,0x4c,0x67,0x28,0x61,0x2c,0x6c,0x2c,0x66,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x61,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x63,0x28,0x61,0x2c,0x6c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x6c,0x73,0x65,0x20,0x62,0x28,0x61,0x2c,0x6c,0x29,0x3b,0x6c,0x3d,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x66,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x79,0x61,0x3f,0x28,0x64,0x3d,0x54,0x67,0x28,0x66,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x68,0x2c,0x66,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x3d,0x64,0x29,0x3a,0x28,0x68,0x3d,0x52,0x67,0x28,0x66,0x2e,0x74,0x79,0x70,0x65,0x2c,0x66,0x2e,0x6b,0x65,0x79,0x2c,0x66,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x68,0x29,0x2c,0x68,0x2e,0x72,0x65,0x66,0x3d,0x4c,0x67,0x28,0x61,0x2c,0x64,0x2c,0x66,0x29,0x2c,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x3d,0x68,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x28,0x61,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x77,0x61,0x3a,0x61,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x6c,0x3d,0x66,0x2e,0x6b,0x65,0x79,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x64,0x3b,0x29,0x7b,0x69,0x66,0x28,0x64,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x6c,0x29,0x69,0x66,0x28,0x34,0x3d,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x26,0x26,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3d,0x3d,0x3d,0x66,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x26,0x26,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3d,0x3d,0x3d,0x66,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x29,0x7b,0x63,0x28,0x61,0x2c,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x64,0x3d,0x65,0x28,0x64,0x2c,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7c,0x7c,0x5b,0x5d,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x61,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x63,0x28,0x61,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x6c,0x73,0x65,0x20,0x62,0x28,0x61,0x2c,0x64,0x29,0x3b,0x64,0x3d,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x64,0x3d,0x53,0x67,0x28,0x66,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x68,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x61,0x3d,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x28,0x61,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x3d,0x66,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x2c,0x4a,0x28,0x61,0x2c,0x64,0x2c,0x6c,0x28,0x66,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x2c,0x68,0x29,0x7d,0x69,0x66,0x28,0x65,0x62,0x28,0x66,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x28,0x61,0x2c,0x64,0x2c,0x66,0x2c,0x68,0x29,0x3b,0x69,0x66,0x28,0x4b,0x61,0x28,0x66,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x28,0x61,0x2c,0x64,0x2c,0x66,0x2c,0x68,0x29,0x3b,0x4d,0x67,0x28,0x61,0x2c,0x66,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x66,0x7c,0x7c,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x3f,0x28,0x66,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x66,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x36,0x3d,0x3d,0x3d,0x64,0x2e,0x74,0x61,0x67,0x3f,0x28,0x63,0x28,0x61,0x2c,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x2c,0x64,0x3d,0x65,0x28,0x64,0x2c,0x66,0x29,0x2c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x3d,0x64,0x29,0x3a,0x5c,0x6e,0x28,0x63,0x28,0x61,0x2c,0x64,0x29,0x2c,0x64,0x3d,0x51,0x67,0x28,0x66,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x68,0x29,0x2c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x3d,0x64,0x29,0x2c,0x67,0x28,0x61,0x29,0x29,0x3a,0x63,0x28,0x61,0x2c,0x64,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4a,0x7d,0x76,0x61,0x72,0x20,0x55,0x67,0x3d,0x4f,0x67,0x28,0x21,0x30,0x29,0x2c,0x56,0x67,0x3d,0x4f,0x67,0x28,0x21,0x31,0x29,0x2c,0x57,0x67,0x3d,0x55,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x58,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x59,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x67,0x28,0x29,0x7b,0x5a,0x67,0x3d,0x59,0x67,0x3d,0x58,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x68,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x57,0x67,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x45,0x28,0x57,0x67,0x29,0x3b,0x61,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x28,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x62,0x29,0x21,0x3d,0x3d,0x62,0x3f,0x28,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x29,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x62,0x29,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x29,0x3b,0x69,0x66,0x28,0x61,0x3d,0x3d,0x3d,0x63,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x58,0x67,0x3d,0x61,0x3b,0x5a,0x67,0x3d,0x59,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x61,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x62,0x29,0x26,0x26,0x28,0x64,0x68,0x3d,0x21,0x30,0x29,0x2c,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x68,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3b,0x69,0x66,0x28,0x5a,0x67,0x21,0x3d,0x3d,0x61,0x29,0x69,0x66,0x28,0x61,0x3d,0x7b,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x61,0x2c,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x62,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x59,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x58,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x30,0x38,0x29,0x29,0x3b,0x59,0x67,0x3d,0x61,0x3b,0x58,0x67,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x61,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x59,0x67,0x3d,0x59,0x67,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x76,0x61,0x72,0x20,0x66,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x68,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x68,0x3f,0x66,0x68,0x3d,0x5b,0x61,0x5d,0x3a,0x66,0x68,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x62,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x28,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x63,0x2c,0x67,0x68,0x28,0x62,0x29,0x29,0x3a,0x28,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x63,0x29,0x3b,0x62,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x68,0x28,0x61,0x2c,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x29,0x3b,0x63,0x3d,0x61,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x2c,0x63,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x29,0x2c,0x63,0x3d,0x61,0x2c,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x33,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x3f,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x6a,0x68,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x68,0x28,0x61,0x29,0x7b,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x7d,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x61,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x61,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x61,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x61,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x61,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x62,0x2c,0x74,0x61,0x67,0x3a,0x30,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x3d,0x64,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x32,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x3a,0x28,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x29,0x3b,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x68,0x28,0x61,0x2c,0x63,0x29,0x7d,0x65,0x3d,0x64,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x3f,0x28,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x2c,0x67,0x68,0x28,0x64,0x29,0x29,0x3a,0x28,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x29,0x3b,0x64,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x68,0x28,0x61,0x2c,0x63,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x62,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x62,0x3d,0x62,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x63,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x29,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x64,0x26,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x63,0x7c,0x3d,0x64,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x43,0x63,0x28,0x61,0x2c,0x63,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x64,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x64,0x3d,0x64,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x63,0x3d,0x3d,0x3d,0x64,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x3d,0x63,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x63,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x74,0x61,0x67,0x3a,0x63,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x63,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x65,0x3d,0x66,0x3d,0x67,0x3a,0x66,0x3d,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x67,0x3b,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x65,0x3d,0x66,0x3d,0x62,0x3a,0x66,0x3d,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x7d,0x65,0x6c,0x73,0x65,0x20,0x65,0x3d,0x66,0x3d,0x62,0x3b,0x63,0x3d,0x7b,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x64,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x65,0x2c,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x66,0x2c,0x73,0x68,0x61,0x72,0x65,0x64,0x3a,0x64,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2c,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x64,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x7d,0x3b,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x61,0x3d,0x63,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x63,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x62,0x3a,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x5c,0x6e,0x62,0x3b,0x63,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6a,0x68,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x67,0x3d,0x65,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x68,0x3d,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x68,0x2c,0x6c,0x3d,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x3f,0x66,0x3d,0x6c,0x3a,0x67,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x3b,0x67,0x3d,0x6b,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x26,0x26,0x28,0x6d,0x3d,0x6d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x68,0x3d,0x6d,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x2c,0x68,0x21,0x3d,0x3d,0x67,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x3f,0x6d,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6c,0x3a,0x68,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6c,0x2c,0x6d,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6b,0x29,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x71,0x3d,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3b,0x67,0x3d,0x30,0x3b,0x6d,0x3d,0x6c,0x3d,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x68,0x3d,0x66,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x68,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x79,0x3d,0x68,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3b,0x69,0x66,0x28,0x28,0x64,0x26,0x72,0x29,0x3d,0x3d,0x3d,0x72,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x26,0x26,0x28,0x6d,0x3d,0x6d,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x79,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x30,0x2c,0x74,0x61,0x67,0x3a,0x68,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x68,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x68,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x5c,0x6e,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x3b,0x61,0x3a,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x61,0x2c,0x74,0x3d,0x68,0x3b,0x72,0x3d,0x62,0x3b,0x79,0x3d,0x63,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x74,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x6e,0x3d,0x74,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x29,0x7b,0x71,0x3d,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x79,0x2c,0x71,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x71,0x3d,0x6e,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x6e,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x2d,0x36,0x35,0x35,0x33,0x37,0x7c,0x31,0x32,0x38,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x6e,0x3d,0x74,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3b,0x72,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x3f,0x6e,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x79,0x2c,0x71,0x2c,0x72,0x29,0x3a,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x72,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x71,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x71,0x2c,0x72,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x6a,0x68,0x3d,0x21,0x30,0x7d,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x26,0x26,0x30,0x21,0x3d,0x3d,0x68,0x2e,0x6c,0x61,0x6e,0x65,0x26,0x26,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x34,0x2c,0x72,0x3d,0x65,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x72,0x3f,0x65,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3d,0x5b,0x68,0x5d,0x3a,0x72,0x2e,0x70,0x75,0x73,0x68,0x28,0x68,0x29,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x79,0x3d,0x7b,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x3a,0x79,0x2c,0x6c,0x61,0x6e,0x65,0x3a,0x72,0x2c,0x74,0x61,0x67,0x3a,0x68,0x2e,0x74,0x61,0x67,0x2c,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x68,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x68,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x3f,0x28,0x6c,0x3d,0x6d,0x3d,0x79,0x2c,0x6b,0x3d,0x71,0x29,0x3a,0x6d,0x3d,0x6d,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x79,0x2c,0x67,0x7c,0x3d,0x72,0x3b,0x5c,0x6e,0x68,0x3d,0x68,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x29,0x69,0x66,0x28,0x68,0x3d,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x65,0x6c,0x73,0x65,0x20,0x72,0x3d,0x68,0x2c,0x68,0x3d,0x72,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x72,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x72,0x2c,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x26,0x26,0x28,0x6b,0x3d,0x71,0x29,0x3b,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x6b,0x3b,0x65,0x2e,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6c,0x3b,0x65,0x2e,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x6d,0x3b,0x62,0x3d,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x65,0x3d,0x62,0x3b,0x64,0x6f,0x20,0x67,0x7c,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x21,0x3d,0x3d,0x62,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x28,0x65,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x3b,0x72,0x68,0x7c,0x3d,0x67,0x3b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x67,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x71,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x3d,0x62,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3b,0x62,0x2e,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x66,0x6f,0x72,0x28,0x62,0x3d,0x30,0x3b,0x62,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x62,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x5b,0x62,0x5d,0x2c,0x65,0x3d,0x64,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x64,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x3d,0x63,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x39,0x31,0x2c,0x65,0x29,0x29,0x3b,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x64,0x29,0x7d,0x7d,0x7d,0x76,0x61,0x72,0x20,0x74,0x68,0x3d,0x7b,0x7d,0x2c,0x75,0x68,0x3d,0x55,0x66,0x28,0x74,0x68,0x29,0x2c,0x76,0x68,0x3d,0x55,0x66,0x28,0x74,0x68,0x29,0x2c,0x77,0x68,0x3d,0x55,0x66,0x28,0x74,0x68,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x68,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x61,0x3d,0x3d,0x3d,0x74,0x68,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x37,0x34,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x47,0x28,0x77,0x68,0x2c,0x62,0x29,0x3b,0x47,0x28,0x76,0x68,0x2c,0x61,0x29,0x3b,0x47,0x28,0x75,0x68,0x2c,0x74,0x68,0x29,0x3b,0x61,0x3d,0x62,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x62,0x3d,0x28,0x62,0x3d,0x62,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3f,0x62,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x3a,0x6c,0x62,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x61,0x3d,0x38,0x3d,0x3d,0x3d,0x61,0x3f,0x62,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x62,0x2c,0x62,0x3d,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x3d,0x61,0x2e,0x74,0x61,0x67,0x4e,0x61,0x6d,0x65,0x2c,0x62,0x3d,0x6c,0x62,0x28,0x62,0x2c,0x61,0x29,0x7d,0x45,0x28,0x75,0x68,0x29,0x3b,0x47,0x28,0x75,0x68,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x68,0x28,0x29,0x7b,0x45,0x28,0x75,0x68,0x29,0x3b,0x45,0x28,0x76,0x68,0x29,0x3b,0x45,0x28,0x77,0x68,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x68,0x28,0x61,0x29,0x7b,0x78,0x68,0x28,0x77,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x78,0x68,0x28,0x75,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6c,0x62,0x28,0x62,0x2c,0x61,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x62,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x47,0x28,0x76,0x68,0x2c,0x61,0x29,0x2c,0x47,0x28,0x75,0x68,0x2c,0x63,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x68,0x28,0x61,0x29,0x7b,0x76,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x45,0x28,0x75,0x68,0x29,0x2c,0x45,0x28,0x76,0x68,0x29,0x29,0x7d,0x76,0x61,0x72,0x20,0x4c,0x3d,0x55,0x66,0x28,0x30,0x29,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x68,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x63,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x7c,0x7c,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x2e,0x64,0x61,0x74,0x61,0x7c,0x7c,0x5c,0x22,0x24,0x21,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x2e,0x64,0x61,0x74,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x39,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x72,0x65,0x76,0x65,0x61,0x6c,0x4f,0x72,0x64,0x65,0x72,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x62,0x3d,0x3d,0x3d,0x61,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x44,0x68,0x3d,0x5b,0x5d,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x68,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x61,0x3d,0x30,0x3b,0x61,0x3c,0x44,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2b,0x2b,0x29,0x44,0x68,0x5b,0x61,0x5d,0x2e,0x5f,0x77,0x6f,0x72,0x6b,0x49,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x44,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3d,0x30,0x7d,0x76,0x61,0x72,0x20,0x46,0x68,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x47,0x68,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x48,0x68,0x3d,0x30,0x2c,0x4d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x49,0x68,0x3d,0x21,0x31,0x2c,0x4a,0x68,0x3d,0x21,0x31,0x2c,0x4b,0x68,0x3d,0x30,0x2c,0x4c,0x68,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x32,0x31,0x29,0x29,0x3b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x63,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x69,0x66,0x28,0x21,0x48,0x65,0x28,0x61,0x5b,0x63,0x5d,0x2c,0x62,0x5b,0x63,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x29,0x7b,0x48,0x68,0x3d,0x66,0x3b,0x4d,0x3d,0x62,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x46,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x4f,0x68,0x3a,0x50,0x68,0x3b,0x61,0x3d,0x63,0x28,0x64,0x2c,0x65,0x29,0x3b,0x69,0x66,0x28,0x4a,0x68,0x29,0x7b,0x66,0x3d,0x30,0x3b,0x64,0x6f,0x7b,0x4a,0x68,0x3d,0x21,0x31,0x3b,0x4b,0x68,0x3d,0x30,0x3b,0x69,0x66,0x28,0x32,0x35,0x3c,0x3d,0x66,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x30,0x31,0x29,0x29,0x3b,0x66,0x2b,0x3d,0x31,0x3b,0x4f,0x3d,0x4e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x46,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x51,0x68,0x3b,0x61,0x3d,0x63,0x28,0x64,0x2c,0x65,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x4a,0x68,0x29,0x7d,0x46,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x52,0x68,0x3b,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4e,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4e,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x48,0x68,0x3d,0x30,0x3b,0x4f,0x3d,0x4e,0x3d,0x4d,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x49,0x68,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x68,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x30,0x21,0x3d,0x3d,0x4b,0x68,0x3b,0x4b,0x68,0x3d,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x68,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x7b,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x75,0x65,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4f,0x3f,0x4d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4f,0x3d,0x61,0x3a,0x4f,0x3d,0x4f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x68,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4e,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x4d,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x61,0x3d,0x4e,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4f,0x3f,0x4d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x4f,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x4f,0x3d,0x62,0x2c,0x4e,0x3d,0x61,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x30,0x29,0x29,0x3b,0x4e,0x3d,0x61,0x3b,0x61,0x3d,0x7b,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x4e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x4e,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x2c,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3a,0x4e,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x71,0x75,0x65,0x75,0x65,0x3a,0x4e,0x2e,0x71,0x75,0x65,0x75,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x4f,0x3f,0x4d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x4f,0x3d,0x61,0x3a,0x4f,0x3d,0x4f,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4f,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x3f,0x62,0x28,0x61,0x29,0x3a,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x68,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x55,0x68,0x28,0x29,0x2c,0x63,0x3d,0x62,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x31,0x29,0x29,0x3b,0x63,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x61,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x4e,0x2c,0x65,0x3d,0x64,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x66,0x3d,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x67,0x7d,0x64,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x65,0x3d,0x66,0x3b,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x66,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x3d,0x64,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x3d,0x66,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6c,0x2e,0x6c,0x61,0x6e,0x65,0x3b,0x69,0x66,0x28,0x28,0x48,0x68,0x26,0x6d,0x29,0x3d,0x3d,0x3d,0x6d,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x28,0x6b,0x3d,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x30,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x6c,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6c,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6c,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x2c,0x64,0x3d,0x6c,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3f,0x6c,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x61,0x28,0x64,0x2c,0x6c,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x71,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x6d,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x6c,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6c,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x5c,0x6e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6c,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6b,0x3f,0x28,0x68,0x3d,0x6b,0x3d,0x71,0x2c,0x67,0x3d,0x64,0x29,0x3a,0x6b,0x3d,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x71,0x3b,0x4d,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x6d,0x3b,0x72,0x68,0x7c,0x3d,0x6d,0x7d,0x6c,0x3d,0x6c,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6b,0x3f,0x67,0x3d,0x64,0x3a,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x68,0x3b,0x48,0x65,0x28,0x64,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7c,0x7c,0x28,0x64,0x68,0x3d,0x21,0x30,0x29,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x64,0x3b,0x62,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x67,0x3b,0x62,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6b,0x3b,0x63,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x64,0x7d,0x61,0x3d,0x63,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x65,0x3d,0x61,0x3b,0x64,0x6f,0x20,0x66,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x2c,0x4d,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x66,0x2c,0x72,0x68,0x7c,0x3d,0x66,0x2c,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x21,0x3d,0x3d,0x61,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x63,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x5d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x68,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x55,0x68,0x28,0x29,0x2c,0x63,0x3d,0x62,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x31,0x29,0x29,0x3b,0x63,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x61,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x2c,0x65,0x3d,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x2c,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x20,0x66,0x3d,0x61,0x28,0x66,0x2c,0x67,0x2e,0x61,0x63,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x67,0x3d,0x67,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x67,0x21,0x3d,0x3d,0x65,0x29,0x3b,0x48,0x65,0x28,0x66,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7c,0x7c,0x28,0x64,0x68,0x3d,0x21,0x30,0x29,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x26,0x26,0x28,0x62,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x29,0x3b,0x63,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x66,0x2c,0x64,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x68,0x28,0x29,0x7b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4d,0x2c,0x64,0x3d,0x55,0x68,0x28,0x29,0x2c,0x65,0x3d,0x62,0x28,0x29,0x2c,0x66,0x3d,0x21,0x48,0x65,0x28,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x29,0x3b,0x66,0x26,0x26,0x28,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x65,0x2c,0x64,0x68,0x3d,0x21,0x30,0x29,0x3b,0x64,0x3d,0x64,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x24,0x68,0x28,0x61,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x64,0x2c,0x61,0x29,0x2c,0x5b,0x61,0x5d,0x29,0x3b,0x69,0x66,0x28,0x64,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x21,0x3d,0x3d,0x62,0x7c,0x7c,0x66,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4f,0x26,0x26,0x4f,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x74,0x61,0x67,0x26,0x31,0x29,0x7b,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x34,0x38,0x3b,0x62,0x69,0x28,0x39,0x2c,0x63,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x62,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x39,0x29,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x48,0x68,0x26,0x33,0x30,0x29,0x7c,0x7c,0x64,0x69,0x28,0x63,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x33,0x38,0x34,0x3b,0x61,0x3d,0x7b,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3a,0x62,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x63,0x7d,0x3b,0x62,0x3d,0x4d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x3f,0x28,0x62,0x3d,0x7b,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x6f,0x72,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x4d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x62,0x2c,0x62,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x3d,0x5b,0x61,0x5d,0x29,0x3a,0x28,0x63,0x3d,0x62,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x62,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x3d,0x5b,0x61,0x5d,0x3a,0x63,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x63,0x3b,0x62,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3d,0x64,0x3b,0x65,0x69,0x28,0x62,0x29,0x26,0x26,0x66,0x69,0x28,0x61,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x65,0x69,0x28,0x62,0x29,0x26,0x26,0x66,0x69,0x28,0x61,0x29,0x7d,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x69,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3b,0x61,0x3d,0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x48,0x65,0x28,0x61,0x2c,0x63,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x64,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x69,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x69,0x68,0x28,0x61,0x2c,0x31,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x31,0x2c,0x2d,0x31,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x69,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x54,0x68,0x28,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x28,0x61,0x3d,0x61,0x28,0x29,0x29,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x3b,0x61,0x3d,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x56,0x68,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x61,0x7d,0x3b,0x62,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3d,0x69,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x4d,0x2c,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x61,0x5d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x61,0x3d,0x7b,0x74,0x61,0x67,0x3a,0x61,0x2c,0x63,0x72,0x65,0x61,0x74,0x65,0x3a,0x62,0x2c,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3a,0x63,0x2c,0x64,0x65,0x70,0x73,0x3a,0x64,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x62,0x3d,0x4d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x3f,0x28,0x62,0x3d,0x7b,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x6f,0x72,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x4d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x62,0x2c,0x62,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x29,0x3a,0x28,0x63,0x3d,0x62,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x62,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x3a,0x28,0x64,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x61,0x2c,0x61,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x64,0x2c,0x62,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x61,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x69,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x54,0x68,0x28,0x29,0x3b,0x4d,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x61,0x3b,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x69,0x28,0x31,0x7c,0x62,0x2c,0x63,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x64,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x55,0x68,0x28,0x29,0x3b,0x64,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x64,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4e,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x4e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x66,0x3d,0x67,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x4d,0x68,0x28,0x64,0x2c,0x67,0x2e,0x64,0x65,0x70,0x73,0x29,0x29,0x7b,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x69,0x28,0x62,0x2c,0x63,0x2c,0x66,0x2c,0x64,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x4d,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x61,0x3b,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x69,0x28,0x31,0x7c,0x62,0x2c,0x63,0x2c,0x66,0x2c,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x69,0x28,0x38,0x33,0x39,0x30,0x36,0x35,0x36,0x2c,0x38,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x68,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x69,0x28,0x32,0x30,0x34,0x38,0x2c,0x38,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x69,0x28,0x34,0x2c,0x32,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x69,0x28,0x34,0x2c,0x34,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x28,0x29,0x2c,0x62,0x28,0x61,0x29,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x61,0x28,0x29,0x2c,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x61,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x5b,0x61,0x5d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x69,0x28,0x34,0x2c,0x34,0x2c,0x70,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x61,0x29,0x2c,0x63,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x69,0x28,0x29,0x7b,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x55,0x68,0x28,0x29,0x3b,0x62,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x4d,0x68,0x28,0x62,0x2c,0x64,0x5b,0x31,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x5b,0x30,0x5d,0x3b,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x61,0x2c,0x62,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x55,0x68,0x28,0x29,0x3b,0x62,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x4d,0x68,0x28,0x62,0x2c,0x64,0x5b,0x31,0x5d,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x5b,0x30,0x5d,0x3b,0x61,0x3d,0x61,0x28,0x29,0x3b,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x61,0x2c,0x62,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x48,0x68,0x26,0x32,0x31,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x28,0x61,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x31,0x2c,0x64,0x68,0x3d,0x21,0x30,0x29,0x2c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x63,0x3b,0x48,0x65,0x28,0x63,0x2c,0x62,0x29,0x7c,0x7c,0x28,0x63,0x3d,0x79,0x63,0x28,0x29,0x2c,0x4d,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x2c,0x72,0x68,0x7c,0x3d,0x63,0x2c,0x61,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x43,0x3b,0x43,0x3d,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x34,0x3e,0x63,0x3f,0x63,0x3a,0x34,0x3b,0x61,0x28,0x21,0x30,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x47,0x68,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x47,0x68,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x7b,0x7d,0x3b,0x74,0x72,0x79,0x7b,0x61,0x28,0x21,0x31,0x29,0x2c,0x62,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x63,0x2c,0x47,0x68,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x64,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x79,0x69,0x28,0x61,0x29,0x3b,0x63,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x64,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x63,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x21,0x31,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x69,0x66,0x28,0x7a,0x69,0x28,0x61,0x29,0x29,0x41,0x69,0x28,0x62,0x2c,0x63,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x63,0x3d,0x68,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x52,0x28,0x29,0x3b,0x67,0x69,0x28,0x63,0x2c,0x61,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x42,0x69,0x28,0x63,0x2c,0x62,0x2c,0x64,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x79,0x69,0x28,0x61,0x29,0x2c,0x65,0x3d,0x7b,0x6c,0x61,0x6e,0x65,0x3a,0x64,0x2c,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x63,0x2c,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x21,0x31,0x2c,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x69,0x66,0x28,0x7a,0x69,0x28,0x61,0x29,0x29,0x41,0x69,0x28,0x62,0x2c,0x65,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x29,0x26,0x26,0x28,0x66,0x3d,0x62,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x29,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x62,0x2e,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x68,0x3d,0x66,0x28,0x67,0x2c,0x63,0x29,0x3b,0x65,0x2e,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x21,0x30,0x3b,0x65,0x2e,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x68,0x3b,0x69,0x66,0x28,0x48,0x65,0x28,0x68,0x2c,0x67,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x62,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6b,0x3f,0x28,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x2c,0x67,0x68,0x28,0x62,0x29,0x29,0x3a,0x28,0x65,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x29,0x3b,0x62,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x7d,0x63,0x3d,0x68,0x68,0x28,0x61,0x2c,0x62,0x2c,0x65,0x2c,0x64,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x65,0x3d,0x52,0x28,0x29,0x2c,0x67,0x69,0x28,0x63,0x2c,0x61,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x42,0x69,0x28,0x63,0x2c,0x62,0x2c,0x64,0x29,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x7a,0x69,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x3d,0x3d,0x4d,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x62,0x3d,0x3d,0x3d,0x4d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x4a,0x68,0x3d,0x49,0x68,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x3a,0x28,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x63,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x62,0x29,0x3b,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x63,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x64,0x26,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x63,0x7c,0x3d,0x64,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x43,0x63,0x28,0x61,0x2c,0x63,0x29,0x7d,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x52,0x68,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x50,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x50,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x50,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x50,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x50,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x50,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x50,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x50,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x50,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x50,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x50,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x4f,0x68,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x54,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x61,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6d,0x69,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x5b,0x61,0x5d,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x69,0x28,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x2c,0x5c,0x6e,0x34,0x2c,0x70,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x61,0x29,0x2c,0x63,0x29,0x7d,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x69,0x28,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x2c,0x34,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x69,0x28,0x34,0x2c,0x32,0x2c,0x61,0x2c,0x62,0x29,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x54,0x68,0x28,0x29,0x3b,0x62,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x3b,0x61,0x3d,0x61,0x28,0x29,0x3b,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5b,0x61,0x2c,0x62,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x54,0x68,0x28,0x29,0x3b,0x62,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x28,0x62,0x29,0x3a,0x62,0x3b,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x64,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x3b,0x61,0x3d,0x7b,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x61,0x2c,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x62,0x7d,0x3b,0x64,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x3d,0x78,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x4d,0x2c,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x61,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x5c,0x6e,0x54,0x68,0x28,0x29,0x3b,0x61,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x61,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x7d,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x68,0x69,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x72,0x69,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x68,0x69,0x28,0x21,0x31,0x29,0x2c,0x62,0x3d,0x61,0x5b,0x30,0x5d,0x3b,0x61,0x3d,0x76,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x5b,0x31,0x5d,0x29,0x3b,0x54,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x62,0x2c,0x61,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x4d,0x2c,0x65,0x3d,0x54,0x68,0x28,0x29,0x3b,0x69,0x66,0x28,0x49,0x29,0x7b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x30,0x37,0x29,0x29,0x3b,0x63,0x3d,0x63,0x28,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x63,0x3d,0x62,0x28,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x39,0x29,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x48,0x68,0x26,0x33,0x30,0x29,0x7c,0x7c,0x64,0x69,0x28,0x64,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x63,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x63,0x2c,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3a,0x62,0x7d,0x3b,0x65,0x2e,0x71,0x75,0x65,0x75,0x65,0x3d,0x66,0x3b,0x6d,0x69,0x28,0x61,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x2c,0x5c,0x6e,0x66,0x2c,0x61,0x29,0x2c,0x5b,0x61,0x5d,0x29,0x3b,0x64,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x34,0x38,0x3b,0x62,0x69,0x28,0x39,0x2c,0x63,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x2c,0x66,0x2c,0x63,0x2c,0x62,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x54,0x68,0x28,0x29,0x2c,0x62,0x3d,0x51,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x3b,0x69,0x66,0x28,0x49,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x73,0x67,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x72,0x67,0x3b,0x63,0x3d,0x28,0x64,0x26,0x7e,0x28,0x31,0x3c,0x3c,0x33,0x32,0x2d,0x6f,0x63,0x28,0x64,0x29,0x2d,0x31,0x29,0x29,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x2b,0x63,0x3b,0x62,0x3d,0x5c,0x22,0x3a,0x5c,0x22,0x2b,0x62,0x2b,0x5c,0x22,0x52,0x5c,0x22,0x2b,0x63,0x3b,0x63,0x3d,0x4b,0x68,0x2b,0x2b,0x3b,0x30,0x3c,0x63,0x26,0x26,0x28,0x62,0x2b,0x3d,0x5c,0x22,0x48,0x5c,0x22,0x2b,0x63,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x29,0x3b,0x62,0x2b,0x3d,0x5c,0x22,0x3a,0x5c,0x22,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x3d,0x4c,0x68,0x2b,0x2b,0x2c,0x62,0x3d,0x5c,0x22,0x3a,0x5c,0x22,0x2b,0x62,0x2b,0x5c,0x22,0x72,0x5c,0x22,0x2b,0x63,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x32,0x29,0x2b,0x5c,0x22,0x3a,0x5c,0x22,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x62,0x7d,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x50,0x68,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x73,0x69,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x24,0x68,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x71,0x69,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x69,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6f,0x69,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x74,0x69,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x57,0x68,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x6a,0x69,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x57,0x68,0x28,0x56,0x68,0x29,0x7d,0x2c,0x5c,0x6e,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x72,0x69,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x55,0x68,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x69,0x28,0x62,0x2c,0x4e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x61,0x29,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x57,0x68,0x28,0x56,0x68,0x29,0x5b,0x30,0x5d,0x2c,0x62,0x3d,0x55,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x61,0x2c,0x62,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x59,0x68,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x5a,0x68,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x77,0x69,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x2c,0x51,0x68,0x3d,0x7b,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x73,0x69,0x2c,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x65,0x68,0x2c,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x24,0x68,0x2c,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3a,0x71,0x69,0x2c,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x69,0x2c,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6f,0x69,0x2c,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3a,0x74,0x69,0x2c,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3a,0x58,0x68,0x2c,0x75,0x73,0x65,0x52,0x65,0x66,0x3a,0x6a,0x69,0x2c,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x68,0x28,0x56,0x68,0x29,0x7d,0x2c,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3a,0x72,0x69,0x2c,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x55,0x68,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x5c,0x6e,0x4e,0x3f,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x3a,0x75,0x69,0x28,0x62,0x2c,0x4e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x61,0x29,0x7d,0x2c,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x58,0x68,0x28,0x56,0x68,0x29,0x5b,0x30,0x5d,0x2c,0x62,0x3d,0x55,0x68,0x28,0x29,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5b,0x61,0x2c,0x62,0x5d,0x7d,0x2c,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x3a,0x59,0x68,0x2c,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3a,0x5a,0x68,0x2c,0x75,0x73,0x65,0x49,0x64,0x3a,0x77,0x69,0x2c,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x3a,0x21,0x31,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x61,0x26,0x26,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x7b,0x62,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x62,0x29,0x3b,0x61,0x3d,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x20,0x69,0x6e,0x20,0x61,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x5b,0x63,0x5d,0x26,0x26,0x28,0x62,0x5b,0x63,0x5d,0x3d,0x61,0x5b,0x63,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x62,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x63,0x3d,0x63,0x28,0x64,0x2c,0x62,0x29,0x3b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x63,0x3f,0x62,0x3a,0x41,0x28,0x7b,0x7d,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x63,0x3b,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x26,0x28,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x63,0x29,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x45,0x69,0x3d,0x7b,0x69,0x73,0x4d,0x6f,0x75,0x6e,0x74,0x65,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x28,0x61,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x29,0x3f,0x56,0x62,0x28,0x61,0x29,0x3d,0x3d,0x3d,0x61,0x3a,0x21,0x31,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x52,0x28,0x29,0x2c,0x65,0x3d,0x79,0x69,0x28,0x61,0x29,0x2c,0x66,0x3d,0x6d,0x68,0x28,0x64,0x2c,0x65,0x29,0x3b,0x66,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x62,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x63,0x29,0x3b,0x62,0x3d,0x6e,0x68,0x28,0x61,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x65,0x2c,0x64,0x29,0x2c,0x6f,0x68,0x28,0x62,0x2c,0x61,0x2c,0x65,0x29,0x29,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x52,0x28,0x29,0x2c,0x65,0x3d,0x79,0x69,0x28,0x61,0x29,0x2c,0x66,0x3d,0x6d,0x68,0x28,0x64,0x2c,0x65,0x29,0x3b,0x66,0x2e,0x74,0x61,0x67,0x3d,0x31,0x3b,0x66,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x62,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x63,0x29,0x3b,0x62,0x3d,0x6e,0x68,0x28,0x61,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x65,0x2c,0x64,0x29,0x2c,0x6f,0x68,0x28,0x62,0x2c,0x61,0x2c,0x65,0x29,0x29,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x52,0x28,0x29,0x2c,0x64,0x3d,0x5c,0x6e,0x79,0x69,0x28,0x61,0x29,0x2c,0x65,0x3d,0x6d,0x68,0x28,0x63,0x2c,0x64,0x29,0x3b,0x65,0x2e,0x74,0x61,0x67,0x3d,0x32,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x65,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x62,0x29,0x3b,0x62,0x3d,0x6e,0x68,0x28,0x61,0x2c,0x65,0x2c,0x64,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x64,0x2c,0x63,0x29,0x2c,0x6f,0x68,0x28,0x62,0x2c,0x61,0x2c,0x64,0x29,0x29,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2e,0x73,0x68,0x6f,0x75,0x6c,0x64,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x55,0x70,0x64,0x61,0x74,0x65,0x3f,0x61,0x2e,0x73,0x68,0x6f,0x75,0x6c,0x64,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x64,0x2c,0x66,0x2c,0x67,0x29,0x3a,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x26,0x26,0x62,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x69,0x73,0x50,0x75,0x72,0x65,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3f,0x21,0x49,0x65,0x28,0x63,0x2c,0x64,0x29,0x7c,0x7c,0x21,0x49,0x65,0x28,0x65,0x2c,0x66,0x29,0x3a,0x21,0x30,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x21,0x31,0x2c,0x65,0x3d,0x56,0x66,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x66,0x3d,0x65,0x68,0x28,0x66,0x29,0x3a,0x28,0x65,0x3d,0x5a,0x66,0x28,0x62,0x29,0x3f,0x58,0x66,0x3a,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x64,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x2c,0x66,0x3d,0x28,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x64,0x29,0x3f,0x59,0x66,0x28,0x61,0x2c,0x65,0x29,0x3a,0x56,0x66,0x29,0x3b,0x62,0x3d,0x6e,0x65,0x77,0x20,0x62,0x28,0x63,0x2c,0x66,0x29,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x3f,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x45,0x69,0x3b,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x62,0x3b,0x62,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3d,0x61,0x3b,0x64,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x61,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x65,0x2c,0x61,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x66,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x61,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x62,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x28,0x63,0x2c,0x64,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x62,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x28,0x63,0x2c,0x64,0x29,0x3b,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x21,0x3d,0x3d,0x61,0x26,0x26,0x45,0x69,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x62,0x2c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x65,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x63,0x3b,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x65,0x2e,0x72,0x65,0x66,0x73,0x3d,0x7b,0x7d,0x3b,0x6b,0x68,0x28,0x61,0x29,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x65,0x68,0x28,0x66,0x29,0x3a,0x28,0x66,0x3d,0x5a,0x66,0x28,0x62,0x29,0x3f,0x58,0x66,0x3a,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x59,0x66,0x28,0x61,0x2c,0x66,0x29,0x29,0x3b,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x66,0x3d,0x62,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x28,0x44,0x69,0x28,0x61,0x2c,0x62,0x2c,0x66,0x2c,0x63,0x29,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x28,0x62,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x5c,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x65,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x62,0x21,0x3d,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x45,0x69,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x65,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x71,0x68,0x28,0x61,0x2c,0x63,0x2c,0x65,0x2c,0x64,0x29,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x5c,0x22,0x5c,0x22,0x2c,0x64,0x3d,0x62,0x3b,0x64,0x6f,0x20,0x63,0x2b,0x3d,0x50,0x61,0x28,0x64,0x29,0x2c,0x64,0x3d,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x64,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x66,0x29,0x7b,0x65,0x3d,0x5c,0x22,0x5c,0x5c,0x6e,0x45,0x72,0x72,0x6f,0x72,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20,0x73,0x74,0x61,0x63,0x6b,0x3a,0x20,0x5c,0x22,0x2b,0x66,0x2e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2b,0x5c,0x22,0x5c,0x5c,0x6e,0x5c,0x22,0x2b,0x66,0x2e,0x73,0x74,0x61,0x63,0x6b,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x61,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x62,0x2c,0x73,0x74,0x61,0x63,0x6b,0x3a,0x65,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x61,0x2c,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x74,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x3f,0x63,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x3f,0x62,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x69,0x28,0x61,0x2c,0x62,0x29,0x7b,0x74,0x72,0x79,0x7b,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x63,0x3b,0x7d,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x4d,0x69,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x57,0x65,0x61,0x6b,0x4d,0x61,0x70,0x3f,0x57,0x65,0x61,0x6b,0x4d,0x61,0x70,0x3a,0x4d,0x61,0x70,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x63,0x3d,0x6d,0x68,0x28,0x2d,0x31,0x2c,0x63,0x29,0x3b,0x63,0x2e,0x74,0x61,0x67,0x3d,0x33,0x3b,0x63,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4f,0x69,0x7c,0x7c,0x28,0x4f,0x69,0x3d,0x21,0x30,0x2c,0x50,0x69,0x3d,0x64,0x29,0x3b,0x4c,0x69,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x63,0x3d,0x6d,0x68,0x28,0x2d,0x31,0x2c,0x63,0x29,0x3b,0x63,0x2e,0x74,0x61,0x67,0x3d,0x33,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x63,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x28,0x65,0x29,0x7d,0x3b,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4c,0x69,0x28,0x61,0x2c,0x62,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x63,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4c,0x69,0x28,0x61,0x2c,0x62,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x52,0x69,0x3f,0x52,0x69,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x28,0x5b,0x74,0x68,0x69,0x73,0x5d,0x29,0x3a,0x52,0x69,0x2e,0x61,0x64,0x64,0x28,0x74,0x68,0x69,0x73,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x73,0x74,0x61,0x63,0x6b,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x28,0x62,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x7b,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x53,0x74,0x61,0x63,0x6b,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x3a,0x5c,0x22,0x5c,0x22,0x7d,0x29,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x64,0x3d,0x61,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x69,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x3b,0x64,0x2e,0x73,0x65,0x74,0x28,0x62,0x2c,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x65,0x3d,0x64,0x2e,0x67,0x65,0x74,0x28,0x62,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x2c,0x64,0x2e,0x73,0x65,0x74,0x28,0x62,0x2c,0x65,0x29,0x29,0x3b,0x65,0x2e,0x68,0x61,0x73,0x28,0x63,0x29,0x7c,0x7c,0x28,0x65,0x2e,0x61,0x64,0x64,0x28,0x63,0x29,0x2c,0x61,0x3d,0x54,0x69,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x74,0x68,0x65,0x6e,0x28,0x61,0x2c,0x61,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x69,0x28,0x61,0x29,0x7b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x62,0x3b,0x69,0x66,0x28,0x62,0x3d,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x62,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3f,0x21,0x30,0x3a,0x21,0x31,0x3a,0x21,0x30,0x3b,0x69,0x66,0x28,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x3d,0x3d,0x62,0x3f,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x3a,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x33,0x31,0x30,0x37,0x32,0x2c,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x35,0x32,0x38,0x30,0x35,0x2c,0x31,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3f,0x63,0x2e,0x74,0x61,0x67,0x3d,0x31,0x37,0x3a,0x28,0x62,0x3d,0x6d,0x68,0x28,0x2d,0x31,0x2c,0x31,0x29,0x2c,0x62,0x2e,0x74,0x61,0x67,0x3d,0x32,0x2c,0x6e,0x68,0x28,0x63,0x2c,0x62,0x2c,0x31,0x29,0x29,0x29,0x2c,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x31,0x29,0x2c,0x61,0x3b,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x3b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x76,0x61,0x72,0x20,0x57,0x69,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x64,0x68,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x56,0x67,0x28,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x64,0x29,0x3a,0x55,0x67,0x28,0x62,0x2c,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x63,0x3d,0x63,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x72,0x65,0x66,0x3b,0x63,0x68,0x28,0x62,0x2c,0x65,0x29,0x3b,0x64,0x3d,0x4e,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x63,0x3d,0x53,0x68,0x28,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x21,0x64,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x30,0x35,0x33,0x2c,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x65,0x2c,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x3b,0x49,0x26,0x26,0x63,0x26,0x26,0x76,0x67,0x28,0x62,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x3b,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x26,0x26,0x21,0x61,0x6a,0x28,0x66,0x29,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x66,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x63,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x74,0x61,0x67,0x3d,0x31,0x35,0x2c,0x62,0x2e,0x74,0x79,0x70,0x65,0x3d,0x66,0x2c,0x62,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x66,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x61,0x3d,0x52,0x67,0x28,0x63,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x2c,0x62,0x2c,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x65,0x29,0x3b,0x61,0x2e,0x72,0x65,0x66,0x3d,0x62,0x2e,0x72,0x65,0x66,0x3b,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x61,0x7d,0x66,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x65,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x63,0x3d,0x63,0x2e,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x3b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x3a,0x49,0x65,0x3b,0x69,0x66,0x28,0x63,0x28,0x67,0x2c,0x64,0x29,0x26,0x26,0x61,0x2e,0x72,0x65,0x66,0x3d,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x3b,0x61,0x3d,0x50,0x67,0x28,0x66,0x2c,0x64,0x29,0x3b,0x61,0x2e,0x72,0x65,0x66,0x3d,0x62,0x2e,0x72,0x65,0x66,0x3b,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x69,0x66,0x28,0x49,0x65,0x28,0x66,0x2c,0x64,0x29,0x26,0x26,0x61,0x2e,0x72,0x65,0x66,0x3d,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x29,0x69,0x66,0x28,0x64,0x68,0x3d,0x21,0x31,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x64,0x3d,0x66,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x65,0x29,0x29,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x33,0x31,0x30,0x37,0x32,0x29,0x26,0x26,0x28,0x64,0x68,0x3d,0x21,0x30,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x47,0x28,0x65,0x6a,0x2c,0x66,0x6a,0x29,0x2c,0x66,0x6a,0x7c,0x3d,0x63,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x63,0x26,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x66,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x63,0x3a,0x63,0x2c,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x61,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x47,0x28,0x65,0x6a,0x2c,0x66,0x6a,0x29,0x2c,0x66,0x6a,0x7c,0x3d,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x30,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x66,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x63,0x3b,0x47,0x28,0x65,0x6a,0x2c,0x66,0x6a,0x29,0x3b,0x66,0x6a,0x7c,0x3d,0x64,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x66,0x3f,0x28,0x64,0x3d,0x66,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x63,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x64,0x3d,0x63,0x2c,0x47,0x28,0x65,0x6a,0x2c,0x66,0x6a,0x29,0x2c,0x66,0x6a,0x7c,0x3d,0x64,0x3b,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x61,0x2e,0x72,0x65,0x66,0x21,0x3d,0x3d,0x63,0x29,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x5a,0x66,0x28,0x63,0x29,0x3f,0x58,0x66,0x3a,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x66,0x3d,0x59,0x66,0x28,0x62,0x2c,0x66,0x29,0x3b,0x63,0x68,0x28,0x62,0x2c,0x65,0x29,0x3b,0x63,0x3d,0x4e,0x68,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x64,0x3d,0x53,0x68,0x28,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x21,0x64,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x30,0x35,0x33,0x2c,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x65,0x2c,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x3b,0x49,0x26,0x26,0x64,0x26,0x26,0x76,0x67,0x28,0x62,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x3b,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x5a,0x66,0x28,0x63,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x21,0x30,0x3b,0x63,0x67,0x28,0x62,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x3d,0x21,0x31,0x3b,0x63,0x68,0x28,0x62,0x2c,0x65,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x69,0x6a,0x28,0x61,0x2c,0x62,0x29,0x2c,0x47,0x69,0x28,0x62,0x2c,0x63,0x2c,0x64,0x29,0x2c,0x49,0x69,0x28,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x64,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x68,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x67,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x68,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x6c,0x3d,0x63,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x3f,0x6c,0x3d,0x65,0x68,0x28,0x6c,0x29,0x3a,0x28,0x6c,0x3d,0x5a,0x66,0x28,0x63,0x29,0x3f,0x58,0x66,0x3a,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x6c,0x3d,0x59,0x66,0x28,0x62,0x2c,0x6c,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x63,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x2c,0x71,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6d,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3b,0x71,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x5c,0x6e,0x28,0x68,0x21,0x3d,0x3d,0x64,0x7c,0x7c,0x6b,0x21,0x3d,0x3d,0x6c,0x29,0x26,0x26,0x48,0x69,0x28,0x62,0x2c,0x67,0x2c,0x64,0x2c,0x6c,0x29,0x3b,0x6a,0x68,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x67,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x72,0x3b,0x71,0x68,0x28,0x62,0x2c,0x64,0x2c,0x67,0x2c,0x65,0x29,0x3b,0x6b,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x68,0x21,0x3d,0x3d,0x64,0x7c,0x7c,0x72,0x21,0x3d,0x3d,0x6b,0x7c,0x7c,0x57,0x66,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7c,0x7c,0x6a,0x68,0x3f,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6d,0x26,0x26,0x28,0x44,0x69,0x28,0x62,0x2c,0x63,0x2c,0x6d,0x2c,0x64,0x29,0x2c,0x6b,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x28,0x68,0x3d,0x6a,0x68,0x7c,0x7c,0x46,0x69,0x28,0x62,0x2c,0x63,0x2c,0x68,0x2c,0x64,0x2c,0x72,0x2c,0x6b,0x2c,0x6c,0x29,0x29,0x3f,0x28,0x71,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x7c,0x7c,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x29,0x3a,0x5c,0x6e,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x64,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6b,0x29,0x2c,0x67,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x64,0x2c,0x67,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x6b,0x2c,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6c,0x2c,0x64,0x3d,0x68,0x29,0x3a,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x38,0x29,0x2c,0x64,0x3d,0x21,0x31,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x67,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6c,0x68,0x28,0x61,0x2c,0x62,0x29,0x3b,0x68,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x6c,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3f,0x68,0x3a,0x43,0x69,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x68,0x29,0x3b,0x67,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x6c,0x3b,0x71,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x72,0x3d,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x6b,0x3d,0x63,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x3f,0x6b,0x3d,0x65,0x68,0x28,0x6b,0x29,0x3a,0x28,0x6b,0x3d,0x5a,0x66,0x28,0x63,0x29,0x3f,0x58,0x66,0x3a,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x6b,0x3d,0x59,0x66,0x28,0x62,0x2c,0x6b,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x79,0x3d,0x63,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x3b,0x28,0x6d,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x79,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x7c,0x7c,0x5c,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x28,0x68,0x21,0x3d,0x3d,0x71,0x7c,0x7c,0x72,0x21,0x3d,0x3d,0x6b,0x29,0x26,0x26,0x48,0x69,0x28,0x62,0x2c,0x67,0x2c,0x64,0x2c,0x6b,0x29,0x3b,0x6a,0x68,0x3d,0x21,0x31,0x3b,0x72,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x67,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x72,0x3b,0x71,0x68,0x28,0x62,0x2c,0x64,0x2c,0x67,0x2c,0x65,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x68,0x21,0x3d,0x3d,0x71,0x7c,0x7c,0x72,0x21,0x3d,0x3d,0x6e,0x7c,0x7c,0x57,0x66,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7c,0x7c,0x6a,0x68,0x3f,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x79,0x26,0x26,0x28,0x44,0x69,0x28,0x62,0x2c,0x63,0x2c,0x79,0x2c,0x64,0x29,0x2c,0x6e,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x2c,0x28,0x6c,0x3d,0x6a,0x68,0x7c,0x7c,0x46,0x69,0x28,0x62,0x2c,0x63,0x2c,0x6c,0x2c,0x64,0x2c,0x72,0x2c,0x6e,0x2c,0x6b,0x29,0x7c,0x7c,0x21,0x31,0x29,0x3f,0x28,0x6d,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x64,0x2c,0x6e,0x2c,0x6b,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x5c,0x6e,0x67,0x2e,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x64,0x2c,0x6e,0x2c,0x6b,0x29,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x29,0x3a,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x68,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x72,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x68,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x72,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x64,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x29,0x2c,0x67,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x64,0x2c,0x67,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x6e,0x2c,0x67,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6b,0x2c,0x64,0x3d,0x6c,0x29,0x3a,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x68,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x72,0x3d,0x3d,0x3d,0x5c,0x6e,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x67,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x7c,0x7c,0x68,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x26,0x26,0x72,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x29,0x2c,0x64,0x3d,0x21,0x31,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6a,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x66,0x2c,0x65,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x29,0x7b,0x67,0x6a,0x28,0x61,0x2c,0x62,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x3b,0x69,0x66,0x28,0x21,0x64,0x26,0x26,0x21,0x67,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x26,0x26,0x64,0x67,0x28,0x62,0x2c,0x63,0x2c,0x21,0x31,0x29,0x2c,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x66,0x29,0x3b,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x57,0x69,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x62,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x67,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x64,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x28,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x67,0x3f,0x28,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x55,0x67,0x28,0x62,0x2c,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x55,0x67,0x28,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x2c,0x66,0x29,0x29,0x3a,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x68,0x2c,0x66,0x29,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x3b,0x65,0x26,0x26,0x64,0x67,0x28,0x62,0x2c,0x63,0x2c,0x21,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x6a,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3f,0x61,0x67,0x28,0x61,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x21,0x3d,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x3a,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x61,0x67,0x28,0x61,0x2c,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x21,0x31,0x29,0x3b,0x79,0x68,0x28,0x61,0x2c,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x49,0x67,0x28,0x29,0x3b,0x4a,0x67,0x28,0x65,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x3b,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x76,0x61,0x72,0x20,0x6d,0x6a,0x3d,0x7b,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3a,0x30,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x6a,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x61,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x66,0x3d,0x21,0x31,0x2c,0x67,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x2c,0x68,0x3b,0x28,0x68,0x3d,0x67,0x29,0x7c,0x7c,0x28,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x21,0x31,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x65,0x26,0x32,0x29,0x29,0x3b,0x69,0x66,0x28,0x68,0x29,0x66,0x3d,0x21,0x30,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x31,0x32,0x39,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x65,0x7c,0x3d,0x31,0x3b,0x47,0x28,0x4c,0x2c,0x65,0x26,0x31,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x45,0x67,0x28,0x62,0x29,0x3b,0x61,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x3f,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x3a,0x5c,0x22,0x24,0x21,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x2e,0x64,0x61,0x74,0x61,0x3f,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x38,0x3a,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x67,0x3d,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3b,0x61,0x3d,0x64,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x3f,0x28,0x64,0x3d,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x66,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x67,0x3d,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x67,0x7d,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x64,0x26,0x31,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x28,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x66,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x5c,0x6e,0x67,0x29,0x3a,0x66,0x3d,0x70,0x6a,0x28,0x67,0x2c,0x64,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x61,0x3d,0x54,0x67,0x28,0x61,0x2c,0x64,0x2c,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2c,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x61,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x66,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x6a,0x28,0x63,0x29,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6d,0x6a,0x2c,0x61,0x29,0x3a,0x71,0x6a,0x28,0x62,0x2c,0x67,0x29,0x7d,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x68,0x3d,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x64,0x2c,0x68,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x69,0x66,0x28,0x66,0x29,0x7b,0x66,0x3d,0x64,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x67,0x3d,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x3b,0x65,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x68,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x3b,0x30,0x3d,0x3d,0x3d,0x28,0x67,0x26,0x31,0x29,0x26,0x26,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x21,0x3d,0x3d,0x65,0x3f,0x28,0x64,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6b,0x2c,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x64,0x3d,0x50,0x67,0x28,0x65,0x2c,0x6b,0x29,0x2c,0x64,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x3f,0x66,0x3d,0x50,0x67,0x28,0x68,0x2c,0x66,0x29,0x3a,0x28,0x66,0x3d,0x54,0x67,0x28,0x66,0x2c,0x67,0x2c,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x29,0x3b,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x5c,0x6e,0x62,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x66,0x3b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x64,0x3b,0x64,0x3d,0x66,0x3b,0x66,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x67,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x3f,0x6e,0x6a,0x28,0x63,0x29,0x3a,0x7b,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x3a,0x67,0x2e,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x63,0x2c,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x67,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x7d,0x3b,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x67,0x3b,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x7e,0x63,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6d,0x6a,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x66,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x61,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x64,0x3d,0x50,0x67,0x28,0x66,0x2c,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x5c,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x29,0x3b,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x28,0x64,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x29,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x63,0x3d,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x5b,0x61,0x5d,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x36,0x29,0x3a,0x63,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x29,0x3b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x64,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x62,0x3d,0x70,0x6a,0x28,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x5c,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x62,0x7d,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x4a,0x67,0x28,0x64,0x29,0x3b,0x55,0x67,0x28,0x62,0x2c,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x29,0x3b,0x61,0x3d,0x71,0x6a,0x28,0x62,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x3b,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x29,0x7b,0x69,0x66,0x28,0x63,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x35,0x36,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x35,0x37,0x2c,0x64,0x3d,0x4b,0x69,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x32,0x29,0x29,0x29,0x2c,0x73,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x3d,0x64,0x2e,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x65,0x3d,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x3b,0x64,0x3d,0x70,0x6a,0x28,0x7b,0x6d,0x6f,0x64,0x65,0x3a,0x5c,0x22,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x5c,0x22,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x7d,0x2c,0x65,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x66,0x3d,0x54,0x67,0x28,0x66,0x2c,0x65,0x2c,0x67,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x3b,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x66,0x3b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x64,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x55,0x67,0x28,0x62,0x2c,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x67,0x29,0x3b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x6a,0x28,0x67,0x29,0x3b,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6d,0x6a,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x7d,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x24,0x21,0x5c,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x29,0x7b,0x64,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x26,0x26,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x64,0x61,0x74,0x61,0x73,0x65,0x74,0x3b,0x5c,0x6e,0x69,0x66,0x28,0x64,0x29,0x76,0x61,0x72,0x20,0x68,0x3d,0x64,0x2e,0x64,0x67,0x73,0x74,0x3b,0x64,0x3d,0x68,0x3b,0x66,0x3d,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x31,0x39,0x29,0x29,0x3b,0x64,0x3d,0x4b,0x69,0x28,0x66,0x2c,0x64,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x64,0x29,0x7d,0x68,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x67,0x26,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3b,0x69,0x66,0x28,0x64,0x68,0x7c,0x7c,0x68,0x29,0x7b,0x64,0x3d,0x51,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x67,0x26,0x2d,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x65,0x3d,0x32,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x65,0x3d,0x38,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x32,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x34,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x30,0x39,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x31,0x39,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x33,0x38,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x32,0x37,0x36,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x35,0x35,0x33,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x31,0x30,0x37,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x36,0x32,0x31,0x34,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x32,0x34,0x32,0x38,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x37,0x37,0x37,0x32,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x33,0x35,0x35,0x34,0x34,0x33,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x37,0x31,0x30,0x38,0x38,0x36,0x34,0x3a,0x65,0x3d,0x33,0x32,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x65,0x3d,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x36,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x30,0x7d,0x65,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x65,0x26,0x28,0x64,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x67,0x29,0x29,0x3f,0x30,0x3a,0x65,0x3b,0x5c,0x6e,0x30,0x21,0x3d,0x3d,0x65,0x26,0x26,0x65,0x21,0x3d,0x3d,0x66,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x26,0x26,0x28,0x66,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3d,0x65,0x2c,0x69,0x68,0x28,0x61,0x2c,0x65,0x29,0x2c,0x67,0x69,0x28,0x64,0x2c,0x61,0x2c,0x65,0x2c,0x2d,0x31,0x29,0x29,0x7d,0x74,0x6a,0x28,0x29,0x3b,0x64,0x3d,0x4b,0x69,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x31,0x29,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x64,0x29,0x7d,0x69,0x66,0x28,0x5c,0x22,0x24,0x3f,0x5c,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x64,0x61,0x74,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x62,0x3d,0x75,0x6a,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x2c,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x65,0x74,0x72,0x79,0x3d,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x66,0x2e,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x79,0x67,0x3d,0x4c,0x66,0x28,0x65,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x78,0x67,0x3d,0x62,0x3b,0x49,0x3d,0x21,0x30,0x3b,0x7a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x72,0x67,0x2c,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x73,0x67,0x2c,0x6f,0x67,0x5b,0x70,0x67,0x2b,0x2b,0x5d,0x3d,0x71,0x67,0x2c,0x72,0x67,0x3d,0x61,0x2e,0x69,0x64,0x2c,0x73,0x67,0x3d,0x61,0x2e,0x6f,0x76,0x65,0x72,0x66,0x6c,0x6f,0x77,0x2c,0x71,0x67,0x3d,0x62,0x29,0x3b,0x62,0x3d,0x71,0x6a,0x28,0x62,0x2c,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x30,0x39,0x36,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x64,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x29,0x3b,0x62,0x68,0x28,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x3f,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3a,0x62,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x30,0x2c,0x6c,0x61,0x73,0x74,0x3a,0x64,0x2c,0x74,0x61,0x69,0x6c,0x3a,0x63,0x2c,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x3a,0x65,0x7d,0x3a,0x28,0x66,0x2e,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3d,0x62,0x2c,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3d,0x30,0x2c,0x66,0x2e,0x6c,0x61,0x73,0x74,0x3d,0x64,0x2c,0x66,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x63,0x2c,0x66,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x3d,0x65,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x78,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x64,0x2e,0x72,0x65,0x76,0x65,0x61,0x6c,0x4f,0x72,0x64,0x65,0x72,0x2c,0x66,0x3d,0x64,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x63,0x29,0x3b,0x64,0x3d,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x64,0x26,0x32,0x29,0x29,0x64,0x3d,0x64,0x26,0x31,0x7c,0x32,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x61,0x3a,0x66,0x6f,0x72,0x28,0x61,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x76,0x6a,0x28,0x61,0x2c,0x63,0x2c,0x62,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x39,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x76,0x6a,0x28,0x61,0x2c,0x63,0x2c,0x62,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x61,0x3d,0x3d,0x3d,0x62,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x62,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x64,0x26,0x3d,0x31,0x7d,0x47,0x28,0x4c,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x73,0x5c,0x22,0x3a,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x61,0x3d,0x63,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x43,0x68,0x28,0x61,0x29,0x26,0x26,0x28,0x65,0x3d,0x63,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x63,0x3d,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x65,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x65,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x77,0x6a,0x28,0x62,0x2c,0x21,0x31,0x2c,0x65,0x2c,0x63,0x2c,0x66,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x5c,0x22,0x3a,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x66,0x6f,0x72,0x28,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x7b,0x61,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x43,0x68,0x28,0x61,0x29,0x29,0x7b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x61,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x63,0x3b,0x63,0x3d,0x65,0x3b,0x65,0x3d,0x61,0x7d,0x77,0x6a,0x28,0x62,0x2c,0x21,0x30,0x2c,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x6f,0x67,0x65,0x74,0x68,0x65,0x72,0x5c,0x22,0x3a,0x77,0x6a,0x28,0x62,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x62,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x61,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x29,0x3b,0x72,0x68,0x7c,0x3d,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x63,0x26,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x21,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x35,0x33,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x61,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x3d,0x50,0x67,0x28,0x61,0x2c,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x3b,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x63,0x3b,0x66,0x6f,0x72,0x28,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x50,0x67,0x28,0x61,0x2c,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x2c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x3b,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x6b,0x6a,0x28,0x62,0x29,0x3b,0x49,0x67,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x41,0x68,0x28,0x62,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x5a,0x66,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x63,0x67,0x28,0x62,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x79,0x68,0x28,0x62,0x2c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x65,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x47,0x28,0x57,0x67,0x2c,0x64,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x3b,0x64,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x64,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x28,0x4c,0x2c,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x26,0x31,0x29,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x63,0x26,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x47,0x28,0x4c,0x2c,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x26,0x31,0x29,0x3b,0x61,0x3d,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x47,0x28,0x4c,0x2c,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x26,0x31,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x64,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x63,0x26,0x5c,0x6e,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x7b,0x69,0x66,0x28,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x78,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x7d,0x65,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x47,0x28,0x4c,0x2c,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x64,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x64,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x76,0x61,0x72,0x20,0x7a,0x6a,0x2c,0x41,0x6a,0x2c,0x42,0x6a,0x2c,0x43,0x6a,0x3b,0x5c,0x6e,0x7a,0x6a,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x29,0x61,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x63,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x63,0x3b,0x63,0x3d,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x63,0x3d,0x3d,0x3d,0x62,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x62,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x63,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x3b,0x41,0x6a,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x3b,0x5c,0x6e,0x42,0x6a,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x69,0x66,0x28,0x65,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x61,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x78,0x68,0x28,0x75,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x65,0x3d,0x59,0x61,0x28,0x61,0x2c,0x65,0x29,0x3b,0x64,0x3d,0x59,0x61,0x28,0x61,0x2c,0x64,0x29,0x3b,0x66,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x65,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x65,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x3b,0x64,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x64,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x3b,0x66,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x65,0x3d,0x67,0x62,0x28,0x61,0x2c,0x65,0x29,0x3b,0x64,0x3d,0x67,0x62,0x28,0x61,0x2c,0x64,0x29,0x3b,0x66,0x3d,0x5b,0x5d,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x61,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x42,0x66,0x29,0x7d,0x75,0x62,0x28,0x63,0x2c,0x64,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x65,0x29,0x69,0x66,0x28,0x21,0x64,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x26,0x26,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x5b,0x6c,0x5d,0x29,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x65,0x5b,0x6c,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x67,0x20,0x69,0x6e,0x20,0x68,0x29,0x68,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x26,0x26,0x5c,0x6e,0x28,0x63,0x7c,0x7c,0x28,0x63,0x3d,0x7b,0x7d,0x29,0x2c,0x63,0x5b,0x67,0x5d,0x3d,0x5c,0x22,0x5c,0x22,0x29,0x7d,0x65,0x6c,0x73,0x65,0x5c,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x5c,0x22,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x65,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x3f,0x66,0x7c,0x7c,0x28,0x66,0x3d,0x5b,0x5d,0x29,0x3a,0x28,0x66,0x3d,0x66,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x3b,0x66,0x6f,0x72,0x28,0x6c,0x20,0x69,0x6e,0x20,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x64,0x5b,0x6c,0x5d,0x3b,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x3f,0x65,0x5b,0x6c,0x5d,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x69,0x66,0x28,0x64,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x26,0x26,0x6b,0x21,0x3d,0x3d,0x68,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x68,0x29,0x29,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x6c,0x29,0x69,0x66,0x28,0x68,0x29,0x7b,0x66,0x6f,0x72,0x28,0x67,0x20,0x69,0x6e,0x20,0x68,0x29,0x21,0x68,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x7c,0x7c,0x6b,0x26,0x26,0x6b,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x7c,0x7c,0x28,0x63,0x7c,0x7c,0x28,0x63,0x3d,0x7b,0x7d,0x29,0x2c,0x63,0x5b,0x67,0x5d,0x3d,0x5c,0x22,0x5c,0x22,0x29,0x3b,0x66,0x6f,0x72,0x28,0x67,0x20,0x69,0x6e,0x20,0x6b,0x29,0x6b,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x26,0x26,0x68,0x5b,0x67,0x5d,0x21,0x3d,0x3d,0x6b,0x5b,0x67,0x5d,0x26,0x26,0x28,0x63,0x7c,0x7c,0x28,0x63,0x3d,0x7b,0x7d,0x29,0x2c,0x63,0x5b,0x67,0x5d,0x3d,0x6b,0x5b,0x67,0x5d,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x7c,0x7c,0x28,0x66,0x7c,0x7c,0x28,0x66,0x3d,0x5b,0x5d,0x29,0x2c,0x66,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x2c,0x5c,0x6e,0x63,0x29,0x29,0x2c,0x63,0x3d,0x6b,0x3b,0x65,0x6c,0x73,0x65,0x5c,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x5c,0x22,0x3d,0x3d,0x3d,0x6c,0x3f,0x28,0x6b,0x3d,0x6b,0x3f,0x6b,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x68,0x3d,0x68,0x3f,0x68,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x68,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x28,0x66,0x3d,0x66,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x2c,0x6b,0x29,0x29,0x3a,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x6c,0x3f,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x26,0x26,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x7c,0x7c,0x28,0x66,0x3d,0x66,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x6b,0x29,0x3a,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x6c,0x26,0x26,0x28,0x65,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6c,0x29,0x3f,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x5c,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x6c,0x26,0x26,0x44,0x28,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x2c,0x61,0x29,0x2c,0x66,0x7c,0x7c,0x68,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x28,0x66,0x3d,0x5b,0x5d,0x29,0x29,0x3a,0x28,0x66,0x3d,0x66,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x6c,0x2c,0x6b,0x29,0x29,0x7d,0x63,0x26,0x26,0x28,0x66,0x3d,0x66,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x5c,0x22,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x2c,0x63,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x66,0x3b,0x69,0x66,0x28,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6c,0x29,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x7d,0x7d,0x3b,0x43,0x6a,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x63,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x21,0x49,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x3a,0x62,0x3d,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x63,0x3d,0x62,0x29,0x2c,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x63,0x6f,0x6c,0x6c,0x61,0x70,0x73,0x65,0x64,0x5c,0x22,0x3a,0x63,0x3d,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x28,0x64,0x3d,0x63,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x64,0x3f,0x62,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3f,0x61,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x2e,0x74,0x61,0x69,0x6c,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x64,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x63,0x3d,0x30,0x2c,0x64,0x3d,0x30,0x3b,0x69,0x66,0x28,0x62,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x63,0x7c,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x64,0x7c,0x3d,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x2c,0x64,0x7c,0x3d,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x65,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x3b,0x29,0x63,0x7c,0x3d,0x65,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x64,0x7c,0x3d,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x2c,0x64,0x7c,0x3d,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x65,0x3d,0x65,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x61,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x64,0x3b,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x77,0x67,0x28,0x62,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x66,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x24,0x66,0x28,0x29,0x2c,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x7a,0x68,0x28,0x29,0x3b,0x45,0x28,0x57,0x66,0x29,0x3b,0x45,0x28,0x48,0x29,0x3b,0x45,0x68,0x28,0x29,0x3b,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x26,0x26,0x28,0x64,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2c,0x64,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x47,0x67,0x28,0x62,0x29,0x3f,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x35,0x36,0x29,0x7c,0x7c,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x30,0x32,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x7a,0x67,0x26,0x26,0x28,0x46,0x6a,0x28,0x7a,0x67,0x29,0x2c,0x7a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x29,0x3b,0x41,0x6a,0x28,0x61,0x2c,0x62,0x29,0x3b,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x42,0x68,0x28,0x62,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x78,0x68,0x28,0x77,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x5c,0x6e,0x63,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x42,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x61,0x2e,0x72,0x65,0x66,0x21,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x36,0x29,0x29,0x3b,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x61,0x3d,0x78,0x68,0x28,0x75,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x47,0x67,0x28,0x62,0x29,0x29,0x7b,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x63,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x64,0x5b,0x4f,0x66,0x5d,0x3d,0x62,0x3b,0x64,0x5b,0x50,0x66,0x5d,0x3d,0x66,0x3b,0x61,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x69,0x61,0x6c,0x6f,0x67,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x44,0x28,0x5c,0x22,0x63,0x6c,0x6f,0x73,0x65,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x66,0x72,0x61,0x6d,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x65,0x6d,0x62,0x65,0x64,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x76,0x69,0x64,0x65,0x6f,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x75,0x64,0x69,0x6f,0x5c,0x22,0x3a,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x6c,0x66,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x44,0x28,0x6c,0x66,0x5b,0x65,0x5d,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x65,0x72,0x72,0x6f,0x72,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x61,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6c,0x69,0x6e,0x6b,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x65,0x72,0x72,0x6f,0x72,0x5c,0x22,0x2c,0x5c,0x6e,0x64,0x29,0x3b,0x44,0x28,0x5c,0x22,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x65,0x74,0x61,0x69,0x6c,0x73,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x5a,0x61,0x28,0x64,0x2c,0x66,0x29,0x3b,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x64,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3a,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x7d,0x3b,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x68,0x62,0x28,0x64,0x2c,0x66,0x29,0x2c,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x64,0x29,0x7d,0x75,0x62,0x28,0x63,0x2c,0x66,0x29,0x3b,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x67,0x20,0x69,0x6e,0x20,0x66,0x29,0x69,0x66,0x28,0x66,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x66,0x5b,0x67,0x5d,0x3b,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x67,0x3f,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x68,0x3f,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x68,0x26,0x26,0x28,0x21,0x30,0x21,0x3d,0x3d,0x66,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x41,0x66,0x28,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x68,0x2c,0x61,0x29,0x2c,0x65,0x3d,0x5b,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x2c,0x68,0x5d,0x29,0x3a,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x68,0x26,0x26,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x21,0x3d,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x68,0x26,0x26,0x28,0x21,0x30,0x21,0x3d,0x3d,0x66,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x41,0x66,0x28,0x64,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2c,0x5c,0x6e,0x68,0x2c,0x61,0x29,0x2c,0x65,0x3d,0x5b,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x68,0x5d,0x29,0x3a,0x65,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x67,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x68,0x26,0x26,0x5c,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x67,0x26,0x26,0x44,0x28,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x2c,0x64,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x56,0x61,0x28,0x64,0x29,0x3b,0x64,0x62,0x28,0x64,0x2c,0x66,0x2c,0x21,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x56,0x61,0x28,0x64,0x29,0x3b,0x6a,0x62,0x28,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x64,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x42,0x66,0x29,0x7d,0x64,0x3d,0x65,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x67,0x3d,0x39,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x65,0x3a,0x65,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x3b,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x61,0x3d,0x6b,0x62,0x28,0x63,0x29,0x29,0x3b,0x5c,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x78,0x68,0x74,0x6d,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x61,0x3f,0x5c,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x61,0x3d,0x67,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x5c,0x22,0x64,0x69,0x76,0x5c,0x22,0x29,0x2c,0x61,0x2e,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x3d,0x5c,0x22,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x5c,0x5c,0x78,0x33,0x63,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x5c,0x22,0x2c,0x61,0x3d,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x29,0x3a,0x5c,0x6e,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x69,0x73,0x3f,0x61,0x3d,0x67,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x63,0x2c,0x7b,0x69,0x73,0x3a,0x64,0x2e,0x69,0x73,0x7d,0x29,0x3a,0x28,0x61,0x3d,0x67,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x63,0x29,0x2c,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x67,0x3d,0x61,0x2c,0x64,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3f,0x67,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x30,0x3a,0x64,0x2e,0x73,0x69,0x7a,0x65,0x26,0x26,0x28,0x67,0x2e,0x73,0x69,0x7a,0x65,0x3d,0x64,0x2e,0x73,0x69,0x7a,0x65,0x29,0x29,0x29,0x3a,0x61,0x3d,0x67,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x4e,0x53,0x28,0x61,0x2c,0x63,0x29,0x3b,0x61,0x5b,0x4f,0x66,0x5d,0x3d,0x62,0x3b,0x61,0x5b,0x50,0x66,0x5d,0x3d,0x64,0x3b,0x7a,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x21,0x31,0x2c,0x21,0x31,0x29,0x3b,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x61,0x3b,0x61,0x3a,0x7b,0x67,0x3d,0x76,0x62,0x28,0x63,0x2c,0x64,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x69,0x61,0x6c,0x6f,0x67,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x44,0x28,0x5c,0x22,0x63,0x6c,0x6f,0x73,0x65,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x66,0x72,0x61,0x6d,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x65,0x6d,0x62,0x65,0x64,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x76,0x69,0x64,0x65,0x6f,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x61,0x75,0x64,0x69,0x6f,0x5c,0x22,0x3a,0x66,0x6f,0x72,0x28,0x65,0x3d,0x30,0x3b,0x65,0x3c,0x6c,0x66,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x65,0x2b,0x2b,0x29,0x44,0x28,0x6c,0x66,0x5b,0x65,0x5d,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x65,0x72,0x72,0x6f,0x72,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x61,0x67,0x65,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6c,0x69,0x6e,0x6b,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x65,0x72,0x72,0x6f,0x72,0x5c,0x22,0x2c,0x5c,0x6e,0x61,0x29,0x3b,0x44,0x28,0x5c,0x22,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x64,0x65,0x74,0x61,0x69,0x6c,0x73,0x5c,0x22,0x3a,0x44,0x28,0x5c,0x22,0x74,0x6f,0x67,0x67,0x6c,0x65,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x5a,0x61,0x28,0x61,0x2c,0x64,0x29,0x3b,0x65,0x3d,0x59,0x61,0x28,0x61,0x2c,0x64,0x29,0x3b,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3a,0x65,0x3d,0x64,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x61,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3a,0x21,0x21,0x64,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x7d,0x3b,0x65,0x3d,0x41,0x28,0x7b,0x7d,0x2c,0x64,0x2c,0x7b,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x7d,0x29,0x3b,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x68,0x62,0x28,0x61,0x2c,0x64,0x29,0x3b,0x65,0x3d,0x67,0x62,0x28,0x61,0x2c,0x64,0x29,0x3b,0x44,0x28,0x5c,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x5c,0x22,0x2c,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x64,0x7d,0x75,0x62,0x28,0x63,0x2c,0x65,0x29,0x3b,0x68,0x3d,0x65,0x3b,0x66,0x6f,0x72,0x28,0x66,0x20,0x69,0x6e,0x20,0x68,0x29,0x69,0x66,0x28,0x68,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x66,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x68,0x5b,0x66,0x5d,0x3b,0x5c,0x22,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x73,0x62,0x28,0x61,0x2c,0x6b,0x29,0x3a,0x5c,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x28,0x6b,0x3d,0x6b,0x3f,0x6b,0x2e,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x6e,0x62,0x28,0x61,0x2c,0x6b,0x29,0x29,0x3a,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x3f,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x3f,0x28,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x21,0x3d,0x3d,0x5c,0x6e,0x63,0x7c,0x7c,0x5c,0x22,0x5c,0x22,0x21,0x3d,0x3d,0x6b,0x29,0x26,0x26,0x6f,0x62,0x28,0x61,0x2c,0x6b,0x29,0x3a,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x26,0x26,0x6f,0x62,0x28,0x61,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x6b,0x29,0x3a,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x66,0x26,0x26,0x5c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x66,0x26,0x26,0x5c,0x22,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x5c,0x22,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x65,0x61,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x66,0x29,0x3f,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x5c,0x22,0x6f,0x6e,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x44,0x28,0x5c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5c,0x22,0x2c,0x61,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x6b,0x26,0x26,0x74,0x61,0x28,0x61,0x2c,0x66,0x2c,0x6b,0x2c,0x67,0x29,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x56,0x61,0x28,0x61,0x29,0x3b,0x64,0x62,0x28,0x61,0x2c,0x64,0x2c,0x21,0x31,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x56,0x61,0x28,0x61,0x29,0x3b,0x6a,0x62,0x28,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x61,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x76,0x61,0x6c,0x75,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x5c,0x22,0x2b,0x53,0x61,0x28,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x61,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x21,0x64,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3b,0x66,0x3d,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x3f,0x66,0x62,0x28,0x61,0x2c,0x21,0x21,0x64,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x66,0x2c,0x21,0x31,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x64,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x26,0x26,0x66,0x62,0x28,0x61,0x2c,0x21,0x21,0x64,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x64,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x5c,0x6e,0x21,0x30,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x26,0x26,0x28,0x61,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x42,0x66,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x64,0x3d,0x21,0x21,0x64,0x2e,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x67,0x5c,0x22,0x3a,0x64,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x64,0x3d,0x21,0x31,0x7d,0x7d,0x64,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x35,0x31,0x32,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x30,0x39,0x37,0x31,0x35,0x32,0x29,0x7d,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x69,0x66,0x28,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x43,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x64,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x36,0x29,0x29,0x3b,0x63,0x3d,0x78,0x68,0x28,0x77,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x78,0x68,0x28,0x75,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x69,0x66,0x28,0x47,0x67,0x28,0x62,0x29,0x29,0x7b,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x63,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x64,0x5b,0x4f,0x66,0x5d,0x3d,0x62,0x3b,0x69,0x66,0x28,0x66,0x3d,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x21,0x3d,0x3d,0x63,0x29,0x69,0x66,0x28,0x61,0x3d,0x5c,0x6e,0x78,0x67,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x41,0x66,0x28,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2c,0x63,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x21,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x26,0x26,0x41,0x66,0x28,0x64,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2c,0x63,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x7d,0x66,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x64,0x3d,0x28,0x39,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x63,0x3a,0x63,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x54,0x65,0x78,0x74,0x4e,0x6f,0x64,0x65,0x28,0x64,0x29,0x2c,0x64,0x5b,0x4f,0x66,0x5d,0x3d,0x62,0x2c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x64,0x7d,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x45,0x28,0x4c,0x29,0x3b,0x64,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x49,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x79,0x67,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x48,0x67,0x28,0x29,0x2c,0x49,0x67,0x28,0x29,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x39,0x38,0x35,0x36,0x30,0x2c,0x66,0x3d,0x21,0x31,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x66,0x3d,0x47,0x67,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x5c,0x6e,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x66,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x38,0x29,0x29,0x3b,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x66,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x21,0x66,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x37,0x29,0x29,0x3b,0x66,0x5b,0x4f,0x66,0x5d,0x3d,0x62,0x7d,0x65,0x6c,0x73,0x65,0x20,0x49,0x67,0x28,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x26,0x26,0x28,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x3b,0x53,0x28,0x62,0x29,0x3b,0x66,0x3d,0x21,0x31,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x7a,0x67,0x26,0x26,0x28,0x46,0x6a,0x28,0x7a,0x67,0x29,0x2c,0x7a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x2c,0x66,0x3d,0x21,0x30,0x3b,0x69,0x66,0x28,0x21,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x36,0x35,0x35,0x33,0x36,0x3f,0x62,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x2c,0x62,0x3b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x3b,0x64,0x21,0x3d,0x3d,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x26,0x26,0x64,0x26,0x26,0x28,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x26,0x31,0x29,0x3f,0x30,0x3d,0x3d,0x3d,0x54,0x26,0x26,0x28,0x54,0x3d,0x33,0x29,0x3a,0x74,0x6a,0x28,0x29,0x29,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x3b,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x68,0x28,0x29,0x2c,0x5c,0x6e,0x41,0x6a,0x28,0x61,0x2c,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x73,0x66,0x28,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x2c,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x68,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x2c,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x66,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x24,0x66,0x28,0x29,0x2c,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x45,0x28,0x4c,0x29,0x3b,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x3b,0x67,0x3d,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x29,0x69,0x66,0x28,0x64,0x29,0x44,0x6a,0x28,0x66,0x2c,0x21,0x31,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x54,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x7b,0x67,0x3d,0x43,0x68,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x29,0x7b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x3b,0x44,0x6a,0x28,0x66,0x2c,0x21,0x31,0x29,0x3b,0x64,0x3d,0x67,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x64,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x3b,0x62,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x3b,0x64,0x3d,0x63,0x3b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x66,0x3d,0x63,0x2c,0x61,0x3d,0x64,0x2c,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x36,0x2c,0x5c,0x6e,0x67,0x3d,0x66,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x3f,0x28,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x2c,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x61,0x2c,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3a,0x28,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x67,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x67,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x67,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x66,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x66,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x67,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x67,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x66,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x67,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x66,0x2e,0x74,0x79,0x70,0x65,0x3d,0x67,0x2e,0x74,0x79,0x70,0x65,0x2c,0x61,0x3d,0x67,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x2c,0x66,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x47,0x28,0x4c,0x2c,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x26,0x31,0x7c,0x32,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x61,0x3d,0x5c,0x6e,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x69,0x6c,0x26,0x26,0x42,0x28,0x29,0x3e,0x47,0x6a,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x64,0x3d,0x21,0x30,0x2c,0x44,0x6a,0x28,0x66,0x2c,0x21,0x31,0x29,0x2c,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x21,0x64,0x29,0x69,0x66,0x28,0x61,0x3d,0x43,0x68,0x28,0x67,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x64,0x3d,0x21,0x30,0x2c,0x63,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x63,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x34,0x29,0x2c,0x44,0x6a,0x28,0x66,0x2c,0x21,0x30,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x69,0x6c,0x26,0x26,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x26,0x26,0x21,0x67,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x21,0x49,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x7d,0x65,0x6c,0x73,0x65,0x20,0x32,0x2a,0x42,0x28,0x29,0x2d,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3e,0x47,0x6a,0x26,0x26,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x32,0x38,0x2c,0x64,0x3d,0x21,0x30,0x2c,0x44,0x6a,0x28,0x66,0x2c,0x21,0x31,0x29,0x2c,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x3b,0x66,0x2e,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x3f,0x28,0x67,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x67,0x29,0x3a,0x28,0x63,0x3d,0x66,0x2e,0x6c,0x61,0x73,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x67,0x3a,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x67,0x2c,0x66,0x2e,0x6c,0x61,0x73,0x74,0x3d,0x67,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x69,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3d,0x66,0x2e,0x74,0x61,0x69,0x6c,0x2c,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x3d,0x5c,0x6e,0x62,0x2c,0x66,0x2e,0x74,0x61,0x69,0x6c,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x66,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3d,0x42,0x28,0x29,0x2c,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x3d,0x4c,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x47,0x28,0x4c,0x2c,0x64,0x3f,0x63,0x26,0x31,0x7c,0x32,0x3a,0x63,0x26,0x31,0x29,0x2c,0x62,0x3b,0x53,0x28,0x62,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x6a,0x28,0x29,0x2c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x29,0x2c,0x64,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x3f,0x30,0x21,0x3d,0x3d,0x28,0x66,0x6a,0x26,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x34,0x29,0x26,0x26,0x28,0x53,0x28,0x62,0x29,0x2c,0x62,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x36,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x38,0x31,0x39,0x32,0x29,0x29,0x3a,0x53,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x35,0x36,0x2c,0x62,0x2e,0x74,0x61,0x67,0x29,0x29,0x3b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x77,0x67,0x28,0x62,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x66,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x26,0x26,0x24,0x66,0x28,0x29,0x2c,0x61,0x3d,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x61,0x26,0x36,0x35,0x35,0x33,0x36,0x3f,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x26,0x2d,0x36,0x35,0x35,0x33,0x37,0x7c,0x31,0x32,0x38,0x2c,0x62,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x68,0x28,0x29,0x2c,0x45,0x28,0x57,0x66,0x29,0x2c,0x45,0x28,0x48,0x29,0x2c,0x45,0x68,0x28,0x29,0x2c,0x61,0x3d,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x61,0x26,0x36,0x35,0x35,0x33,0x36,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x26,0x31,0x32,0x38,0x29,0x3f,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x26,0x2d,0x36,0x35,0x35,0x33,0x37,0x7c,0x31,0x32,0x38,0x2c,0x62,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x42,0x68,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x45,0x28,0x4c,0x29,0x3b,0x61,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x30,0x29,0x29,0x3b,0x49,0x67,0x28,0x29,0x7d,0x61,0x3d,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x26,0x36,0x35,0x35,0x33,0x36,0x3f,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x26,0x2d,0x36,0x35,0x35,0x33,0x37,0x7c,0x31,0x32,0x38,0x2c,0x62,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x45,0x28,0x4c,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7a,0x68,0x28,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x68,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x48,0x6a,0x28,0x29,0x2c,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x76,0x61,0x72,0x20,0x4a,0x6a,0x3d,0x21,0x31,0x2c,0x55,0x3d,0x21,0x31,0x2c,0x4b,0x6a,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x57,0x65,0x61,0x6b,0x53,0x65,0x74,0x3f,0x57,0x65,0x61,0x6b,0x53,0x65,0x74,0x3a,0x53,0x65,0x74,0x2c,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x29,0x74,0x72,0x79,0x7b,0x63,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x64,0x29,0x7b,0x57,0x28,0x61,0x2c,0x62,0x2c,0x64,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x74,0x72,0x79,0x7b,0x63,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x64,0x29,0x7b,0x57,0x28,0x61,0x2c,0x62,0x2c,0x64,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x4e,0x6a,0x3d,0x21,0x31,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x43,0x66,0x3d,0x64,0x64,0x3b,0x61,0x3d,0x4d,0x65,0x28,0x29,0x3b,0x69,0x66,0x28,0x4e,0x65,0x28,0x61,0x29,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x69,0x6e,0x20,0x61,0x29,0x76,0x61,0x72,0x20,0x63,0x3d,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x61,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x65,0x6e,0x64,0x3a,0x61,0x2e,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x7d,0x3b,0x65,0x6c,0x73,0x65,0x20,0x61,0x3a,0x7b,0x63,0x3d,0x28,0x63,0x3d,0x61,0x2e,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x29,0x26,0x26,0x63,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x7c,0x7c,0x77,0x69,0x6e,0x64,0x6f,0x77,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x26,0x26,0x63,0x2e,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x3b,0x69,0x66,0x28,0x64,0x26,0x26,0x30,0x21,0x3d,0x3d,0x64,0x2e,0x72,0x61,0x6e,0x67,0x65,0x43,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x63,0x3d,0x64,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2e,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x66,0x3d,0x64,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x3b,0x64,0x3d,0x64,0x2e,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x3b,0x74,0x72,0x79,0x7b,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x2c,0x66,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x46,0x29,0x7b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x76,0x61,0x72,0x20,0x67,0x3d,0x30,0x2c,0x68,0x3d,0x2d,0x31,0x2c,0x6b,0x3d,0x2d,0x31,0x2c,0x6c,0x3d,0x30,0x2c,0x6d,0x3d,0x30,0x2c,0x71,0x3d,0x61,0x2c,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x79,0x3b,0x3b,0x29,0x7b,0x71,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x65,0x26,0x26,0x33,0x21,0x3d,0x3d,0x71,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x28,0x68,0x3d,0x67,0x2b,0x65,0x29,0x3b,0x71,0x21,0x3d,0x3d,0x66,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x64,0x26,0x26,0x33,0x21,0x3d,0x3d,0x71,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x28,0x6b,0x3d,0x67,0x2b,0x64,0x29,0x3b,0x33,0x3d,0x3d,0x3d,0x71,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x28,0x67,0x2b,0x3d,0x5c,0x6e,0x71,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x28,0x79,0x3d,0x71,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x72,0x3d,0x71,0x3b,0x71,0x3d,0x79,0x7d,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x71,0x3d,0x3d,0x3d,0x61,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x3b,0x72,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x2b,0x2b,0x6c,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x28,0x68,0x3d,0x67,0x29,0x3b,0x72,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x2b,0x2b,0x6d,0x3d,0x3d,0x3d,0x64,0x26,0x26,0x28,0x6b,0x3d,0x67,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x28,0x79,0x3d,0x71,0x2e,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x71,0x3d,0x72,0x3b,0x72,0x3d,0x71,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x7d,0x71,0x3d,0x79,0x7d,0x63,0x3d,0x2d,0x31,0x3d,0x3d,0x3d,0x68,0x7c,0x7c,0x2d,0x31,0x3d,0x3d,0x3d,0x6b,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x68,0x2c,0x65,0x6e,0x64,0x3a,0x6b,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x63,0x3d,0x63,0x7c,0x7c,0x7b,0x73,0x74,0x61,0x72,0x74,0x3a,0x30,0x2c,0x65,0x6e,0x64,0x3a,0x30,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x44,0x66,0x3d,0x7b,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x45,0x6c,0x65,0x6d,0x3a,0x61,0x2c,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x52,0x61,0x6e,0x67,0x65,0x3a,0x63,0x7d,0x3b,0x64,0x64,0x3d,0x21,0x31,0x3b,0x66,0x6f,0x72,0x28,0x56,0x3d,0x62,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x69,0x66,0x28,0x62,0x3d,0x56,0x2c,0x61,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x30,0x32,0x38,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2c,0x56,0x3d,0x61,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x62,0x3d,0x56,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x30,0x32,0x34,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x5c,0x6e,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x4a,0x3d,0x6e,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x78,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x77,0x3d,0x78,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3f,0x74,0x3a,0x43,0x69,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x29,0x2c,0x4a,0x29,0x3b,0x78,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x77,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x75,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x31,0x3d,0x3d,0x3d,0x75,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x75,0x2e,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x5c,0x22,0x5c,0x22,0x3a,0x39,0x3d,0x3d,0x3d,0x75,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x75,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x26,0x26,0x75,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x75,0x2e,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x33,0x29,0x29,0x3b,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x46,0x29,0x7b,0x57,0x28,0x62,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x46,0x29,0x7d,0x61,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x61,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x56,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6e,0x3d,0x4e,0x6a,0x3b,0x4e,0x6a,0x3d,0x21,0x31,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x3f,0x64,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x3d,0x64,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x69,0x66,0x28,0x28,0x65,0x2e,0x74,0x61,0x67,0x26,0x61,0x29,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x65,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3b,0x65,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x66,0x26,0x26,0x4d,0x6a,0x28,0x62,0x2c,0x63,0x2c,0x66,0x29,0x7d,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x21,0x3d,0x3d,0x64,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x6a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x62,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x62,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x62,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x3d,0x62,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x69,0x66,0x28,0x28,0x63,0x2e,0x74,0x61,0x67,0x26,0x61,0x29,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x3b,0x63,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3d,0x64,0x28,0x29,0x7d,0x63,0x3d,0x63,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x63,0x21,0x3d,0x3d,0x62,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x6a,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x72,0x65,0x66,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x61,0x3d,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x61,0x3d,0x63,0x7d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x3f,0x62,0x28,0x61,0x29,0x3a,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x61,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x6a,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x53,0x6a,0x28,0x62,0x29,0x29,0x3b,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x35,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x28,0x62,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x4f,0x66,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x50,0x66,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x6f,0x66,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x51,0x66,0x5d,0x2c,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x62,0x5b,0x52,0x66,0x5d,0x29,0x29,0x3b,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x6a,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x35,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x6a,0x28,0x61,0x29,0x7b,0x61,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x54,0x6a,0x28,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x35,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x36,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x31,0x38,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x29,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x61,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7c,0x7c,0x34,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x61,0x3b,0x65,0x6c,0x73,0x65,0x20,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x61,0x2c,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x69,0x66,0x28,0x21,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x64,0x29,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x62,0x3f,0x38,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x63,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x61,0x2c,0x62,0x29,0x3a,0x63,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x61,0x2c,0x62,0x29,0x3a,0x28,0x38,0x3d,0x3d,0x3d,0x63,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x28,0x62,0x3d,0x63,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2c,0x62,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x61,0x2c,0x63,0x29,0x29,0x3a,0x28,0x62,0x3d,0x63,0x2c,0x62,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x61,0x29,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x7c,0x7c,0x28,0x62,0x2e,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x42,0x66,0x29,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x29,0x66,0x6f,0x72,0x28,0x56,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x56,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x64,0x7c,0x7c,0x36,0x3d,0x3d,0x3d,0x64,0x29,0x61,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x62,0x3f,0x63,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x28,0x61,0x2c,0x62,0x29,0x3a,0x63,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x61,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x34,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x61,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x29,0x66,0x6f,0x72,0x28,0x57,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3b,0x29,0x57,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x61,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x76,0x61,0x72,0x20,0x58,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x58,0x6a,0x3d,0x21,0x31,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x5a,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x6c,0x63,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x63,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x74,0x72,0x79,0x7b,0x6c,0x63,0x2e,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x6b,0x63,0x2c,0x63,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x68,0x29,0x7b,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x63,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x55,0x7c,0x7c,0x4c,0x6a,0x28,0x63,0x2c,0x62,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x58,0x2c,0x65,0x3d,0x58,0x6a,0x3b,0x58,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x58,0x3d,0x64,0x3b,0x58,0x6a,0x3d,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x58,0x26,0x26,0x28,0x58,0x6a,0x3f,0x28,0x61,0x3d,0x58,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x63,0x29,0x3a,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x63,0x29,0x29,0x3a,0x58,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x38,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x58,0x26,0x26,0x28,0x58,0x6a,0x3f,0x28,0x61,0x3d,0x58,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x4b,0x66,0x28,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2c,0x63,0x29,0x3a,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x4b,0x66,0x28,0x61,0x2c,0x63,0x29,0x2c,0x62,0x64,0x28,0x61,0x29,0x29,0x3a,0x4b,0x66,0x28,0x58,0x2c,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x64,0x3d,0x58,0x3b,0x65,0x3d,0x58,0x6a,0x3b,0x58,0x3d,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x58,0x6a,0x3d,0x21,0x30,0x3b,0x5c,0x6e,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x58,0x3d,0x64,0x3b,0x58,0x6a,0x3d,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x69,0x66,0x28,0x21,0x55,0x26,0x26,0x28,0x64,0x3d,0x63,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x64,0x3d,0x64,0x2e,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x29,0x29,0x7b,0x65,0x3d,0x64,0x3d,0x64,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x65,0x2c,0x67,0x3d,0x66,0x2e,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x3b,0x66,0x3d,0x66,0x2e,0x74,0x61,0x67,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x67,0x26,0x26,0x28,0x30,0x21,0x3d,0x3d,0x28,0x66,0x26,0x32,0x29,0x3f,0x4d,0x6a,0x28,0x63,0x2c,0x62,0x2c,0x67,0x29,0x3a,0x30,0x21,0x3d,0x3d,0x28,0x66,0x26,0x34,0x29,0x26,0x26,0x4d,0x6a,0x28,0x63,0x2c,0x62,0x2c,0x67,0x29,0x29,0x3b,0x65,0x3d,0x65,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x65,0x21,0x3d,0x3d,0x64,0x29,0x7d,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x21,0x55,0x26,0x26,0x28,0x4c,0x6a,0x28,0x63,0x2c,0x62,0x29,0x2c,0x64,0x3d,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x74,0x72,0x79,0x7b,0x64,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x68,0x29,0x7b,0x57,0x28,0x63,0x2c,0x62,0x2c,0x68,0x29,0x7d,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x3f,0x28,0x55,0x3d,0x28,0x64,0x3d,0x55,0x29,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x55,0x3d,0x64,0x29,0x3a,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x59,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6b,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x65,0x77,0x20,0x4b,0x6a,0x29,0x3b,0x62,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x29,0x3b,0x63,0x2e,0x68,0x61,0x73,0x28,0x62,0x29,0x7c,0x7c,0x28,0x63,0x2e,0x61,0x64,0x64,0x28,0x62,0x29,0x2c,0x62,0x2e,0x74,0x68,0x65,0x6e,0x28,0x64,0x2c,0x64,0x29,0x29,0x7d,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x3b,0x64,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x64,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x5b,0x64,0x5d,0x3b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2c,0x67,0x3d,0x62,0x2c,0x68,0x3d,0x67,0x3b,0x61,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x3b,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x68,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x58,0x3d,0x68,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x58,0x6a,0x3d,0x21,0x31,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x58,0x3d,0x68,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x58,0x6a,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x58,0x3d,0x68,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x58,0x6a,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x68,0x3d,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x58,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x30,0x29,0x29,0x3b,0x5a,0x6a,0x28,0x66,0x2c,0x67,0x2c,0x65,0x29,0x3b,0x58,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x58,0x6a,0x3d,0x21,0x31,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x28,0x6b,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x65,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6c,0x29,0x7b,0x57,0x28,0x65,0x2c,0x62,0x2c,0x6c,0x29,0x7d,0x7d,0x69,0x66,0x28,0x62,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x35,0x34,0x29,0x66,0x6f,0x72,0x28,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x64,0x6b,0x28,0x62,0x2c,0x61,0x29,0x2c,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x64,0x3d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x64,0x26,0x34,0x29,0x7b,0x74,0x72,0x79,0x7b,0x50,0x6a,0x28,0x33,0x2c,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x2c,0x51,0x6a,0x28,0x33,0x2c,0x61,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x74,0x72,0x79,0x7b,0x50,0x6a,0x28,0x35,0x2c,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x64,0x26,0x35,0x31,0x32,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x4c,0x6a,0x28,0x63,0x2c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x64,0x26,0x35,0x31,0x32,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x4c,0x6a,0x28,0x63,0x2c,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x69,0x66,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x33,0x32,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x74,0x72,0x79,0x7b,0x6f,0x62,0x28,0x65,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x69,0x66,0x28,0x64,0x26,0x34,0x26,0x26,0x28,0x65,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x65,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x66,0x2c,0x68,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6b,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x5c,0x6e,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x29,0x74,0x72,0x79,0x7b,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x68,0x26,0x26,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x2e,0x6e,0x61,0x6d,0x65,0x26,0x26,0x61,0x62,0x28,0x65,0x2c,0x66,0x29,0x3b,0x76,0x62,0x28,0x68,0x2c,0x67,0x29,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x76,0x62,0x28,0x68,0x2c,0x66,0x29,0x3b,0x66,0x6f,0x72,0x28,0x67,0x3d,0x30,0x3b,0x67,0x3c,0x6b,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x67,0x2b,0x3d,0x32,0x29,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6b,0x5b,0x67,0x5d,0x2c,0x71,0x3d,0x6b,0x5b,0x67,0x2b,0x31,0x5d,0x3b,0x5c,0x22,0x73,0x74,0x79,0x6c,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x6d,0x3f,0x73,0x62,0x28,0x65,0x2c,0x71,0x29,0x3a,0x5c,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x5c,0x22,0x3d,0x3d,0x3d,0x6d,0x3f,0x6e,0x62,0x28,0x65,0x2c,0x71,0x29,0x3a,0x5c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x6d,0x3f,0x6f,0x62,0x28,0x65,0x2c,0x71,0x29,0x3a,0x74,0x61,0x28,0x65,0x2c,0x6d,0x2c,0x71,0x2c,0x6c,0x29,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x68,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x62,0x62,0x28,0x65,0x2c,0x66,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x69,0x62,0x28,0x65,0x2c,0x66,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x76,0x61,0x72,0x20,0x72,0x3d,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3b,0x65,0x2e,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x2e,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3d,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3b,0x76,0x61,0x72,0x20,0x79,0x3d,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x79,0x3f,0x66,0x62,0x28,0x65,0x2c,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x79,0x2c,0x21,0x31,0x29,0x3a,0x72,0x21,0x3d,0x3d,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x66,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3f,0x66,0x62,0x28,0x65,0x2c,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x5c,0x6e,0x66,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x2c,0x21,0x30,0x29,0x3a,0x66,0x62,0x28,0x65,0x2c,0x21,0x21,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x66,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x3f,0x5b,0x5d,0x3a,0x5c,0x22,0x5c,0x22,0x2c,0x21,0x31,0x29,0x29,0x7d,0x65,0x5b,0x50,0x66,0x5d,0x3d,0x66,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x64,0x26,0x34,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x32,0x29,0x29,0x3b,0x65,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x66,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x74,0x72,0x79,0x7b,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x66,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x64,0x26,0x34,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x74,0x72,0x79,0x7b,0x62,0x64,0x28,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x65,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x65,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x38,0x31,0x39,0x32,0x26,0x26,0x28,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3d,0x66,0x2c,0x21,0x66,0x7c,0x7c,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x66,0x6b,0x3d,0x42,0x28,0x29,0x29,0x29,0x3b,0x64,0x26,0x34,0x26,0x26,0x61,0x6b,0x28,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x3f,0x28,0x55,0x3d,0x28,0x6c,0x3d,0x55,0x29,0x7c,0x7c,0x6d,0x2c,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x2c,0x55,0x3d,0x6c,0x29,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x64,0x26,0x38,0x31,0x39,0x32,0x29,0x7b,0x6c,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x28,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3d,0x6c,0x29,0x26,0x26,0x21,0x6d,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x66,0x6f,0x72,0x28,0x56,0x3d,0x61,0x2c,0x6d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x3b,0x29,0x7b,0x66,0x6f,0x72,0x28,0x71,0x3d,0x56,0x3d,0x6d,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x72,0x3d,0x56,0x3b,0x79,0x3d,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x72,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x50,0x6a,0x28,0x34,0x2c,0x72,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x4c,0x6a,0x28,0x72,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x72,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x64,0x3d,0x72,0x3b,0x63,0x3d,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x62,0x3d,0x64,0x2c,0x6e,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x5c,0x6e,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x2e,0x73,0x74,0x61,0x74,0x65,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x6e,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x64,0x2c,0x63,0x2c,0x74,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x4c,0x6a,0x28,0x72,0x2c,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7b,0x67,0x6b,0x28,0x71,0x29,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x79,0x3f,0x28,0x79,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x72,0x2c,0x56,0x3d,0x79,0x29,0x3a,0x67,0x6b,0x28,0x71,0x29,0x7d,0x6d,0x3d,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x61,0x3a,0x66,0x6f,0x72,0x28,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x71,0x3d,0x61,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x35,0x3d,0x3d,0x3d,0x71,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x29,0x7b,0x6d,0x3d,0x71,0x3b,0x74,0x72,0x79,0x7b,0x65,0x3d,0x71,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6c,0x3f,0x28,0x66,0x3d,0x65,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x3f,0x66,0x2e,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x5c,0x22,0x2c,0x5c,0x22,0x6e,0x6f,0x6e,0x65,0x5c,0x22,0x2c,0x5c,0x22,0x69,0x6d,0x70,0x6f,0x72,0x74,0x61,0x6e,0x74,0x5c,0x22,0x29,0x3a,0x66,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3d,0x5c,0x22,0x6e,0x6f,0x6e,0x65,0x5c,0x22,0x29,0x3a,0x28,0x68,0x3d,0x71,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x6b,0x3d,0x71,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2c,0x67,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x6b,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x5c,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x5c,0x22,0x29,0x3f,0x6b,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x2e,0x73,0x74,0x79,0x6c,0x65,0x2e,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x3d,0x5c,0x6e,0x72,0x62,0x28,0x5c,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x5c,0x22,0x2c,0x67,0x29,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x71,0x2e,0x74,0x61,0x67,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x29,0x74,0x72,0x79,0x7b,0x71,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x3d,0x6c,0x3f,0x5c,0x22,0x5c,0x22,0x3a,0x71,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x74,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x74,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x28,0x32,0x32,0x21,0x3d,0x3d,0x71,0x2e,0x74,0x61,0x67,0x26,0x26,0x32,0x33,0x21,0x3d,0x3d,0x71,0x2e,0x74,0x61,0x67,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x71,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x71,0x3d,0x3d,0x3d,0x61,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x71,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x7b,0x71,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x71,0x3b,0x71,0x3d,0x71,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x69,0x66,0x28,0x71,0x3d,0x3d,0x3d,0x61,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x71,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x71,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x71,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x61,0x29,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x6d,0x3d,0x3d,0x3d,0x71,0x26,0x26,0x28,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x71,0x3d,0x71,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x6d,0x3d,0x3d,0x3d,0x71,0x26,0x26,0x28,0x6d,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x71,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x71,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x71,0x3d,0x71,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x61,0x29,0x3b,0x65,0x6b,0x28,0x61,0x29,0x3b,0x64,0x26,0x34,0x26,0x26,0x61,0x6b,0x28,0x61,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x63,0x6b,0x28,0x62,0x2c,0x5c,0x6e,0x61,0x29,0x2c,0x65,0x6b,0x28,0x61,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x6b,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3b,0x69,0x66,0x28,0x62,0x26,0x32,0x29,0x7b,0x74,0x72,0x79,0x7b,0x61,0x3a,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x7b,0x69,0x66,0x28,0x54,0x6a,0x28,0x63,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x63,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x30,0x29,0x29,0x3b,0x7d,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x64,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x33,0x32,0x26,0x26,0x28,0x6f,0x62,0x28,0x65,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x2c,0x64,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x33,0x33,0x29,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x55,0x6a,0x28,0x61,0x29,0x3b,0x57,0x6a,0x28,0x61,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x76,0x61,0x72,0x20,0x67,0x3d,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x68,0x3d,0x55,0x6a,0x28,0x61,0x29,0x3b,0x56,0x6a,0x28,0x61,0x2c,0x68,0x2c,0x67,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x31,0x29,0x29,0x3b,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x61,0x2c,0x61,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6b,0x29,0x7d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x33,0x7d,0x62,0x26,0x34,0x30,0x39,0x36,0x26,0x26,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x34,0x30,0x39,0x37,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x56,0x3d,0x61,0x3b,0x69,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x56,0x2c,0x66,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x32,0x32,0x3d,0x3d,0x3d,0x65,0x2e,0x74,0x61,0x67,0x26,0x26,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x4a,0x6a,0x3b,0x69,0x66,0x28,0x21,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x65,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x55,0x3b,0x68,0x3d,0x4a,0x6a,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x55,0x3b,0x4a,0x6a,0x3d,0x67,0x3b,0x69,0x66,0x28,0x28,0x55,0x3d,0x6b,0x29,0x26,0x26,0x21,0x6c,0x29,0x66,0x6f,0x72,0x28,0x56,0x3d,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x67,0x3d,0x56,0x2c,0x6b,0x3d,0x67,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x32,0x32,0x3d,0x3d,0x3d,0x67,0x2e,0x74,0x61,0x67,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3f,0x6a,0x6b,0x28,0x65,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x3f,0x28,0x6b,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x67,0x2c,0x56,0x3d,0x6b,0x29,0x3a,0x6a,0x6b,0x28,0x65,0x29,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3b,0x29,0x56,0x3d,0x66,0x2c,0x69,0x6b,0x28,0x66,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x66,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x56,0x3d,0x65,0x3b,0x4a,0x6a,0x3d,0x68,0x3b,0x55,0x3d,0x6c,0x7d,0x6b,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x30,0x21,0x3d,0x3d,0x28,0x65,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x38,0x37,0x37,0x32,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3f,0x28,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x65,0x2c,0x56,0x3d,0x66,0x29,0x3a,0x6b,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x6b,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x56,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x38,0x37,0x37,0x32,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x38,0x37,0x37,0x32,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x55,0x7c,0x7c,0x51,0x6a,0x28,0x35,0x2c,0x62,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x34,0x26,0x26,0x21,0x55,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3f,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x43,0x69,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x29,0x3b,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x65,0x2c,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x64,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x29,0x7d,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x73,0x68,0x28,0x62,0x2c,0x66,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x67,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x29,0x7b,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x63,0x3d,0x5c,0x6e,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x73,0x68,0x28,0x62,0x2c,0x67,0x2c,0x63,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x68,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x34,0x29,0x7b,0x63,0x3d,0x68,0x3b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x6b,0x2e,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x26,0x26,0x63,0x2e,0x66,0x6f,0x63,0x75,0x73,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6d,0x67,0x5c,0x22,0x3a,0x6b,0x2e,0x73,0x72,0x63,0x26,0x26,0x28,0x63,0x2e,0x73,0x72,0x63,0x3d,0x6b,0x2e,0x73,0x72,0x63,0x29,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6c,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x29,0x7b,0x76,0x61,0x72,0x20,0x71,0x3d,0x6d,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x71,0x26,0x26,0x62,0x64,0x28,0x71,0x29,0x7d,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x35,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x5c,0x6e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x36,0x33,0x29,0x29,0x3b,0x7d,0x55,0x7c,0x7c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x35,0x31,0x32,0x26,0x26,0x52,0x6a,0x28,0x62,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x72,0x29,0x7b,0x57,0x28,0x62,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x72,0x29,0x7d,0x7d,0x69,0x66,0x28,0x62,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x63,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x56,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x6b,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x56,0x3b,0x69,0x66,0x28,0x62,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x56,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x6b,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x56,0x3b,0x74,0x72,0x79,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x51,0x6a,0x28,0x34,0x2c,0x62,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x62,0x2c,0x63,0x2c,0x6b,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x28,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x62,0x2c,0x65,0x2c,0x6b,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x66,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x52,0x6a,0x28,0x62,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x62,0x2c,0x66,0x2c,0x6b,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x76,0x61,0x72,0x20,0x67,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x52,0x6a,0x28,0x62,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x62,0x2c,0x67,0x2c,0x6b,0x29,0x7d,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x57,0x28,0x62,0x2c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6b,0x29,0x7d,0x69,0x66,0x28,0x62,0x3d,0x3d,0x3d,0x61,0x29,0x7b,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x76,0x61,0x72,0x20,0x68,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x68,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x56,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x6c,0x6b,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x63,0x65,0x69,0x6c,0x2c,0x6d,0x6b,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x6e,0x6b,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x6f,0x6b,0x3d,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x4b,0x3d,0x30,0x2c,0x51,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x59,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x3d,0x30,0x2c,0x66,0x6a,0x3d,0x30,0x2c,0x65,0x6a,0x3d,0x55,0x66,0x28,0x30,0x29,0x2c,0x54,0x3d,0x30,0x2c,0x70,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x68,0x3d,0x30,0x2c,0x71,0x6b,0x3d,0x30,0x2c,0x72,0x6b,0x3d,0x30,0x2c,0x73,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x66,0x6b,0x3d,0x30,0x2c,0x47,0x6a,0x3d,0x49,0x6e,0x66,0x69,0x6e,0x69,0x74,0x79,0x2c,0x75,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4f,0x69,0x3d,0x21,0x31,0x2c,0x50,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x52,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x76,0x6b,0x3d,0x21,0x31,0x2c,0x77,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x78,0x6b,0x3d,0x30,0x2c,0x79,0x6b,0x3d,0x30,0x2c,0x7a,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x41,0x6b,0x3d,0x2d,0x31,0x2c,0x42,0x6b,0x3d,0x30,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x3f,0x42,0x28,0x29,0x3a,0x2d,0x31,0x21,0x3d,0x3d,0x41,0x6b,0x3f,0x41,0x6b,0x3a,0x41,0x6b,0x3d,0x42,0x28,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x79,0x69,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x32,0x29,0x26,0x26,0x30,0x21,0x3d,0x3d,0x5a,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5a,0x26,0x2d,0x5a,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4b,0x67,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x42,0x6b,0x26,0x26,0x28,0x42,0x6b,0x3d,0x79,0x63,0x28,0x29,0x29,0x2c,0x42,0x6b,0x3b,0x61,0x3d,0x43,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x61,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x65,0x76,0x65,0x6e,0x74,0x3b,0x61,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x3f,0x31,0x36,0x3a,0x6a,0x64,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x35,0x30,0x3c,0x79,0x6b,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x79,0x6b,0x3d,0x30,0x2c,0x7a,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x35,0x29,0x29,0x3b,0x41,0x63,0x28,0x61,0x2c,0x63,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x32,0x29,0x7c,0x7c,0x61,0x21,0x3d,0x3d,0x51,0x29,0x61,0x3d,0x3d,0x3d,0x51,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x32,0x29,0x26,0x26,0x28,0x71,0x6b,0x7c,0x3d,0x63,0x29,0x2c,0x34,0x3d,0x3d,0x3d,0x54,0x26,0x26,0x43,0x6b,0x28,0x61,0x2c,0x5a,0x29,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x64,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x4b,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x28,0x47,0x6a,0x3d,0x42,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x66,0x67,0x26,0x26,0x6a,0x67,0x28,0x29,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3b,0x77,0x63,0x28,0x61,0x2c,0x62,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x75,0x63,0x28,0x61,0x2c,0x61,0x3d,0x3d,0x3d,0x51,0x3f,0x5a,0x3a,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x64,0x29,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x62,0x63,0x28,0x63,0x29,0x2c,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x62,0x3d,0x64,0x26,0x2d,0x64,0x2c,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x62,0x63,0x28,0x63,0x29,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x62,0x29,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x3f,0x69,0x67,0x28,0x45,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x29,0x3a,0x68,0x67,0x28,0x45,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x29,0x2c,0x4a,0x66,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x26,0x26,0x6a,0x67,0x28,0x29,0x7d,0x29,0x2c,0x63,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x44,0x63,0x28,0x64,0x29,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x3d,0x66,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x3d,0x67,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x63,0x3d,0x68,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x33,0x36,0x38,0x37,0x30,0x39,0x31,0x32,0x3a,0x63,0x3d,0x6a,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x63,0x3d,0x68,0x63,0x7d,0x63,0x3d,0x46,0x6b,0x28,0x63,0x2c,0x47,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x29,0x7d,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x62,0x3b,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x63,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x41,0x6b,0x3d,0x2d,0x31,0x3b,0x42,0x6b,0x3d,0x30,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x48,0x6b,0x28,0x29,0x26,0x26,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x21,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x75,0x63,0x28,0x61,0x2c,0x61,0x3d,0x3d,0x3d,0x51,0x3f,0x5a,0x3a,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x64,0x26,0x33,0x30,0x29,0x7c,0x7c,0x30,0x21,0x3d,0x3d,0x28,0x64,0x26,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x29,0x7c,0x7c,0x62,0x29,0x62,0x3d,0x49,0x6b,0x28,0x61,0x2c,0x64,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x62,0x3d,0x64,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x4a,0x6b,0x28,0x29,0x3b,0x69,0x66,0x28,0x51,0x21,0x3d,0x3d,0x61,0x7c,0x7c,0x5a,0x21,0x3d,0x3d,0x62,0x29,0x75,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x47,0x6a,0x3d,0x42,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x4b,0x6b,0x28,0x61,0x2c,0x62,0x29,0x3b,0x64,0x6f,0x20,0x74,0x72,0x79,0x7b,0x4c,0x6b,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x68,0x29,0x7b,0x4d,0x6b,0x28,0x61,0x2c,0x68,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x29,0x3b,0x24,0x67,0x28,0x29,0x3b,0x6d,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x66,0x3b,0x4b,0x3d,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x3f,0x62,0x3d,0x30,0x3a,0x28,0x51,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x3d,0x30,0x2c,0x62,0x3d,0x54,0x29,0x7d,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x32,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x65,0x3d,0x78,0x63,0x28,0x61,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x64,0x3d,0x65,0x2c,0x62,0x3d,0x4e,0x6b,0x28,0x61,0x2c,0x65,0x29,0x29,0x29,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x63,0x3d,0x70,0x6b,0x2c,0x4b,0x6b,0x28,0x61,0x2c,0x30,0x29,0x2c,0x43,0x6b,0x28,0x61,0x2c,0x64,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x2c,0x63,0x3b,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x62,0x29,0x43,0x6b,0x28,0x61,0x2c,0x64,0x29,0x3b,0x5c,0x6e,0x65,0x6c,0x73,0x65,0x7b,0x65,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x64,0x26,0x33,0x30,0x29,0x26,0x26,0x21,0x4f,0x6b,0x28,0x65,0x29,0x26,0x26,0x28,0x62,0x3d,0x49,0x6b,0x28,0x61,0x2c,0x64,0x29,0x2c,0x32,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x66,0x3d,0x78,0x63,0x28,0x61,0x29,0x2c,0x30,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x64,0x3d,0x66,0x2c,0x62,0x3d,0x4e,0x6b,0x28,0x61,0x2c,0x66,0x29,0x29,0x29,0x2c,0x31,0x3d,0x3d,0x3d,0x62,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x63,0x3d,0x70,0x6b,0x2c,0x4b,0x6b,0x28,0x61,0x2c,0x30,0x29,0x2c,0x43,0x6b,0x28,0x61,0x2c,0x64,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x2c,0x63,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x65,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x64,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x35,0x29,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x50,0x6b,0x28,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x43,0x6b,0x28,0x61,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x28,0x64,0x26,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x29,0x3d,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x3d,0x66,0x6b,0x2b,0x35,0x30,0x30,0x2d,0x42,0x28,0x29,0x2c,0x31,0x30,0x3c,0x62,0x29,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x75,0x63,0x28,0x61,0x2c,0x30,0x29,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x65,0x3d,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x28,0x65,0x26,0x64,0x29,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x52,0x28,0x29,0x3b,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x61,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x46,0x66,0x28,0x50,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x2c,0x62,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x50,0x6b,0x28,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x43,0x6b,0x28,0x61,0x2c,0x64,0x29,0x3b,0x69,0x66,0x28,0x28,0x64,0x26,0x34,0x31,0x39,0x34,0x32,0x34,0x30,0x29,0x3d,0x3d,0x3d,0x5c,0x6e,0x64,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x62,0x3d,0x61,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3b,0x66,0x6f,0x72,0x28,0x65,0x3d,0x2d,0x31,0x3b,0x30,0x3c,0x64,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x64,0x29,0x3b,0x66,0x3d,0x31,0x3c,0x3c,0x67,0x3b,0x67,0x3d,0x62,0x5b,0x67,0x5d,0x3b,0x67,0x3e,0x65,0x26,0x26,0x28,0x65,0x3d,0x67,0x29,0x3b,0x64,0x26,0x3d,0x7e,0x66,0x7d,0x64,0x3d,0x65,0x3b,0x64,0x3d,0x42,0x28,0x29,0x2d,0x64,0x3b,0x64,0x3d,0x28,0x31,0x32,0x30,0x3e,0x64,0x3f,0x31,0x32,0x30,0x3a,0x34,0x38,0x30,0x3e,0x64,0x3f,0x34,0x38,0x30,0x3a,0x31,0x30,0x38,0x30,0x3e,0x64,0x3f,0x31,0x30,0x38,0x30,0x3a,0x31,0x39,0x32,0x30,0x3e,0x64,0x3f,0x31,0x39,0x32,0x30,0x3a,0x33,0x45,0x33,0x3e,0x64,0x3f,0x33,0x45,0x33,0x3a,0x34,0x33,0x32,0x30,0x3e,0x64,0x3f,0x34,0x33,0x32,0x30,0x3a,0x31,0x39,0x36,0x30,0x2a,0x6c,0x6b,0x28,0x64,0x2f,0x31,0x39,0x36,0x30,0x29,0x29,0x2d,0x64,0x3b,0x69,0x66,0x28,0x31,0x30,0x3c,0x64,0x29,0x7b,0x61,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x46,0x66,0x28,0x50,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x2c,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x50,0x6b,0x28,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x50,0x6b,0x28,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x32,0x39,0x29,0x29,0x3b,0x7d,0x7d,0x7d,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x3d,0x3d,0x63,0x3f,0x47,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x73,0x6b,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x26,0x26,0x28,0x4b,0x6b,0x28,0x61,0x2c,0x62,0x29,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x29,0x3b,0x61,0x3d,0x49,0x6b,0x28,0x61,0x2c,0x62,0x29,0x3b,0x32,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x62,0x3d,0x74,0x6b,0x2c,0x74,0x6b,0x3d,0x63,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x46,0x6a,0x28,0x62,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x6a,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x74,0x6b,0x3f,0x74,0x6b,0x3d,0x61,0x3a,0x74,0x6b,0x2e,0x70,0x75,0x73,0x68,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x6b,0x2c,0x61,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x6b,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x3b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x36,0x33,0x38,0x34,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x63,0x3d,0x63,0x2e,0x73,0x74,0x6f,0x72,0x65,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x3b,0x64,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x64,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x63,0x5b,0x64,0x5d,0x2c,0x66,0x3d,0x65,0x2e,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x3b,0x65,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x21,0x48,0x65,0x28,0x66,0x28,0x29,0x2c,0x65,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x67,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x7d,0x7d,0x63,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x62,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x36,0x33,0x38,0x34,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2c,0x62,0x3d,0x63,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x62,0x3d,0x3d,0x3d,0x61,0x29,0x62,0x72,0x65,0x61,0x6b,0x3b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7c,0x7c,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x3b,0x62,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x30,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x62,0x26,0x3d,0x7e,0x72,0x6b,0x3b,0x62,0x26,0x3d,0x7e,0x71,0x6b,0x3b,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x3d,0x7e,0x62,0x3b,0x66,0x6f,0x72,0x28,0x61,0x3d,0x61,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3b,0x30,0x3c,0x62,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x33,0x31,0x2d,0x6f,0x63,0x28,0x62,0x29,0x2c,0x64,0x3d,0x31,0x3c,0x3c,0x63,0x3b,0x61,0x5b,0x63,0x5d,0x3d,0x2d,0x31,0x3b,0x62,0x26,0x3d,0x7e,0x64,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x6b,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x48,0x6b,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x75,0x63,0x28,0x61,0x2c,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x31,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x49,0x6b,0x28,0x61,0x2c,0x62,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x32,0x3d,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x78,0x63,0x28,0x61,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x3d,0x64,0x2c,0x63,0x3d,0x4e,0x6b,0x28,0x61,0x2c,0x64,0x29,0x29,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x63,0x3d,0x70,0x6b,0x2c,0x4b,0x6b,0x28,0x61,0x2c,0x30,0x29,0x2c,0x43,0x6b,0x28,0x61,0x2c,0x62,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x2c,0x63,0x3b,0x69,0x66,0x28,0x36,0x3d,0x3d,0x3d,0x63,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x35,0x29,0x29,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x62,0x3b,0x50,0x6b,0x28,0x61,0x2c,0x74,0x6b,0x2c,0x75,0x6b,0x29,0x3b,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x31,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x62,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x4b,0x3d,0x63,0x2c,0x30,0x3d,0x3d,0x3d,0x4b,0x26,0x26,0x28,0x47,0x6a,0x3d,0x42,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x66,0x67,0x26,0x26,0x6a,0x67,0x28,0x29,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x6b,0x28,0x61,0x29,0x7b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x77,0x6b,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x77,0x6b,0x2e,0x74,0x61,0x67,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x26,0x26,0x48,0x6b,0x28,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x64,0x3d,0x43,0x3b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x3d,0x31,0x2c,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x64,0x2c,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x63,0x2c,0x4b,0x3d,0x62,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x26,0x26,0x6a,0x67,0x28,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x6a,0x28,0x29,0x7b,0x66,0x6a,0x3d,0x65,0x6a,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x45,0x28,0x65,0x6a,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3b,0x2d,0x31,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x61,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x2d,0x31,0x2c,0x47,0x66,0x28,0x63,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x29,0x66,0x6f,0x72,0x28,0x63,0x3d,0x59,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x3b,0x77,0x67,0x28,0x64,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x64,0x3d,0x64,0x2e,0x74,0x79,0x70,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x64,0x26,0x26,0x24,0x66,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x7a,0x68,0x28,0x29,0x3b,0x45,0x28,0x57,0x66,0x29,0x3b,0x45,0x28,0x48,0x29,0x3b,0x45,0x68,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x42,0x68,0x28,0x64,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x7a,0x68,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x45,0x28,0x4c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x45,0x28,0x4c,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x61,0x68,0x28,0x64,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x33,0x3a,0x48,0x6a,0x28,0x29,0x7d,0x63,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x51,0x3d,0x61,0x3b,0x59,0x3d,0x61,0x3d,0x50,0x67,0x28,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x5a,0x3d,0x66,0x6a,0x3d,0x62,0x3b,0x54,0x3d,0x30,0x3b,0x70,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x6b,0x3d,0x71,0x6b,0x3d,0x72,0x68,0x3d,0x30,0x3b,0x74,0x6b,0x3d,0x73,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x68,0x29,0x7b,0x66,0x6f,0x72,0x28,0x62,0x3d,0x5c,0x6e,0x30,0x3b,0x62,0x3c,0x66,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x62,0x2b,0x2b,0x29,0x69,0x66,0x28,0x63,0x3d,0x66,0x68,0x5b,0x62,0x5d,0x2c,0x64,0x3d,0x63,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x29,0x7b,0x63,0x2e,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x66,0x3d,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3b,0x66,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x65,0x3b,0x64,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x67,0x7d,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x64,0x7d,0x66,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x59,0x3b,0x74,0x72,0x79,0x7b,0x24,0x67,0x28,0x29,0x3b,0x46,0x68,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x52,0x68,0x3b,0x69,0x66,0x28,0x49,0x68,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x4d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x2e,0x71,0x75,0x65,0x75,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x65,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x64,0x3d,0x64,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x49,0x68,0x3d,0x21,0x31,0x7d,0x48,0x68,0x3d,0x30,0x3b,0x4f,0x3d,0x4e,0x3d,0x4d,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x4a,0x68,0x3d,0x21,0x31,0x3b,0x4b,0x68,0x3d,0x30,0x3b,0x6e,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7b,0x54,0x3d,0x31,0x3b,0x70,0x6b,0x3d,0x62,0x3b,0x59,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x61,0x3a,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x2c,0x67,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x68,0x3d,0x63,0x2c,0x6b,0x3d,0x62,0x3b,0x62,0x3d,0x5a,0x3b,0x68,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x37,0x36,0x38,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6b,0x2e,0x74,0x68,0x65,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x6b,0x2c,0x6d,0x3d,0x68,0x2c,0x71,0x3d,0x6d,0x2e,0x74,0x61,0x67,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x6d,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x71,0x7c,0x7c,0x31,0x31,0x3d,0x3d,0x3d,0x71,0x7c,0x7c,0x31,0x35,0x3d,0x3d,0x3d,0x71,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6d,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x72,0x3f,0x28,0x6d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x72,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2c,0x6d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x72,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x5c,0x6e,0x6d,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x72,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x29,0x3a,0x28,0x6d,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x6d,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x76,0x61,0x72,0x20,0x79,0x3d,0x55,0x69,0x28,0x67,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x79,0x29,0x7b,0x79,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x2d,0x32,0x35,0x37,0x3b,0x56,0x69,0x28,0x79,0x2c,0x67,0x2c,0x68,0x2c,0x66,0x2c,0x62,0x29,0x3b,0x79,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x26,0x26,0x53,0x69,0x28,0x66,0x2c,0x6c,0x2c,0x62,0x29,0x3b,0x62,0x3d,0x79,0x3b,0x6b,0x3d,0x6c,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x65,0x77,0x20,0x53,0x65,0x74,0x3b,0x74,0x2e,0x61,0x64,0x64,0x28,0x6b,0x29,0x3b,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x74,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6e,0x2e,0x61,0x64,0x64,0x28,0x6b,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x26,0x31,0x29,0x29,0x7b,0x53,0x69,0x28,0x66,0x2c,0x6c,0x2c,0x62,0x29,0x3b,0x74,0x6a,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x6b,0x3d,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x36,0x29,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x49,0x26,0x26,0x68,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x7b,0x76,0x61,0x72,0x20,0x4a,0x3d,0x55,0x69,0x28,0x67,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4a,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x28,0x4a,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x36,0x35,0x35,0x33,0x36,0x29,0x26,0x26,0x28,0x4a,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x32,0x35,0x36,0x29,0x3b,0x56,0x69,0x28,0x4a,0x2c,0x67,0x2c,0x68,0x2c,0x66,0x2c,0x62,0x29,0x3b,0x4a,0x67,0x28,0x4a,0x69,0x28,0x6b,0x2c,0x68,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x66,0x3d,0x6b,0x3d,0x4a,0x69,0x28,0x6b,0x2c,0x68,0x29,0x3b,0x34,0x21,0x3d,0x3d,0x54,0x26,0x26,0x28,0x54,0x3d,0x32,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x73,0x6b,0x3f,0x73,0x6b,0x3d,0x5b,0x66,0x5d,0x3a,0x73,0x6b,0x2e,0x70,0x75,0x73,0x68,0x28,0x66,0x29,0x3b,0x66,0x3d,0x67,0x3b,0x64,0x6f,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x66,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x3b,0x5c,0x6e,0x62,0x26,0x3d,0x2d,0x62,0x3b,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x76,0x61,0x72,0x20,0x78,0x3d,0x4e,0x69,0x28,0x66,0x2c,0x6b,0x2c,0x62,0x29,0x3b,0x70,0x68,0x28,0x66,0x2c,0x78,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x68,0x3d,0x6b,0x3b,0x76,0x61,0x72,0x20,0x77,0x3d,0x66,0x2e,0x74,0x79,0x70,0x65,0x2c,0x75,0x3d,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x26,0x26,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x75,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x75,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x52,0x69,0x7c,0x7c,0x21,0x52,0x69,0x2e,0x68,0x61,0x73,0x28,0x75,0x29,0x29,0x29,0x29,0x7b,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x36,0x35,0x35,0x33,0x36,0x3b,0x62,0x26,0x3d,0x2d,0x62,0x3b,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x62,0x3b,0x76,0x61,0x72,0x20,0x46,0x3d,0x51,0x69,0x28,0x66,0x2c,0x68,0x2c,0x62,0x29,0x3b,0x70,0x68,0x28,0x66,0x2c,0x46,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x66,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7d,0x53,0x6b,0x28,0x63,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x61,0x29,0x7b,0x62,0x3d,0x6e,0x61,0x3b,0x59,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x59,0x3d,0x63,0x3d,0x63,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x3b,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x7d,0x62,0x72,0x65,0x61,0x6b,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x6b,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x6d,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x6d,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x52,0x68,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x52,0x68,0x3a,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6a,0x28,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x54,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x54,0x7c,0x7c,0x32,0x3d,0x3d,0x3d,0x54,0x29,0x54,0x3d,0x34,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x51,0x7c,0x7c,0x30,0x3d,0x3d,0x3d,0x28,0x72,0x68,0x26,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x71,0x6b,0x26,0x32,0x36,0x38,0x34,0x33,0x35,0x34,0x35,0x35,0x29,0x7c,0x7c,0x43,0x6b,0x28,0x51,0x2c,0x5a,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x4a,0x6b,0x28,0x29,0x3b,0x69,0x66,0x28,0x51,0x21,0x3d,0x3d,0x61,0x7c,0x7c,0x5a,0x21,0x3d,0x3d,0x62,0x29,0x75,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4b,0x6b,0x28,0x61,0x2c,0x62,0x29,0x3b,0x64,0x6f,0x20,0x74,0x72,0x79,0x7b,0x54,0x6b,0x28,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x4d,0x6b,0x28,0x61,0x2c,0x65,0x29,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x31,0x29,0x3b,0x24,0x67,0x28,0x29,0x3b,0x4b,0x3d,0x63,0x3b,0x6d,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x36,0x31,0x29,0x29,0x3b,0x51,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x5a,0x3d,0x30,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x6b,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x3b,0x29,0x55,0x6b,0x28,0x59,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x6b,0x28,0x29,0x7b,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x59,0x26,0x26,0x21,0x63,0x63,0x28,0x29,0x3b,0x29,0x55,0x6b,0x28,0x59,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x55,0x6b,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x56,0x6b,0x28,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x2c,0x61,0x2c,0x66,0x6a,0x29,0x3b,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x3f,0x53,0x6b,0x28,0x61,0x29,0x3a,0x59,0x3d,0x62,0x3b,0x6e,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x6b,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x62,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x61,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x33,0x32,0x37,0x36,0x38,0x29,0x29,0x7b,0x69,0x66,0x28,0x63,0x3d,0x45,0x6a,0x28,0x63,0x2c,0x62,0x2c,0x66,0x6a,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x59,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x63,0x3d,0x49,0x6a,0x28,0x63,0x2c,0x62,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x3d,0x33,0x32,0x37,0x36,0x37,0x3b,0x59,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x37,0x36,0x38,0x2c,0x61,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x61,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x54,0x3d,0x36,0x3b,0x59,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x62,0x3d,0x62,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x59,0x3d,0x62,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x59,0x3d,0x62,0x3d,0x61,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x3b,0x30,0x3d,0x3d,0x3d,0x54,0x26,0x26,0x28,0x54,0x3d,0x35,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x43,0x2c,0x65,0x3d,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x74,0x72,0x79,0x7b,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x3d,0x31,0x2c,0x57,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x65,0x2c,0x43,0x3d,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x64,0x6f,0x20,0x48,0x6b,0x28,0x29,0x3b,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x77,0x6b,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x32,0x37,0x29,0x29,0x3b,0x63,0x3d,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x69,0x66,0x28,0x63,0x3d,0x3d,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x37,0x37,0x29,0x29,0x3b,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x42,0x63,0x28,0x61,0x2c,0x66,0x29,0x3b,0x61,0x3d,0x3d,0x3d,0x51,0x26,0x26,0x28,0x59,0x3d,0x51,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x3d,0x30,0x29,0x3b,0x30,0x3d,0x3d,0x3d,0x28,0x63,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x36,0x34,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x36,0x34,0x29,0x7c,0x7c,0x76,0x6b,0x7c,0x7c,0x28,0x76,0x6b,0x3d,0x21,0x30,0x2c,0x46,0x6b,0x28,0x68,0x63,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x48,0x6b,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x29,0x3b,0x66,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x35,0x39,0x39,0x30,0x29,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x63,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x31,0x35,0x39,0x39,0x30,0x29,0x7c,0x7c,0x66,0x29,0x7b,0x66,0x3d,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x76,0x61,0x72,0x20,0x67,0x3d,0x43,0x3b,0x43,0x3d,0x31,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x34,0x3b,0x6e,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x4f,0x6a,0x28,0x61,0x2c,0x63,0x29,0x3b,0x64,0x6b,0x28,0x63,0x2c,0x61,0x29,0x3b,0x4f,0x65,0x28,0x44,0x66,0x29,0x3b,0x64,0x64,0x3d,0x21,0x21,0x43,0x66,0x3b,0x44,0x66,0x3d,0x43,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x63,0x3b,0x68,0x6b,0x28,0x63,0x2c,0x61,0x2c,0x65,0x29,0x3b,0x64,0x63,0x28,0x29,0x3b,0x4b,0x3d,0x68,0x3b,0x43,0x3d,0x67,0x3b,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x7d,0x65,0x6c,0x73,0x65,0x20,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x63,0x3b,0x76,0x6b,0x26,0x26,0x28,0x76,0x6b,0x3d,0x21,0x31,0x2c,0x77,0x6b,0x3d,0x61,0x2c,0x78,0x6b,0x3d,0x65,0x29,0x3b,0x66,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x30,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x28,0x52,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x6d,0x63,0x28,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x64,0x29,0x3b,0x44,0x6b,0x28,0x61,0x2c,0x42,0x28,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x66,0x6f,0x72,0x28,0x64,0x3d,0x61,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x2c,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x62,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x63,0x2b,0x2b,0x29,0x65,0x3d,0x62,0x5b,0x63,0x5d,0x2c,0x64,0x28,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x7b,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x53,0x74,0x61,0x63,0x6b,0x3a,0x65,0x2e,0x73,0x74,0x61,0x63,0x6b,0x2c,0x64,0x69,0x67,0x65,0x73,0x74,0x3a,0x65,0x2e,0x64,0x69,0x67,0x65,0x73,0x74,0x7d,0x29,0x3b,0x69,0x66,0x28,0x4f,0x69,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x4f,0x69,0x3d,0x21,0x31,0x2c,0x61,0x3d,0x50,0x69,0x2c,0x50,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x78,0x6b,0x26,0x31,0x29,0x26,0x26,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x26,0x26,0x48,0x6b,0x28,0x29,0x3b,0x66,0x3d,0x61,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x30,0x21,0x3d,0x3d,0x28,0x66,0x26,0x31,0x29,0x3f,0x61,0x3d,0x3d,0x3d,0x7a,0x6b,0x3f,0x79,0x6b,0x2b,0x2b,0x3a,0x28,0x79,0x6b,0x3d,0x30,0x2c,0x7a,0x6b,0x3d,0x61,0x29,0x3a,0x79,0x6b,0x3d,0x30,0x3b,0x6a,0x67,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x6b,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x77,0x6b,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x44,0x63,0x28,0x78,0x6b,0x29,0x2c,0x62,0x3d,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x63,0x3d,0x43,0x3b,0x74,0x72,0x79,0x7b,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x43,0x3d,0x31,0x36,0x3e,0x61,0x3f,0x31,0x36,0x3a,0x61,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x77,0x6b,0x29,0x76,0x61,0x72,0x20,0x64,0x3d,0x21,0x31,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x61,0x3d,0x77,0x6b,0x3b,0x77,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x78,0x6b,0x3d,0x30,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x33,0x31,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x4b,0x3b,0x4b,0x7c,0x3d,0x34,0x3b,0x66,0x6f,0x72,0x28,0x56,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x56,0x2c,0x67,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x56,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x36,0x29,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x66,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6b,0x3d,0x30,0x3b,0x6b,0x3c,0x68,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x6b,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x68,0x5b,0x6b,0x5d,0x3b,0x66,0x6f,0x72,0x28,0x56,0x3d,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x56,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6d,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x50,0x6a,0x28,0x38,0x2c,0x6d,0x2c,0x66,0x29,0x7d,0x76,0x61,0x72,0x20,0x71,0x3d,0x6d,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x71,0x29,0x71,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x6d,0x2c,0x56,0x3d,0x71,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x6d,0x3d,0x56,0x3b,0x76,0x61,0x72,0x20,0x72,0x3d,0x6d,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x2c,0x79,0x3d,0x6d,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x53,0x6a,0x28,0x6d,0x29,0x3b,0x69,0x66,0x28,0x6d,0x3d,0x3d,0x3d,0x5c,0x6e,0x6c,0x29,0x7b,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x72,0x29,0x7b,0x72,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x79,0x3b,0x56,0x3d,0x72,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x56,0x3d,0x79,0x7d,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6e,0x3d,0x66,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x7b,0x6e,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x64,0x6f,0x7b,0x76,0x61,0x72,0x20,0x4a,0x3d,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x74,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x3d,0x4a,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x74,0x29,0x7d,0x7d,0x56,0x3d,0x66,0x7d,0x7d,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x66,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x36,0x34,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x29,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x66,0x2c,0x56,0x3d,0x67,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x66,0x3d,0x56,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x66,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x34,0x38,0x29,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x66,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x50,0x6a,0x28,0x39,0x2c,0x66,0x2c,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x29,0x7d,0x76,0x61,0x72,0x20,0x78,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x78,0x29,0x7b,0x78,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x78,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x7d,0x56,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x76,0x61,0x72,0x20,0x77,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x66,0x6f,0x72,0x28,0x56,0x3d,0x77,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x67,0x3d,0x56,0x3b,0x76,0x61,0x72,0x20,0x75,0x3d,0x67,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x67,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x36,0x34,0x29,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x5c,0x6e,0x75,0x29,0x75,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x67,0x2c,0x56,0x3d,0x75,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x3a,0x66,0x6f,0x72,0x28,0x67,0x3d,0x77,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x56,0x3b,0x29,0x7b,0x68,0x3d,0x56,0x3b,0x69,0x66,0x28,0x30,0x21,0x3d,0x3d,0x28,0x68,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x30,0x34,0x38,0x29,0x29,0x74,0x72,0x79,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x68,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x51,0x6a,0x28,0x39,0x2c,0x68,0x29,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x61,0x29,0x7b,0x57,0x28,0x68,0x2c,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x6e,0x61,0x29,0x7d,0x69,0x66,0x28,0x68,0x3d,0x3d,0x3d,0x67,0x29,0x7b,0x56,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x7d,0x76,0x61,0x72,0x20,0x46,0x3d,0x68,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x46,0x29,0x7b,0x46,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x56,0x3d,0x46,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x62,0x7d,0x56,0x3d,0x68,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x4b,0x3d,0x65,0x3b,0x6a,0x67,0x28,0x29,0x3b,0x69,0x66,0x28,0x6c,0x63,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6c,0x63,0x2e,0x6f,0x6e,0x50,0x6f,0x73,0x74,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x29,0x74,0x72,0x79,0x7b,0x6c,0x63,0x2e,0x6f,0x6e,0x50,0x6f,0x73,0x74,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x28,0x6b,0x63,0x2c,0x61,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x6e,0x61,0x29,0x7b,0x7d,0x64,0x3d,0x21,0x30,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x63,0x2c,0x6f,0x6b,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x62,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x62,0x3d,0x4a,0x69,0x28,0x63,0x2c,0x62,0x29,0x3b,0x62,0x3d,0x4e,0x69,0x28,0x61,0x2c,0x62,0x2c,0x31,0x29,0x3b,0x61,0x3d,0x6e,0x68,0x28,0x61,0x2c,0x62,0x2c,0x31,0x29,0x3b,0x62,0x3d,0x52,0x28,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x41,0x63,0x28,0x61,0x2c,0x31,0x2c,0x62,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x62,0x29,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x57,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x58,0x6b,0x28,0x61,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x7b,0x69,0x66,0x28,0x33,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x58,0x6b,0x28,0x62,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x62,0x2e,0x74,0x79,0x70,0x65,0x2e,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x7c,0x7c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x2e,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x26,0x26,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x52,0x69,0x7c,0x7c,0x21,0x52,0x69,0x2e,0x68,0x61,0x73,0x28,0x64,0x29,0x29,0x29,0x7b,0x61,0x3d,0x4a,0x69,0x28,0x63,0x2c,0x61,0x29,0x3b,0x61,0x3d,0x51,0x69,0x28,0x62,0x2c,0x61,0x2c,0x31,0x29,0x3b,0x62,0x3d,0x6e,0x68,0x28,0x62,0x2c,0x61,0x2c,0x31,0x29,0x3b,0x61,0x3d,0x52,0x28,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x41,0x63,0x28,0x62,0x2c,0x31,0x2c,0x61,0x29,0x2c,0x44,0x6b,0x28,0x62,0x2c,0x61,0x29,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x7d,0x62,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x64,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x62,0x29,0x3b,0x62,0x3d,0x52,0x28,0x29,0x3b,0x61,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x61,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x26,0x63,0x3b,0x51,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x28,0x5a,0x26,0x63,0x29,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x28,0x34,0x3d,0x3d,0x3d,0x54,0x7c,0x7c,0x33,0x3d,0x3d,0x3d,0x54,0x26,0x26,0x28,0x5a,0x26,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x29,0x3d,0x3d,0x3d,0x5a,0x26,0x26,0x35,0x30,0x30,0x3e,0x42,0x28,0x29,0x2d,0x66,0x6b,0x3f,0x4b,0x6b,0x28,0x61,0x2c,0x30,0x29,0x3a,0x72,0x6b,0x7c,0x3d,0x63,0x29,0x3b,0x44,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x59,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x30,0x3d,0x3d,0x3d,0x62,0x26,0x26,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x26,0x31,0x29,0x3f,0x62,0x3d,0x31,0x3a,0x28,0x62,0x3d,0x73,0x63,0x2c,0x73,0x63,0x3c,0x3c,0x3d,0x31,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x73,0x63,0x26,0x31,0x33,0x30,0x30,0x32,0x33,0x34,0x32,0x34,0x29,0x26,0x26,0x28,0x73,0x63,0x3d,0x34,0x31,0x39,0x34,0x33,0x30,0x34,0x29,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x52,0x28,0x29,0x3b,0x61,0x3d,0x69,0x68,0x28,0x61,0x2c,0x62,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x41,0x63,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x2c,0x44,0x6b,0x28,0x61,0x2c,0x63,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x6a,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2c,0x63,0x3d,0x30,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x63,0x3d,0x62,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x29,0x3b,0x59,0x6b,0x28,0x61,0x2c,0x63,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x28,0x63,0x3d,0x65,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x64,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x31,0x34,0x29,0x29,0x3b,0x7d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x64,0x2e,0x64,0x65,0x6c,0x65,0x74,0x65,0x28,0x62,0x29,0x3b,0x59,0x6b,0x28,0x61,0x2c,0x63,0x29,0x7d,0x76,0x61,0x72,0x20,0x56,0x6b,0x3b,0x5c,0x6e,0x56,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x69,0x66,0x28,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x21,0x3d,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x7c,0x7c,0x57,0x66,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x64,0x68,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x28,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x26,0x63,0x29,0x26,0x26,0x30,0x3d,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x32,0x38,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x68,0x3d,0x21,0x31,0x2c,0x79,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x64,0x68,0x3d,0x30,0x21,0x3d,0x3d,0x28,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x33,0x31,0x30,0x37,0x32,0x29,0x3f,0x21,0x30,0x3a,0x21,0x31,0x7d,0x65,0x6c,0x73,0x65,0x20,0x64,0x68,0x3d,0x21,0x31,0x2c,0x49,0x26,0x26,0x30,0x21,0x3d,0x3d,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x30,0x34,0x38,0x35,0x37,0x36,0x29,0x26,0x26,0x75,0x67,0x28,0x62,0x2c,0x6e,0x67,0x2c,0x62,0x2e,0x69,0x6e,0x64,0x65,0x78,0x29,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x76,0x61,0x72,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x6a,0x28,0x61,0x2c,0x62,0x29,0x3b,0x61,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x59,0x66,0x28,0x62,0x2c,0x48,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x63,0x68,0x28,0x62,0x2c,0x63,0x29,0x3b,0x65,0x3d,0x4e,0x68,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x53,0x68,0x28,0x29,0x3b,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x65,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3f,0x28,0x62,0x2e,0x74,0x61,0x67,0x3d,0x31,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x2c,0x5a,0x66,0x28,0x64,0x29,0x3f,0x28,0x66,0x3d,0x21,0x30,0x2c,0x63,0x67,0x28,0x62,0x29,0x29,0x3a,0x66,0x3d,0x21,0x31,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3f,0x65,0x2e,0x73,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6b,0x68,0x28,0x62,0x29,0x2c,0x65,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x45,0x69,0x2c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x65,0x2c,0x65,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3d,0x62,0x2c,0x49,0x69,0x28,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x63,0x29,0x2c,0x62,0x3d,0x6a,0x6a,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x21,0x30,0x2c,0x66,0x2c,0x63,0x29,0x29,0x3a,0x28,0x62,0x2e,0x74,0x61,0x67,0x3d,0x30,0x2c,0x49,0x26,0x26,0x66,0x26,0x26,0x76,0x67,0x28,0x62,0x29,0x2c,0x58,0x69,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x65,0x2c,0x63,0x29,0x2c,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x36,0x3a,0x64,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3b,0x61,0x3a,0x7b,0x69,0x6a,0x28,0x61,0x2c,0x62,0x29,0x3b,0x61,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x65,0x3d,0x64,0x2e,0x5f,0x69,0x6e,0x69,0x74,0x3b,0x64,0x3d,0x65,0x28,0x64,0x2e,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x29,0x3b,0x62,0x2e,0x74,0x79,0x70,0x65,0x3d,0x64,0x3b,0x65,0x3d,0x62,0x2e,0x74,0x61,0x67,0x3d,0x5a,0x6b,0x28,0x64,0x29,0x3b,0x61,0x3d,0x43,0x69,0x28,0x64,0x2c,0x61,0x29,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x62,0x3d,0x63,0x6a,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x62,0x3d,0x68,0x6a,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x62,0x3d,0x59,0x69,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x62,0x3d,0x24,0x69,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x43,0x69,0x28,0x64,0x2e,0x74,0x79,0x70,0x65,0x2c,0x61,0x29,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x30,0x36,0x2c,0x5c,0x6e,0x64,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x29,0x3b,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x30,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x64,0x3f,0x65,0x3a,0x43,0x69,0x28,0x64,0x2c,0x65,0x29,0x2c,0x63,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x64,0x3f,0x65,0x3a,0x43,0x69,0x28,0x64,0x2c,0x65,0x29,0x2c,0x68,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x61,0x3a,0x7b,0x6b,0x6a,0x28,0x62,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x38,0x37,0x29,0x29,0x3b,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x65,0x3d,0x66,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3b,0x6c,0x68,0x28,0x61,0x2c,0x62,0x29,0x3b,0x71,0x68,0x28,0x62,0x2c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x64,0x3d,0x67,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3b,0x69,0x66,0x28,0x66,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x69,0x66,0x28,0x66,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x64,0x2c,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x21,0x31,0x2c,0x63,0x61,0x63,0x68,0x65,0x3a,0x67,0x2e,0x63,0x61,0x63,0x68,0x65,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x3a,0x67,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x67,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x7d,0x2c,0x62,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x2e,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x5c,0x6e,0x66,0x2c,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x32,0x35,0x36,0x29,0x7b,0x65,0x3d,0x4a,0x69,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x33,0x29,0x29,0x2c,0x62,0x29,0x3b,0x62,0x3d,0x6c,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x64,0x21,0x3d,0x3d,0x65,0x29,0x7b,0x65,0x3d,0x4a,0x69,0x28,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x32,0x34,0x29,0x29,0x2c,0x62,0x29,0x3b,0x62,0x3d,0x6c,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x63,0x2c,0x65,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x79,0x67,0x3d,0x4c,0x66,0x28,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x29,0x2c,0x78,0x67,0x3d,0x62,0x2c,0x49,0x3d,0x21,0x30,0x2c,0x7a,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x3d,0x56,0x67,0x28,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x63,0x3b,0x63,0x3b,0x29,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x2d,0x33,0x7c,0x34,0x30,0x39,0x36,0x2c,0x63,0x3d,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x49,0x67,0x28,0x29,0x3b,0x69,0x66,0x28,0x64,0x3d,0x3d,0x3d,0x65,0x29,0x7b,0x62,0x3d,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x63,0x29,0x7d,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x41,0x68,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x45,0x67,0x28,0x62,0x29,0x2c,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x3f,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x67,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x45,0x66,0x28,0x64,0x2c,0x65,0x29,0x3f,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x45,0x66,0x28,0x64,0x2c,0x66,0x29,0x26,0x26,0x28,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x33,0x32,0x29,0x2c,0x5c,0x6e,0x67,0x6a,0x28,0x61,0x2c,0x62,0x29,0x2c,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x67,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x36,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x26,0x26,0x45,0x67,0x28,0x62,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x79,0x68,0x28,0x62,0x2c,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x29,0x2c,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x55,0x67,0x28,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x64,0x2c,0x63,0x29,0x3a,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x31,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x64,0x3f,0x65,0x3a,0x43,0x69,0x28,0x64,0x2c,0x65,0x29,0x2c,0x59,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x38,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x63,0x29,0x2c,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x30,0x3a,0x61,0x3a,0x7b,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2e,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3b,0x66,0x3d,0x62,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x5c,0x6e,0x67,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3b,0x47,0x28,0x57,0x67,0x2c,0x64,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x29,0x3b,0x64,0x2e,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3d,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x69,0x66,0x28,0x48,0x65,0x28,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x67,0x29,0x29,0x7b,0x69,0x66,0x28,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x3d,0x3d,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x26,0x26,0x21,0x57,0x66,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x7b,0x62,0x3d,0x5a,0x69,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x66,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x26,0x26,0x28,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x62,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x66,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x29,0x7b,0x67,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6b,0x3d,0x68,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6b,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x3d,0x3d,0x64,0x29,0x7b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x67,0x29,0x7b,0x6b,0x3d,0x6d,0x68,0x28,0x2d,0x31,0x2c,0x63,0x26,0x2d,0x63,0x29,0x3b,0x6b,0x2e,0x74,0x61,0x67,0x3d,0x32,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x66,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6c,0x29,0x7b,0x6c,0x3d,0x6c,0x2e,0x73,0x68,0x61,0x72,0x65,0x64,0x3b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x6c,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x6d,0x3f,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6b,0x3a,0x28,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6d,0x2e,0x6e,0x65,0x78,0x74,0x2c,0x6d,0x2e,0x6e,0x65,0x78,0x74,0x3d,0x6b,0x29,0x3b,0x6c,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x3d,0x6b,0x7d,0x7d,0x66,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x3b,0x6b,0x3d,0x66,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6b,0x26,0x26,0x28,0x6b,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x29,0x3b,0x62,0x68,0x28,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x2c,0x5c,0x6e,0x63,0x2c,0x62,0x29,0x3b,0x68,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x6b,0x3d,0x6b,0x2e,0x6e,0x65,0x78,0x74,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x30,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x67,0x29,0x67,0x3d,0x66,0x2e,0x74,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x38,0x3d,0x3d,0x3d,0x66,0x2e,0x74,0x61,0x67,0x29,0x7b,0x67,0x3d,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x34,0x31,0x29,0x29,0x3b,0x67,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x3b,0x68,0x3d,0x67,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x26,0x26,0x28,0x68,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x7c,0x3d,0x63,0x29,0x3b,0x62,0x68,0x28,0x67,0x2c,0x63,0x2c,0x62,0x29,0x3b,0x67,0x3d,0x66,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x7d,0x65,0x6c,0x73,0x65,0x20,0x67,0x3d,0x66,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x29,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x66,0x3b,0x65,0x6c,0x73,0x65,0x20,0x66,0x6f,0x72,0x28,0x67,0x3d,0x66,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x67,0x3b,0x29,0x7b,0x69,0x66,0x28,0x67,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x66,0x3d,0x67,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x66,0x29,0x7b,0x66,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x67,0x3d,0x66,0x3b,0x62,0x72,0x65,0x61,0x6b,0x7d,0x67,0x3d,0x67,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x66,0x3d,0x67,0x7d,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x65,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x63,0x29,0x3b,0x62,0x3d,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x3b,0x63,0x61,0x73,0x65,0x20,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x64,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x63,0x68,0x28,0x62,0x2c,0x63,0x29,0x2c,0x65,0x3d,0x65,0x68,0x28,0x65,0x29,0x2c,0x64,0x3d,0x64,0x28,0x65,0x29,0x2c,0x62,0x2e,0x66,0x6c,0x61,0x67,0x73,0x7c,0x3d,0x31,0x2c,0x58,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x63,0x29,0x2c,0x5c,0x6e,0x62,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x34,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x43,0x69,0x28,0x64,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x29,0x2c,0x65,0x3d,0x43,0x69,0x28,0x64,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x29,0x2c,0x24,0x69,0x28,0x61,0x2c,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x37,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x3d,0x62,0x2e,0x74,0x79,0x70,0x65,0x2c,0x65,0x3d,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x2c,0x65,0x3d,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x3d,0x3d,0x64,0x3f,0x65,0x3a,0x43,0x69,0x28,0x64,0x2c,0x65,0x29,0x2c,0x69,0x6a,0x28,0x61,0x2c,0x62,0x29,0x2c,0x62,0x2e,0x74,0x61,0x67,0x3d,0x31,0x2c,0x5a,0x66,0x28,0x64,0x29,0x3f,0x28,0x61,0x3d,0x21,0x30,0x2c,0x63,0x67,0x28,0x62,0x29,0x29,0x3a,0x61,0x3d,0x21,0x31,0x2c,0x63,0x68,0x28,0x62,0x2c,0x63,0x29,0x2c,0x47,0x69,0x28,0x62,0x2c,0x64,0x2c,0x65,0x29,0x2c,0x49,0x69,0x28,0x62,0x2c,0x64,0x2c,0x65,0x2c,0x63,0x29,0x2c,0x6a,0x6a,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x2c,0x64,0x2c,0x21,0x30,0x2c,0x61,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x39,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x78,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x32,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x35,0x36,0x2c,0x62,0x2e,0x74,0x61,0x67,0x29,0x29,0x3b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x63,0x28,0x61,0x2c,0x62,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x24,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x67,0x3d,0x61,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6b,0x65,0x79,0x3d,0x63,0x3b,0x74,0x68,0x69,0x73,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x3d,0x74,0x68,0x69,0x73,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x74,0x79,0x70,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x30,0x3b,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6d,0x6f,0x64,0x65,0x3d,0x64,0x3b,0x74,0x68,0x69,0x73,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x30,0x3b,0x74,0x68,0x69,0x73,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x74,0x68,0x69,0x73,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x65,0x77,0x20,0x24,0x6b,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6a,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x61,0x7c,0x7c,0x21,0x61,0x2e,0x69,0x73,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5a,0x6b,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x6a,0x28,0x61,0x29,0x3f,0x31,0x3a,0x30,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3b,0x69,0x66,0x28,0x61,0x3d,0x3d,0x3d,0x44,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x31,0x3b,0x69,0x66,0x28,0x61,0x3d,0x3d,0x3d,0x47,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x31,0x34,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x32,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x63,0x3f,0x28,0x63,0x3d,0x42,0x67,0x28,0x61,0x2e,0x74,0x61,0x67,0x2c,0x62,0x2c,0x61,0x2e,0x6b,0x65,0x79,0x2c,0x61,0x2e,0x6d,0x6f,0x64,0x65,0x29,0x2c,0x63,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x2c,0x63,0x2e,0x74,0x79,0x70,0x65,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2c,0x63,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x61,0x2c,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x3d,0x63,0x29,0x3a,0x28,0x63,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x3d,0x62,0x2c,0x63,0x2e,0x74,0x79,0x70,0x65,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x63,0x2e,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x3d,0x30,0x2c,0x63,0x2e,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x63,0x2e,0x66,0x6c,0x61,0x67,0x73,0x3d,0x61,0x2e,0x66,0x6c,0x61,0x67,0x73,0x26,0x31,0x34,0x36,0x38,0x30,0x30,0x36,0x34,0x3b,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3b,0x63,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3b,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x3b,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x3b,0x63,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x63,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3d,0x61,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x3b,0x62,0x3d,0x61,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3b,0x63,0x2e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x7b,0x6c,0x61,0x6e,0x65,0x73,0x3a,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x2c,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x62,0x2e,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x3b,0x5c,0x6e,0x63,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3d,0x61,0x2e,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x3b,0x63,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3d,0x61,0x2e,0x69,0x6e,0x64,0x65,0x78,0x3b,0x63,0x2e,0x72,0x65,0x66,0x3d,0x61,0x2e,0x72,0x65,0x66,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x32,0x3b,0x64,0x3d,0x61,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x61,0x6a,0x28,0x61,0x29,0x26,0x26,0x28,0x67,0x3d,0x31,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x67,0x3d,0x35,0x3b,0x65,0x6c,0x73,0x65,0x20,0x61,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x79,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x54,0x67,0x28,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x65,0x2c,0x66,0x2c,0x62,0x29,0x3b,0x63,0x61,0x73,0x65,0x20,0x7a,0x61,0x3a,0x67,0x3d,0x38,0x3b,0x65,0x7c,0x3d,0x38,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x41,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x42,0x67,0x28,0x31,0x32,0x2c,0x63,0x2c,0x62,0x2c,0x65,0x7c,0x32,0x29,0x2c,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x41,0x61,0x2c,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x66,0x2c,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x45,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x42,0x67,0x28,0x31,0x33,0x2c,0x63,0x2c,0x62,0x2c,0x65,0x29,0x2c,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x45,0x61,0x2c,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x66,0x2c,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x46,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3d,0x42,0x67,0x28,0x31,0x39,0x2c,0x63,0x2c,0x62,0x2c,0x65,0x29,0x2c,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x46,0x61,0x2c,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x66,0x2c,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x49,0x61,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x6a,0x28,0x63,0x2c,0x65,0x2c,0x66,0x2c,0x62,0x29,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x42,0x61,0x3a,0x67,0x3d,0x31,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x43,0x61,0x3a,0x67,0x3d,0x39,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x44,0x61,0x3a,0x67,0x3d,0x31,0x31,0x3b,0x5c,0x6e,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x47,0x61,0x3a,0x67,0x3d,0x31,0x34,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x48,0x61,0x3a,0x67,0x3d,0x31,0x36,0x3b,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x33,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x3f,0x61,0x3a,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2c,0x5c,0x22,0x5c,0x22,0x29,0x29,0x3b,0x7d,0x62,0x3d,0x42,0x67,0x28,0x67,0x2c,0x63,0x2c,0x62,0x2c,0x65,0x29,0x3b,0x62,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x61,0x3b,0x62,0x2e,0x74,0x79,0x70,0x65,0x3d,0x64,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x66,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x61,0x3d,0x42,0x67,0x28,0x37,0x2c,0x61,0x2c,0x64,0x2c,0x62,0x29,0x3b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6a,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x61,0x3d,0x42,0x67,0x28,0x32,0x32,0x2c,0x61,0x2c,0x64,0x2c,0x62,0x29,0x3b,0x61,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x3d,0x49,0x61,0x3b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x7b,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x3a,0x21,0x31,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x61,0x3d,0x42,0x67,0x28,0x36,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x29,0x3b,0x61,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x67,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x62,0x3d,0x42,0x67,0x28,0x34,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3f,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x5b,0x5d,0x2c,0x61,0x2e,0x6b,0x65,0x79,0x2c,0x62,0x29,0x3b,0x62,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x63,0x3b,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x7b,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x61,0x2e,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x74,0x61,0x67,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3d,0x61,0x3b,0x74,0x68,0x69,0x73,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x2d,0x31,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x30,0x3b,0x74,0x68,0x69,0x73,0x2e,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x3d,0x7a,0x63,0x28,0x30,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x3d,0x7a,0x63,0x28,0x2d,0x31,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x74,0x68,0x69,0x73,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x3d,0x30,0x3b,0x74,0x68,0x69,0x73,0x2e,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x3d,0x7a,0x63,0x28,0x30,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x3d,0x64,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x3d,0x65,0x3b,0x74,0x68,0x69,0x73,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3d,0x5c,0x6e,0x6e,0x75,0x6c,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x61,0x3d,0x6e,0x65,0x77,0x20,0x61,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x68,0x2c,0x6b,0x29,0x3b,0x31,0x3d,0x3d,0x3d,0x62,0x3f,0x28,0x62,0x3d,0x31,0x2c,0x21,0x30,0x3d,0x3d,0x3d,0x66,0x26,0x26,0x28,0x62,0x7c,0x3d,0x38,0x29,0x29,0x3a,0x62,0x3d,0x30,0x3b,0x66,0x3d,0x42,0x67,0x28,0x33,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x62,0x29,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3d,0x66,0x3b,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3d,0x61,0x3b,0x66,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x64,0x2c,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x3a,0x63,0x2c,0x63,0x61,0x63,0x68,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x6b,0x68,0x28,0x66,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x33,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x33,0x5d,0x3f,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x33,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x77,0x61,0x2c,0x6b,0x65,0x79,0x3a,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x64,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x5c,0x22,0x5c,0x22,0x2b,0x64,0x2c,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3a,0x61,0x2c,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3a,0x62,0x2c,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x63,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x6c,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x56,0x66,0x3b,0x61,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x61,0x3a,0x7b,0x69,0x66,0x28,0x56,0x62,0x28,0x61,0x29,0x21,0x3d,0x3d,0x61,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x37,0x30,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x3b,0x64,0x6f,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x62,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x69,0x66,0x28,0x5a,0x66,0x28,0x62,0x2e,0x74,0x79,0x70,0x65,0x29,0x29,0x7b,0x62,0x3d,0x62,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x2e,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3b,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x62,0x3d,0x62,0x2e,0x72,0x65,0x74,0x75,0x72,0x6e,0x7d,0x77,0x68,0x69,0x6c,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x37,0x31,0x29,0x29,0x3b,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x3b,0x69,0x66,0x28,0x5a,0x66,0x28,0x63,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x67,0x28,0x61,0x2c,0x63,0x2c,0x62,0x29,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x7b,0x61,0x3d,0x62,0x6c,0x28,0x63,0x2c,0x64,0x2c,0x21,0x30,0x2c,0x61,0x2c,0x65,0x2c,0x66,0x2c,0x67,0x2c,0x68,0x2c,0x6b,0x29,0x3b,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x64,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x63,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x64,0x3d,0x52,0x28,0x29,0x3b,0x65,0x3d,0x79,0x69,0x28,0x63,0x29,0x3b,0x66,0x3d,0x6d,0x68,0x28,0x64,0x2c,0x65,0x29,0x3b,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3f,0x62,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x6e,0x68,0x28,0x63,0x2c,0x66,0x2c,0x65,0x29,0x3b,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6c,0x61,0x6e,0x65,0x73,0x3d,0x65,0x3b,0x41,0x63,0x28,0x61,0x2c,0x65,0x2c,0x64,0x29,0x3b,0x44,0x6b,0x28,0x61,0x2c,0x64,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2c,0x66,0x3d,0x52,0x28,0x29,0x2c,0x67,0x3d,0x79,0x69,0x28,0x65,0x29,0x3b,0x63,0x3d,0x64,0x6c,0x28,0x63,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3f,0x62,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x63,0x3a,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x63,0x3b,0x62,0x3d,0x6d,0x68,0x28,0x66,0x2c,0x67,0x29,0x3b,0x62,0x2e,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3d,0x7b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3a,0x61,0x7d,0x3b,0x64,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x64,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x64,0x26,0x26,0x28,0x62,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x64,0x29,0x3b,0x61,0x3d,0x6e,0x68,0x28,0x65,0x2c,0x62,0x2c,0x67,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x28,0x67,0x69,0x28,0x61,0x2c,0x65,0x2c,0x67,0x2c,0x66,0x29,0x2c,0x6f,0x68,0x28,0x61,0x2c,0x65,0x2c,0x67,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x6c,0x28,0x61,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x69,0x66,0x28,0x21,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x63,0x68,0x69,0x6c,0x64,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x6c,0x28,0x61,0x2c,0x62,0x29,0x7b,0x61,0x3d,0x61,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x2e,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3b,0x61,0x2e,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x3d,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x63,0x3c,0x62,0x3f,0x63,0x3a,0x62,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6c,0x28,0x61,0x2c,0x62,0x29,0x7b,0x68,0x6c,0x28,0x61,0x2c,0x62,0x29,0x3b,0x28,0x61,0x3d,0x61,0x2e,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x29,0x26,0x26,0x68,0x6c,0x28,0x61,0x2c,0x62,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6a,0x6c,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x7d,0x76,0x61,0x72,0x20,0x6b,0x6c,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x45,0x72,0x72,0x6f,0x72,0x3f,0x72,0x65,0x70,0x6f,0x72,0x74,0x45,0x72,0x72,0x6f,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x61,0x29,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x6c,0x28,0x61,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x61,0x7d,0x5c,0x6e,0x6d,0x6c,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x6c,0x6c,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x30,0x39,0x29,0x29,0x3b,0x66,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x3b,0x6d,0x6c,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x3d,0x6c,0x6c,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x3b,0x52,0x6b,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x29,0x3b,0x62,0x5b,0x75,0x66,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x6c,0x28,0x61,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x3d,0x61,0x7d,0x5c,0x6e,0x6d,0x6c,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x48,0x63,0x28,0x29,0x3b,0x61,0x3d,0x7b,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x61,0x2c,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3a,0x62,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x63,0x3d,0x30,0x3b,0x63,0x3c,0x51,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x30,0x21,0x3d,0x3d,0x62,0x26,0x26,0x62,0x3c,0x51,0x63,0x5b,0x63,0x5d,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3b,0x63,0x2b,0x2b,0x29,0x3b,0x51,0x63,0x2e,0x73,0x70,0x6c,0x69,0x63,0x65,0x28,0x63,0x2c,0x30,0x2c,0x61,0x29,0x3b,0x30,0x3d,0x3d,0x3d,0x63,0x26,0x26,0x56,0x63,0x28,0x61,0x29,0x7d,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x6c,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x61,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x39,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x31,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6c,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x28,0x21,0x61,0x7c,0x7c,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x39,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x31,0x31,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x26,0x26,0x28,0x38,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x7c,0x7c,0x5c,0x22,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x6d,0x6f,0x75,0x6e,0x74,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x2d,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x20,0x5c,0x22,0x21,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x28,0x29,0x7b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x64,0x3b,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x67,0x6c,0x28,0x67,0x29,0x3b,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x67,0x3d,0x65,0x6c,0x28,0x62,0x2c,0x64,0x2c,0x61,0x2c,0x30,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x2c,0x5c,0x22,0x5c,0x22,0x2c,0x70,0x6c,0x29,0x3b,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x67,0x3b,0x61,0x5b,0x75,0x66,0x5d,0x3d,0x67,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x73,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x61,0x29,0x3b,0x52,0x6b,0x28,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x7d,0x66,0x6f,0x72,0x28,0x3b,0x65,0x3d,0x61,0x2e,0x6c,0x61,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x3b,0x29,0x61,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x65,0x29,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x64,0x3b,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x67,0x6c,0x28,0x6b,0x29,0x3b,0x68,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x29,0x7d,0x7d,0x76,0x61,0x72,0x20,0x6b,0x3d,0x62,0x6c,0x28,0x61,0x2c,0x30,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x21,0x31,0x2c,0x21,0x31,0x2c,0x5c,0x22,0x5c,0x22,0x2c,0x70,0x6c,0x29,0x3b,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x6b,0x3b,0x61,0x5b,0x75,0x66,0x5d,0x3d,0x6b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x73,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x61,0x29,0x3b,0x52,0x6b,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x6c,0x28,0x62,0x2c,0x6b,0x2c,0x63,0x2c,0x64,0x29,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x2c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x66,0x3d,0x63,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x67,0x3d,0x66,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x68,0x3d,0x65,0x3b,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x67,0x6c,0x28,0x67,0x29,0x3b,0x68,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x29,0x7d,0x7d,0x66,0x6c,0x28,0x62,0x2c,0x67,0x2c,0x61,0x2c,0x65,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x67,0x3d,0x71,0x6c,0x28,0x63,0x2c,0x62,0x2c,0x61,0x2c,0x65,0x2c,0x64,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x6c,0x28,0x67,0x29,0x7d,0x45,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x69,0x66,0x28,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x2e,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x74,0x63,0x28,0x62,0x2e,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x29,0x3b,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x43,0x63,0x28,0x62,0x2c,0x63,0x7c,0x31,0x29,0x2c,0x44,0x6b,0x28,0x62,0x2c,0x42,0x28,0x29,0x29,0x2c,0x30,0x3d,0x3d,0x3d,0x28,0x4b,0x26,0x36,0x29,0x26,0x26,0x28,0x47,0x6a,0x3d,0x42,0x28,0x29,0x2b,0x35,0x30,0x30,0x2c,0x6a,0x67,0x28,0x29,0x29,0x29,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x31,0x33,0x3a,0x52,0x6b,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x69,0x68,0x28,0x61,0x2c,0x31,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x52,0x28,0x29,0x3b,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x31,0x2c,0x63,0x29,0x7d,0x7d,0x29,0x2c,0x69,0x6c,0x28,0x61,0x2c,0x31,0x29,0x7d,0x7d,0x3b,0x5c,0x6e,0x46,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x69,0x68,0x28,0x61,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x52,0x28,0x29,0x3b,0x67,0x69,0x28,0x62,0x2c,0x61,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x2c,0x63,0x29,0x7d,0x69,0x6c,0x28,0x61,0x2c,0x31,0x33,0x34,0x32,0x31,0x37,0x37,0x32,0x38,0x29,0x7d,0x7d,0x3b,0x47,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x31,0x33,0x3d,0x3d,0x3d,0x61,0x2e,0x74,0x61,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x79,0x69,0x28,0x61,0x29,0x2c,0x63,0x3d,0x69,0x68,0x28,0x61,0x2c,0x62,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x52,0x28,0x29,0x3b,0x67,0x69,0x28,0x63,0x2c,0x61,0x2c,0x62,0x2c,0x64,0x29,0x7d,0x69,0x6c,0x28,0x61,0x2c,0x62,0x29,0x7d,0x7d,0x3b,0x48,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x43,0x7d,0x3b,0x49,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x43,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x43,0x3d,0x61,0x2c,0x62,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x43,0x3d,0x63,0x7d,0x7d,0x3b,0x5c,0x6e,0x79,0x62,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x62,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3a,0x62,0x62,0x28,0x61,0x2c,0x63,0x29,0x3b,0x62,0x3d,0x63,0x2e,0x6e,0x61,0x6d,0x65,0x3b,0x69,0x66,0x28,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x3d,0x3d,0x3d,0x63,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x29,0x7b,0x66,0x6f,0x72,0x28,0x63,0x3d,0x61,0x3b,0x63,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x29,0x63,0x3d,0x63,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3b,0x63,0x3d,0x63,0x2e,0x71,0x75,0x65,0x72,0x79,0x53,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x41,0x6c,0x6c,0x28,0x5c,0x22,0x69,0x6e,0x70,0x75,0x74,0x5b,0x6e,0x61,0x6d,0x65,0x3d,0x5c,0x22,0x2b,0x4a,0x53,0x4f,0x4e,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x69,0x66,0x79,0x28,0x5c,0x22,0x5c,0x22,0x2b,0x62,0x29,0x2b,0x27,0x5d,0x5b,0x74,0x79,0x70,0x65,0x3d,0x5c,0x22,0x72,0x61,0x64,0x69,0x6f,0x5c,0x22,0x5d,0x27,0x29,0x3b,0x66,0x6f,0x72,0x28,0x62,0x3d,0x30,0x3b,0x62,0x3c,0x63,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x62,0x2b,0x2b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x5b,0x62,0x5d,0x3b,0x69,0x66,0x28,0x64,0x21,0x3d,0x3d,0x61,0x26,0x26,0x64,0x2e,0x66,0x6f,0x72,0x6d,0x3d,0x3d,0x3d,0x61,0x2e,0x66,0x6f,0x72,0x6d,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x44,0x62,0x28,0x64,0x29,0x3b,0x69,0x66,0x28,0x21,0x65,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x39,0x30,0x29,0x29,0x3b,0x57,0x61,0x28,0x64,0x29,0x3b,0x62,0x62,0x28,0x64,0x2c,0x65,0x29,0x7d,0x7d,0x7d,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x74,0x65,0x78,0x74,0x61,0x72,0x65,0x61,0x5c,0x22,0x3a,0x69,0x62,0x28,0x61,0x2c,0x63,0x29,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x5c,0x22,0x3a,0x62,0x3d,0x63,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x26,0x26,0x66,0x62,0x28,0x61,0x2c,0x21,0x21,0x63,0x2e,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x2c,0x62,0x2c,0x21,0x31,0x29,0x7d,0x7d,0x3b,0x47,0x62,0x3d,0x51,0x6b,0x3b,0x48,0x62,0x3d,0x52,0x6b,0x3b,0x5c,0x6e,0x76,0x61,0x72,0x20,0x73,0x6c,0x3d,0x7b,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x3a,0x21,0x31,0x2c,0x45,0x76,0x65,0x6e,0x74,0x73,0x3a,0x5b,0x43,0x62,0x2c,0x75,0x65,0x2c,0x44,0x62,0x2c,0x45,0x62,0x2c,0x46,0x62,0x2c,0x51,0x6b,0x5d,0x7d,0x2c,0x74,0x6c,0x3d,0x7b,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x57,0x63,0x2c,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x3a,0x30,0x2c,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x5c,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x5c,0x22,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x3a,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x5c,0x22,0x7d,0x3b,0x5c,0x6e,0x76,0x61,0x72,0x20,0x75,0x6c,0x3d,0x7b,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x3a,0x74,0x6c,0x2e,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x2c,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x74,0x6c,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x3a,0x74,0x6c,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3a,0x74,0x6c,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x43,0x6f,0x6e,0x66,0x69,0x67,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x45,0x72,0x72,0x6f,0x72,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x52,0x65,0x66,0x3a,0x75,0x61,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x2c,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x42,0x79,0x46,0x69,0x62,0x65,0x72,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x61,0x3d,0x5a,0x62,0x28,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x7d,0x2c,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3a,0x74,0x6c,0x2e,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x7c,0x7c,0x5c,0x6e,0x6a,0x6c,0x2c,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x73,0x46,0x6f,0x72,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x6f,0x6f,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x73,0x65,0x74,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x46,0x69,0x62,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x72,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x5c,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x2d,0x6e,0x65,0x78,0x74,0x2d,0x66,0x31,0x33,0x33,0x38,0x66,0x38,0x30,0x38,0x30,0x2d,0x32,0x30,0x32,0x34,0x30,0x34,0x32,0x36,0x5c,0x22,0x7d,0x3b,0x69,0x66,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x29,0x7b,0x76,0x61,0x72,0x20,0x76,0x6c,0x3d,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x3b,0x69,0x66,0x28,0x21,0x76,0x6c,0x2e,0x69,0x73,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x26,0x26,0x76,0x6c,0x2e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x46,0x69,0x62,0x65,0x72,0x29,0x74,0x72,0x79,0x7b,0x6b,0x63,0x3d,0x76,0x6c,0x2e,0x69,0x6e,0x6a,0x65,0x63,0x74,0x28,0x75,0x6c,0x29,0x2c,0x6c,0x63,0x3d,0x76,0x6c,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x7d,0x7d,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x3d,0x73,0x6c,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x50,0x6f,0x72,0x74,0x61,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x32,0x3c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x32,0x5d,0x3f,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x32,0x5d,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x21,0x6e,0x6c,0x28,0x62,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x21,0x6e,0x6c,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x39,0x39,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x21,0x31,0x2c,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x2c,0x65,0x3d,0x6b,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x26,0x26,0x28,0x21,0x30,0x3d,0x3d,0x3d,0x62,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x26,0x26,0x28,0x63,0x3d,0x21,0x30,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x26,0x26,0x28,0x64,0x3d,0x62,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x26,0x26,0x28,0x65,0x3d,0x62,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x29,0x29,0x3b,0x62,0x3d,0x62,0x6c,0x28,0x61,0x2c,0x31,0x2c,0x21,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x63,0x2c,0x21,0x31,0x2c,0x64,0x2c,0x65,0x29,0x3b,0x61,0x5b,0x75,0x66,0x5d,0x3d,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x73,0x66,0x28,0x38,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x3f,0x61,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x3a,0x61,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x65,0x77,0x20,0x6c,0x6c,0x28,0x62,0x29,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x66,0x69,0x6e,0x64,0x44,0x4f,0x4d,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x3b,0x69,0x66,0x28,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x31,0x38,0x38,0x29,0x29,0x3b,0x61,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x61,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x5c,0x22,0x2c,0x5c,0x22,0x29,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x36,0x38,0x2c,0x61,0x29,0x29,0x3b,0x7d,0x61,0x3d,0x5a,0x62,0x28,0x62,0x29,0x3b,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x2e,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x66,0x6c,0x75,0x73,0x68,0x53,0x79,0x6e,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x52,0x6b,0x28,0x61,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x21,0x6f,0x6c,0x28,0x62,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x2c,0x21,0x30,0x2c,0x63,0x29,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x21,0x6e,0x6c,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x30,0x35,0x29,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x63,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x53,0x6f,0x75,0x72,0x63,0x65,0x73,0x7c,0x7c,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x3d,0x21,0x31,0x2c,0x66,0x3d,0x5c,0x22,0x5c,0x22,0x2c,0x67,0x3d,0x6b,0x6c,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x26,0x26,0x28,0x21,0x30,0x3d,0x3d,0x3d,0x63,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x26,0x26,0x28,0x65,0x3d,0x21,0x30,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x26,0x26,0x28,0x66,0x3d,0x63,0x2e,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x63,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x26,0x26,0x28,0x67,0x3d,0x63,0x2e,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x29,0x29,0x3b,0x62,0x3d,0x65,0x6c,0x28,0x62,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x31,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x3f,0x63,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x65,0x2c,0x21,0x31,0x2c,0x66,0x2c,0x67,0x29,0x3b,0x61,0x5b,0x75,0x66,0x5d,0x3d,0x62,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3b,0x73,0x66,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x64,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x30,0x3b,0x61,0x3c,0x64,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2b,0x2b,0x29,0x63,0x3d,0x64,0x5b,0x61,0x5d,0x2c,0x65,0x3d,0x63,0x2e,0x5f,0x67,0x65,0x74,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x2c,0x65,0x3d,0x65,0x28,0x63,0x2e,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x62,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3f,0x62,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x3d,0x5b,0x63,0x2c,0x65,0x5d,0x3a,0x62,0x2e,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x2c,0x5c,0x6e,0x65,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x65,0x77,0x20,0x6d,0x6c,0x28,0x62,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x69,0x66,0x28,0x21,0x6f,0x6c,0x28,0x62,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x62,0x2c,0x21,0x31,0x2c,0x63,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x41,0x74,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x6f,0x6c,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x34,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3f,0x28,0x52,0x6b,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x6c,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x2c,0x21,0x31,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x5b,0x75,0x66,0x5d,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x29,0x7d,0x29,0x2c,0x21,0x30,0x29,0x3a,0x21,0x31,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x62,0x61,0x74,0x63,0x68,0x65,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x73,0x3d,0x51,0x6b,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x6e,0x64,0x65,0x72,0x53,0x75,0x62,0x74,0x72,0x65,0x65,0x49,0x6e,0x74,0x6f,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x64,0x29,0x7b,0x69,0x66,0x28,0x21,0x6f,0x6c,0x28,0x63,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x32,0x30,0x30,0x29,0x29,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x70,0x28,0x33,0x38,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x6c,0x28,0x61,0x2c,0x62,0x2c,0x63,0x2c,0x21,0x31,0x2c,0x64,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d,0x5c,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x2d,0x6e,0x65,0x78,0x74,0x2d,0x66,0x31,0x33,0x33,0x38,0x66,0x38,0x30,0x38,0x30,0x2d,0x32,0x30,0x32,0x34,0x30,0x34,0x32,0x36,0x5c,0x22,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x76,0x61,0x72,0x20,0x6d,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x27,0x29,0x3b,0x5c,0x6e,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x20,0x3d,0x20,0x6d,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3b,0x5c,0x6e,0x20,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x20,0x3d,0x20,0x6d,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x3b,0x5c,0x6e,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x76,0x61,0x72,0x20,0x69,0x20,0x3d,0x20,0x6d,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x3b,0x5c,0x6e,0x20,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x63,0x2c,0x20,0x6f,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x69,0x2e,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x74,0x72,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x28,0x63,0x2c,0x20,0x6f,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x7d,0x20,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x2e,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x7d,0x5c,0x6e,0x20,0x20,0x7d,0x3b,0x5c,0x6e,0x20,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x63,0x2c,0x20,0x68,0x2c,0x20,0x6f,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x69,0x2e,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x74,0x72,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x2e,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x28,0x63,0x2c,0x20,0x68,0x2c,0x20,0x6f,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x7d,0x20,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x2e,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x7d,0x5c,0x6e,0x20,0x20,0x7d,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x2c,0x22,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x28,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x2f,0x2a,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x20,0x2a,0x2f,0x5c,0x6e,0x20,0x20,0x69,0x66,0x20,0x28,0x5c,0x6e,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x27,0x20,0x7c,0x7c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x2e,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x20,0x21,0x3d,0x3d,0x20,0x27,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x5c,0x6e,0x20,0x20,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x5c,0x6e,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x21,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x54,0x68,0x69,0x73,0x20,0x62,0x72,0x61,0x6e,0x63,0x68,0x20,0x69,0x73,0x20,0x75,0x6e,0x72,0x65,0x61,0x63,0x68,0x61,0x62,0x6c,0x65,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x69,0x6e,0x20,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x74,0x72,0x75,0x65,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6e,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x54,0x68,0x65,0x72,0x65,0x66,0x6f,0x72,0x65,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x72,0x61,0x6e,0x63,0x68,0x20,0x69,0x73,0x20,0x73,0x74,0x69,0x6c,0x6c,0x20,0x68,0x65,0x72,0x65,0x2c,0x20,0x64,0x65,0x61,0x64,0x20,0x63,0x6f,0x64,0x65,0x20,0x65,0x6c,0x69,0x6d,0x69,0x6e,0x61,0x74,0x69,0x6f,0x6e,0x20,0x77,0x61,0x73,0x6e,0x27,0x74,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x6c,0x79,0x20,0x61,0x70,0x70,0x6c,0x69,0x65,0x64,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x44,0x6f,0x6e,0x27,0x74,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x44,0x65,0x76,0x54,0x6f,0x6f,0x6c,0x73,0x20,0x72,0x65,0x6c,0x69,0x65,0x73,0x20,0x6f,0x6e,0x20,0x69,0x74,0x2e,0x20,0x41,0x6c,0x73,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x74,0x68,0x69,0x73,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6f,0x63,0x63,0x75,0x72,0x20,0x65,0x6c,0x73,0x65,0x77,0x68,0x65,0x72,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x6f,0x72,0x20,0x69,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x61,0x75,0x73,0x65,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x61,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x6f,0x77,0x20,0x6e,0x65,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x27,0x5e,0x5f,0x5e,0x27,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x5c,0x6e,0x20,0x20,0x74,0x72,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x56,0x65,0x72,0x69,0x66,0x79,0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x61,0x62,0x6f,0x76,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x64,0x65,0x61,0x64,0x20,0x63,0x6f,0x64,0x65,0x20,0x65,0x6c,0x69,0x6d,0x69,0x6e,0x61,0x74,0x65,0x64,0x20,0x28,0x44,0x43,0x45,0x27,0x64,0x29,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x2e,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x28,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x20,0x63,0x61,0x74,0x63,0x68,0x20,0x28,0x65,0x72,0x72,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x44,0x65,0x76,0x54,0x6f,0x6f,0x6c,0x73,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x6e,0x27,0x74,0x20,0x63,0x72,0x61,0x73,0x68,0x20,0x52,0x65,0x61,0x63,0x74,0x2c,0x20,0x6e,0x6f,0x20,0x6d,0x61,0x74,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x57,0x65,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x73,0x74,0x69,0x6c,0x6c,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x20,0x69,0x6e,0x20,0x63,0x61,0x73,0x65,0x20,0x77,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x6f,0x64,0x65,0x2e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x65,0x72,0x72,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x5c,0x6e,0x7d,0x5c,0x6e,0x5c,0x6e,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x2f,0x2f,0x20,0x44,0x43,0x45,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x68,0x61,0x70,0x70,0x65,0x6e,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x44,0x4f,0x4d,0x20,0x62,0x75,0x6e,0x64,0x6c,0x65,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x73,0x20,0x73,0x6f,0x20,0x74,0x68,0x61,0x74,0x5c,0x6e,0x20,0x20,0x2f,0x2f,0x20,0x44,0x65,0x76,0x54,0x6f,0x6f,0x6c,0x73,0x20,0x63,0x61,0x6e,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x20,0x62,0x61,0x64,0x20,0x6d,0x69,0x6e,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x64,0x75,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x5c,0x6e,0x20,0x20,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x28,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2e,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x2c,0x22,0x2f,0x2a,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x5c,0x6e,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2d,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x5c,0x6e,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x5c,0x6e,0x20,0x2a,0x2f,0x5c,0x6e,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x5c,0x22,0x29,0x2c,0x6b,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x6c,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x6d,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x6e,0x3d,0x66,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x2e,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x2c,0x70,0x3d,0x7b,0x6b,0x65,0x79,0x3a,0x21,0x30,0x2c,0x72,0x65,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x65,0x6c,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x7d,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x71,0x28,0x63,0x2c,0x61,0x2c,0x67,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x2c,0x64,0x3d,0x7b,0x7d,0x2c,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x67,0x26,0x26,0x28,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x67,0x29,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x2e,0x6b,0x65,0x79,0x29,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x61,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x68,0x3d,0x61,0x2e,0x72,0x65,0x66,0x29,0x3b,0x66,0x6f,0x72,0x28,0x62,0x20,0x69,0x6e,0x20,0x61,0x29,0x6d,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x2c,0x62,0x29,0x26,0x26,0x21,0x70,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x62,0x29,0x26,0x26,0x28,0x64,0x5b,0x62,0x5d,0x3d,0x61,0x5b,0x62,0x5d,0x29,0x3b,0x69,0x66,0x28,0x63,0x26,0x26,0x63,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x66,0x6f,0x72,0x28,0x62,0x20,0x69,0x6e,0x20,0x61,0x3d,0x63,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x2c,0x61,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x64,0x5b,0x62,0x5d,0x26,0x26,0x28,0x64,0x5b,0x62,0x5d,0x3d,0x61,0x5b,0x62,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x6b,0x2c,0x74,0x79,0x70,0x65,0x3a,0x63,0x2c,0x6b,0x65,0x79,0x3a,0x65,0x2c,0x72,0x65,0x66,0x3a,0x68,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x64,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x6e,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7d,0x7d,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x3d,0x6c,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x6a,0x73,0x78,0x3d,0x71,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x6a,0x73,0x78,0x73,0x3d,0x71,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x2f,0x2a,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x5c,0x6e,0x20,0x2a,0x20,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x5c,0x6e,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x5c,0x6e,0x20,0x2a,0x2f,0x5c,0x6e,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x6e,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x6f,0x72,0x74,0x61,0x6c,0x5c,0x22,0x29,0x2c,0x70,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x5c,0x22,0x29,0x2c,0x71,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x74,0x72,0x69,0x63,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x5c,0x22,0x29,0x2c,0x72,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x5c,0x22,0x29,0x2c,0x74,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x5c,0x22,0x29,0x2c,0x75,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5c,0x22,0x29,0x2c,0x76,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x5f,0x72,0x65,0x66,0x5c,0x22,0x29,0x2c,0x77,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x73,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x5c,0x22,0x29,0x2c,0x78,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6d,0x65,0x6d,0x6f,0x5c,0x22,0x29,0x2c,0x79,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x66,0x6f,0x72,0x28,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x2e,0x6c,0x61,0x7a,0x79,0x5c,0x22,0x29,0x2c,0x7a,0x3d,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x41,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x61,0x3d,0x7a,0x26,0x26,0x61,0x5b,0x7a,0x5d,0x7c,0x7c,0x61,0x5b,0x5c,0x22,0x40,0x40,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x5c,0x22,0x5d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x3f,0x61,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x42,0x3d,0x7b,0x69,0x73,0x4d,0x6f,0x75,0x6e,0x74,0x65,0x64,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x21,0x31,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x2c,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x7d,0x2c,0x43,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x61,0x73,0x73,0x69,0x67,0x6e,0x2c,0x44,0x3d,0x7b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x61,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x73,0x3d,0x44,0x3b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x65,0x7c,0x7c,0x42,0x7d,0x45,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x69,0x73,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x7b,0x7d,0x3b,0x5c,0x6e,0x45,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x28,0x2e,0x2e,0x2e,0x29,0x3a,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,0x61,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x20,0x74,0x6f,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x6f,0x72,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x2e,0x5c,0x22,0x29,0x3b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x2c,0x62,0x2c,0x5c,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x5c,0x22,0x29,0x7d,0x3b,0x45,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x66,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x2e,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x2c,0x5c,0x22,0x66,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x5c,0x22,0x29,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x46,0x28,0x29,0x7b,0x7d,0x46,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3d,0x45,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x74,0x68,0x69,0x73,0x2e,0x70,0x72,0x6f,0x70,0x73,0x3d,0x61,0x3b,0x74,0x68,0x69,0x73,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x62,0x3b,0x74,0x68,0x69,0x73,0x2e,0x72,0x65,0x66,0x73,0x3d,0x44,0x3b,0x74,0x68,0x69,0x73,0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x3d,0x65,0x7c,0x7c,0x42,0x7d,0x76,0x61,0x72,0x20,0x48,0x3d,0x47,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x3d,0x6e,0x65,0x77,0x20,0x46,0x3b,0x5c,0x6e,0x48,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x3d,0x47,0x3b,0x43,0x28,0x48,0x2c,0x45,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x29,0x3b,0x48,0x2e,0x69,0x73,0x50,0x75,0x72,0x65,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x49,0x3d,0x41,0x72,0x72,0x61,0x79,0x2e,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x2c,0x4a,0x3d,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2c,0x4b,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x4c,0x3d,0x7b,0x6b,0x65,0x79,0x3a,0x21,0x30,0x2c,0x72,0x65,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x65,0x6c,0x66,0x3a,0x21,0x30,0x2c,0x5f,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x21,0x30,0x7d,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x2c,0x63,0x3d,0x7b,0x7d,0x2c,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x68,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x29,0x66,0x6f,0x72,0x28,0x64,0x20,0x69,0x6e,0x20,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x68,0x3d,0x62,0x2e,0x72,0x65,0x66,0x29,0x2c,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x6b,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x62,0x2e,0x6b,0x65,0x79,0x29,0x2c,0x62,0x29,0x4a,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x62,0x2c,0x64,0x29,0x26,0x26,0x21,0x4c,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x64,0x29,0x26,0x26,0x28,0x63,0x5b,0x64,0x5d,0x3d,0x62,0x5b,0x64,0x5d,0x29,0x3b,0x76,0x61,0x72,0x20,0x67,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x32,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x67,0x29,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x65,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x3c,0x67,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x66,0x3d,0x41,0x72,0x72,0x61,0x79,0x28,0x67,0x29,0x2c,0x6d,0x3d,0x30,0x3b,0x6d,0x3c,0x67,0x3b,0x6d,0x2b,0x2b,0x29,0x66,0x5b,0x6d,0x5d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x6d,0x2b,0x32,0x5d,0x3b,0x63,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x66,0x7d,0x69,0x66,0x28,0x61,0x26,0x26,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x66,0x6f,0x72,0x28,0x64,0x20,0x69,0x6e,0x20,0x67,0x3d,0x61,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x2c,0x67,0x29,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x63,0x5b,0x64,0x5d,0x26,0x26,0x28,0x63,0x5b,0x64,0x5d,0x3d,0x67,0x5b,0x64,0x5d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x6c,0x2c,0x74,0x79,0x70,0x65,0x3a,0x61,0x2c,0x6b,0x65,0x79,0x3a,0x6b,0x2c,0x72,0x65,0x66,0x3a,0x68,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x63,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x4b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x6c,0x2c,0x74,0x79,0x70,0x65,0x3a,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x62,0x2c,0x72,0x65,0x66,0x3a,0x61,0x2e,0x72,0x65,0x66,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x61,0x2e,0x70,0x72,0x6f,0x70,0x73,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x61,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4f,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3d,0x3d,0x3d,0x6c,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x7b,0x5c,0x22,0x3d,0x5c,0x22,0x3a,0x5c,0x22,0x3d,0x30,0x5c,0x22,0x2c,0x5c,0x22,0x3a,0x5c,0x22,0x3a,0x5c,0x22,0x3d,0x32,0x5c,0x22,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x24,0x5c,0x22,0x2b,0x61,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x2f,0x5b,0x3d,0x3a,0x5d,0x2f,0x67,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x5b,0x61,0x5d,0x7d,0x29,0x7d,0x76,0x61,0x72,0x20,0x50,0x3d,0x2f,0x5c,0x5c,0x2f,0x2b,0x2f,0x67,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x51,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x61,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x61,0x2e,0x6b,0x65,0x79,0x3f,0x65,0x73,0x63,0x61,0x70,0x65,0x28,0x5c,0x22,0x5c,0x22,0x2b,0x61,0x2e,0x6b,0x65,0x79,0x29,0x3a,0x62,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x33,0x36,0x29,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x28,0x61,0x2c,0x62,0x2c,0x65,0x2c,0x64,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x6b,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x61,0x3b,0x69,0x66,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x7c,0x7c,0x5c,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x29,0x61,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x68,0x3d,0x21,0x31,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x29,0x68,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x6b,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x5c,0x22,0x3a,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3a,0x68,0x3d,0x21,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3a,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x2e,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x6c,0x3a,0x63,0x61,0x73,0x65,0x20,0x6e,0x3a,0x68,0x3d,0x21,0x30,0x7d,0x7d,0x69,0x66,0x28,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x3d,0x61,0x2c,0x63,0x3d,0x63,0x28,0x68,0x29,0x2c,0x61,0x3d,0x5c,0x22,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x3f,0x5c,0x22,0x2e,0x5c,0x22,0x2b,0x51,0x28,0x68,0x2c,0x30,0x29,0x3a,0x64,0x2c,0x49,0x28,0x63,0x29,0x3f,0x28,0x65,0x3d,0x5c,0x22,0x5c,0x22,0x2c,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x61,0x26,0x26,0x28,0x65,0x3d,0x61,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x50,0x2c,0x5c,0x22,0x24,0x26,0x2f,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2f,0x5c,0x22,0x29,0x2c,0x52,0x28,0x63,0x2c,0x62,0x2c,0x65,0x2c,0x5c,0x22,0x5c,0x22,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x29,0x29,0x3a,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x63,0x26,0x26,0x28,0x4f,0x28,0x63,0x29,0x26,0x26,0x28,0x63,0x3d,0x4e,0x28,0x63,0x2c,0x65,0x2b,0x28,0x21,0x63,0x2e,0x6b,0x65,0x79,0x7c,0x7c,0x68,0x26,0x26,0x68,0x2e,0x6b,0x65,0x79,0x3d,0x3d,0x3d,0x63,0x2e,0x6b,0x65,0x79,0x3f,0x5c,0x22,0x5c,0x22,0x3a,0x28,0x5c,0x22,0x5c,0x22,0x2b,0x63,0x2e,0x6b,0x65,0x79,0x29,0x2e,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x28,0x50,0x2c,0x5c,0x22,0x24,0x26,0x2f,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x2f,0x5c,0x22,0x29,0x2b,0x61,0x29,0x29,0x2c,0x62,0x2e,0x70,0x75,0x73,0x68,0x28,0x63,0x29,0x29,0x2c,0x31,0x3b,0x68,0x3d,0x30,0x3b,0x64,0x3d,0x5c,0x22,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x3f,0x5c,0x22,0x2e,0x5c,0x22,0x3a,0x64,0x2b,0x5c,0x22,0x3a,0x5c,0x22,0x3b,0x69,0x66,0x28,0x49,0x28,0x61,0x29,0x29,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x67,0x3d,0x30,0x3b,0x67,0x3c,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x67,0x2b,0x2b,0x29,0x7b,0x6b,0x3d,0x5c,0x6e,0x61,0x5b,0x67,0x5d,0x3b,0x76,0x61,0x72,0x20,0x66,0x3d,0x64,0x2b,0x51,0x28,0x6b,0x2c,0x67,0x29,0x3b,0x68,0x2b,0x3d,0x52,0x28,0x6b,0x2c,0x62,0x2c,0x65,0x2c,0x66,0x2c,0x63,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x66,0x3d,0x41,0x28,0x61,0x29,0x2c,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x66,0x29,0x66,0x6f,0x72,0x28,0x61,0x3d,0x66,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x61,0x29,0x2c,0x67,0x3d,0x30,0x3b,0x21,0x28,0x6b,0x3d,0x61,0x2e,0x6e,0x65,0x78,0x74,0x28,0x29,0x29,0x2e,0x64,0x6f,0x6e,0x65,0x3b,0x29,0x6b,0x3d,0x6b,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x66,0x3d,0x64,0x2b,0x51,0x28,0x6b,0x2c,0x67,0x2b,0x2b,0x29,0x2c,0x68,0x2b,0x3d,0x52,0x28,0x6b,0x2c,0x62,0x2c,0x65,0x2c,0x66,0x2c,0x63,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x6b,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x62,0x3d,0x53,0x74,0x72,0x69,0x6e,0x67,0x28,0x61,0x29,0x2c,0x45,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x4f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x61,0x73,0x20,0x61,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x63,0x68,0x69,0x6c,0x64,0x20,0x28,0x66,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x5c,0x22,0x2b,0x28,0x5c,0x22,0x5b,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x5d,0x5c,0x22,0x3d,0x3d,0x3d,0x62,0x3f,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x6b,0x65,0x79,0x73,0x20,0x7b,0x5c,0x22,0x2b,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x61,0x29,0x2e,0x6a,0x6f,0x69,0x6e,0x28,0x5c,0x22,0x2c,0x20,0x5c,0x22,0x29,0x2b,0x5c,0x22,0x7d,0x5c,0x22,0x3a,0x62,0x29,0x2b,0x5c,0x22,0x29,0x2e,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,0x20,0x6d,0x65,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x72,0x65,0x6e,0x64,0x65,0x72,0x20,0x61,0x20,0x63,0x6f,0x6c,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x20,0x75,0x73,0x65,0x20,0x61,0x6e,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x2e,0x5c,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x53,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x61,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x5b,0x5d,0x2c,0x63,0x3d,0x30,0x3b,0x52,0x28,0x61,0x2c,0x64,0x2c,0x5c,0x22,0x5c,0x22,0x2c,0x5c,0x22,0x5c,0x22,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x65,0x2c,0x61,0x2c,0x63,0x2b,0x2b,0x29,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x54,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x2d,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x62,0x3d,0x62,0x28,0x29,0x3b,0x62,0x2e,0x74,0x68,0x65,0x6e,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x7c,0x7c,0x2d,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x31,0x2c,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x62,0x7d,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x62,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x7c,0x7c,0x2d,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x32,0x2c,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x62,0x7d,0x29,0x3b,0x2d,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x26,0x26,0x28,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3d,0x30,0x2c,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3d,0x62,0x29,0x7d,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x61,0x2e,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3b,0x74,0x68,0x72,0x6f,0x77,0x20,0x61,0x2e,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x7d,0x5c,0x6e,0x76,0x61,0x72,0x20,0x55,0x3d,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x56,0x3d,0x7b,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x2c,0x57,0x3d,0x7b,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x3a,0x55,0x2c,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x3a,0x56,0x2c,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x3a,0x4b,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x58,0x28,0x29,0x7b,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x61,0x63,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x20,0x69,0x6e,0x20,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x75,0x69,0x6c,0x64,0x73,0x20,0x6f,0x66,0x20,0x52,0x65,0x61,0x63,0x74,0x2e,0x5c,0x22,0x29,0x3b,0x7d,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x7b,0x6d,0x61,0x70,0x3a,0x53,0x2c,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x53,0x28,0x61,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x2c,0x65,0x29,0x7d,0x2c,0x63,0x6f,0x75,0x6e,0x74,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x30,0x3b,0x53,0x28,0x61,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x2b,0x2b,0x7d,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x2c,0x74,0x6f,0x41,0x72,0x72,0x61,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x53,0x28,0x61,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x29,0x7c,0x7c,0x5b,0x5d,0x7d,0x2c,0x6f,0x6e,0x6c,0x79,0x3a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x21,0x4f,0x28,0x61,0x29,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x52,0x65,0x61,0x63,0x74,0x2e,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2e,0x6f,0x6e,0x6c,0x79,0x20,0x65,0x78,0x70,0x65,0x63,0x74,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20,0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x20,0x63,0x68,0x69,0x6c,0x64,0x2e,0x5c,0x22,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x45,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x3d,0x70,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x3d,0x72,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x50,0x75,0x72,0x65,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x3d,0x47,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x3d,0x71,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x3d,0x77,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x3d,0x57,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x61,0x63,0x74,0x3d,0x58,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x6c,0x6f,0x6e,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x61,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x29,0x74,0x68,0x72,0x6f,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x52,0x65,0x61,0x63,0x74,0x2e,0x63,0x6c,0x6f,0x6e,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x3a,0x20,0x54,0x68,0x65,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x61,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x2c,0x20,0x62,0x75,0x74,0x20,0x79,0x6f,0x75,0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x20,0x5c,0x22,0x2b,0x61,0x2b,0x5c,0x22,0x2e,0x5c,0x22,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x43,0x28,0x7b,0x7d,0x2c,0x61,0x2e,0x70,0x72,0x6f,0x70,0x73,0x29,0x2c,0x63,0x3d,0x61,0x2e,0x6b,0x65,0x79,0x2c,0x6b,0x3d,0x61,0x2e,0x72,0x65,0x66,0x2c,0x68,0x3d,0x61,0x2e,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x62,0x29,0x7b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x72,0x65,0x66,0x26,0x26,0x28,0x6b,0x3d,0x62,0x2e,0x72,0x65,0x66,0x2c,0x68,0x3d,0x4b,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x29,0x3b,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x62,0x2e,0x6b,0x65,0x79,0x26,0x26,0x28,0x63,0x3d,0x5c,0x22,0x5c,0x22,0x2b,0x62,0x2e,0x6b,0x65,0x79,0x29,0x3b,0x69,0x66,0x28,0x61,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x61,0x2e,0x74,0x79,0x70,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x29,0x76,0x61,0x72,0x20,0x67,0x3d,0x61,0x2e,0x74,0x79,0x70,0x65,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x3b,0x66,0x6f,0x72,0x28,0x66,0x20,0x69,0x6e,0x20,0x62,0x29,0x4a,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x62,0x2c,0x66,0x29,0x26,0x26,0x21,0x4c,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x66,0x29,0x26,0x26,0x28,0x64,0x5b,0x66,0x5d,0x3d,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x5b,0x66,0x5d,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x67,0x3f,0x67,0x5b,0x66,0x5d,0x3a,0x62,0x5b,0x66,0x5d,0x29,0x7d,0x76,0x61,0x72,0x20,0x66,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x32,0x3b,0x69,0x66,0x28,0x31,0x3d,0x3d,0x3d,0x66,0x29,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x65,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x31,0x3c,0x66,0x29,0x7b,0x67,0x3d,0x41,0x72,0x72,0x61,0x79,0x28,0x66,0x29,0x3b,0x5c,0x6e,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6d,0x3d,0x30,0x3b,0x6d,0x3c,0x66,0x3b,0x6d,0x2b,0x2b,0x29,0x67,0x5b,0x6d,0x5d,0x3d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x6d,0x2b,0x32,0x5d,0x3b,0x64,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x3d,0x67,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x6c,0x2c,0x74,0x79,0x70,0x65,0x3a,0x61,0x2e,0x74,0x79,0x70,0x65,0x2c,0x6b,0x65,0x79,0x3a,0x63,0x2c,0x72,0x65,0x66,0x3a,0x6b,0x2c,0x70,0x72,0x6f,0x70,0x73,0x3a,0x64,0x2c,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x3a,0x68,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x61,0x3d,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x75,0x2c,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x61,0x2c,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x3a,0x61,0x2c,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x43,0x6f,0x75,0x6e,0x74,0x3a,0x30,0x2c,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x4e,0x61,0x6d,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x61,0x2e,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x3d,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x74,0x2c,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x61,0x7d,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x3d,0x61,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x4d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x46,0x61,0x63,0x74,0x6f,0x72,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x4d,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x61,0x29,0x3b,0x62,0x2e,0x74,0x79,0x70,0x65,0x3d,0x61,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x7d,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x76,0x2c,0x72,0x65,0x6e,0x64,0x65,0x72,0x3a,0x61,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x69,0x73,0x56,0x61,0x6c,0x69,0x64,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x3d,0x4f,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x6c,0x61,0x7a,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x79,0x2c,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x3a,0x7b,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x3a,0x2d,0x31,0x2c,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x3a,0x61,0x7d,0x2c,0x5f,0x69,0x6e,0x69,0x74,0x3a,0x54,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x6d,0x65,0x6d,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x3a,0x78,0x2c,0x74,0x79,0x70,0x65,0x3a,0x61,0x2c,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x62,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x62,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x56,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x56,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x7b,0x7d,0x3b,0x74,0x72,0x79,0x7b,0x61,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x56,0x2e,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x62,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x61,0x63,0x74,0x3d,0x58,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x28,0x61,0x29,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x28,0x61,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x49,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x64,0x28,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x28,0x61,0x2c,0x62,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x52,0x65,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x52,0x65,0x66,0x28,0x61,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x61,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x28,0x61,0x2c,0x62,0x2c,0x65,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x55,0x2e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x2e,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d,0x5c,0x22,0x31,0x38,0x2e,0x33,0x2e,0x31,0x5c,0x22,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2e,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x2c,0x22,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x72,0x65,0x61,0x63,0x74,0x2d,0x6a,0x73,0x78,0x2d,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x2c,0x22,0x2f,0x2a,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x40,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x52,0x65,0x61,0x63,0x74,0x5c,0x6e,0x20,0x2a,0x20,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x46,0x61,0x63,0x65,0x62,0x6f,0x6f,0x6b,0x2c,0x20,0x49,0x6e,0x63,0x2e,0x20,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x20,0x61,0x66,0x66,0x69,0x6c,0x69,0x61,0x74,0x65,0x73,0x2e,0x5c,0x6e,0x20,0x2a,0x5c,0x6e,0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x4d,0x49,0x54,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x5c,0x6e,0x20,0x2a,0x20,0x4c,0x49,0x43,0x45,0x4e,0x53,0x45,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x74,0x72,0x65,0x65,0x2e,0x5c,0x6e,0x20,0x2a,0x2f,0x5c,0x6e,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x61,0x2e,0x70,0x75,0x73,0x68,0x28,0x62,0x29,0x3b,0x61,0x3a,0x66,0x6f,0x72,0x28,0x3b,0x30,0x3c,0x63,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x63,0x2d,0x31,0x3e,0x3e,0x3e,0x31,0x2c,0x65,0x3d,0x61,0x5b,0x64,0x5d,0x3b,0x69,0x66,0x28,0x30,0x3c,0x67,0x28,0x65,0x2c,0x62,0x29,0x29,0x61,0x5b,0x64,0x5d,0x3d,0x62,0x2c,0x61,0x5b,0x63,0x5d,0x3d,0x65,0x2c,0x63,0x3d,0x64,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x28,0x61,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x5b,0x30,0x5d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6b,0x28,0x61,0x29,0x7b,0x69,0x66,0x28,0x30,0x3d,0x3d,0x3d,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x61,0x5b,0x30,0x5d,0x2c,0x63,0x3d,0x61,0x2e,0x70,0x6f,0x70,0x28,0x29,0x3b,0x69,0x66,0x28,0x63,0x21,0x3d,0x3d,0x62,0x29,0x7b,0x61,0x5b,0x30,0x5d,0x3d,0x63,0x3b,0x61,0x3a,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x64,0x3d,0x30,0x2c,0x65,0x3d,0x61,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x77,0x3d,0x65,0x3e,0x3e,0x3e,0x31,0x3b,0x64,0x3c,0x77,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x32,0x2a,0x28,0x64,0x2b,0x31,0x29,0x2d,0x31,0x2c,0x43,0x3d,0x61,0x5b,0x6d,0x5d,0x2c,0x6e,0x3d,0x6d,0x2b,0x31,0x2c,0x78,0x3d,0x61,0x5b,0x6e,0x5d,0x3b,0x69,0x66,0x28,0x30,0x3e,0x67,0x28,0x43,0x2c,0x63,0x29,0x29,0x6e,0x3c,0x65,0x26,0x26,0x30,0x3e,0x67,0x28,0x78,0x2c,0x43,0x29,0x3f,0x28,0x61,0x5b,0x64,0x5d,0x3d,0x78,0x2c,0x61,0x5b,0x6e,0x5d,0x3d,0x63,0x2c,0x64,0x3d,0x6e,0x29,0x3a,0x28,0x61,0x5b,0x64,0x5d,0x3d,0x43,0x2c,0x61,0x5b,0x6d,0x5d,0x3d,0x63,0x2c,0x64,0x3d,0x6d,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x6e,0x3c,0x65,0x26,0x26,0x30,0x3e,0x67,0x28,0x78,0x2c,0x63,0x29,0x29,0x61,0x5b,0x64,0x5d,0x3d,0x78,0x2c,0x61,0x5b,0x6e,0x5d,0x3d,0x63,0x2c,0x64,0x3d,0x6e,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x61,0x7d,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x28,0x61,0x2c,0x62,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x61,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x2d,0x62,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x21,0x3d,0x3d,0x63,0x3f,0x63,0x3a,0x61,0x2e,0x69,0x64,0x2d,0x62,0x2e,0x69,0x64,0x7d,0x69,0x66,0x28,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x26,0x26,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x29,0x7b,0x76,0x61,0x72,0x20,0x6c,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x70,0x3d,0x44,0x61,0x74,0x65,0x2c,0x71,0x3d,0x70,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x71,0x7d,0x7d,0x76,0x61,0x72,0x20,0x72,0x3d,0x5b,0x5d,0x2c,0x74,0x3d,0x5b,0x5d,0x2c,0x75,0x3d,0x31,0x2c,0x76,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x3d,0x33,0x2c,0x7a,0x3d,0x21,0x31,0x2c,0x41,0x3d,0x21,0x31,0x2c,0x42,0x3d,0x21,0x31,0x2c,0x44,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x45,0x3d,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3f,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x3a,0x6e,0x75,0x6c,0x6c,0x2c,0x46,0x3d,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x73,0x65,0x74,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x3f,0x73,0x65,0x74,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x3a,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x26,0x26,0x76,0x6f,0x69,0x64,0x20,0x30,0x21,0x3d,0x3d,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x2e,0x69,0x73,0x49,0x6e,0x70,0x75,0x74,0x50,0x65,0x6e,0x64,0x69,0x6e,0x67,0x26,0x26,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x2e,0x69,0x73,0x49,0x6e,0x70,0x75,0x74,0x50,0x65,0x6e,0x64,0x69,0x6e,0x67,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x2e,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x29,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x47,0x28,0x61,0x29,0x7b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x62,0x3d,0x68,0x28,0x74,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x3b,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x62,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x29,0x6b,0x28,0x74,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x62,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x3d,0x61,0x29,0x6b,0x28,0x74,0x29,0x2c,0x62,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x62,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x2c,0x66,0x28,0x72,0x2c,0x62,0x29,0x3b,0x65,0x6c,0x73,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x62,0x3d,0x68,0x28,0x74,0x29,0x7d,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x48,0x28,0x61,0x29,0x7b,0x42,0x3d,0x21,0x31,0x3b,0x47,0x28,0x61,0x29,0x3b,0x69,0x66,0x28,0x21,0x41,0x29,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x68,0x28,0x72,0x29,0x29,0x41,0x3d,0x21,0x30,0x2c,0x49,0x28,0x4a,0x29,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x68,0x28,0x74,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x62,0x26,0x26,0x4b,0x28,0x48,0x2c,0x62,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x61,0x29,0x7d,0x7d,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4a,0x28,0x61,0x2c,0x62,0x29,0x7b,0x41,0x3d,0x21,0x31,0x3b,0x42,0x26,0x26,0x28,0x42,0x3d,0x21,0x31,0x2c,0x45,0x28,0x4c,0x29,0x2c,0x4c,0x3d,0x2d,0x31,0x29,0x3b,0x7a,0x3d,0x21,0x30,0x3b,0x76,0x61,0x72,0x20,0x63,0x3d,0x79,0x3b,0x74,0x72,0x79,0x7b,0x47,0x28,0x62,0x29,0x3b,0x66,0x6f,0x72,0x28,0x76,0x3d,0x68,0x28,0x72,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x76,0x26,0x26,0x28,0x21,0x28,0x76,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3e,0x62,0x29,0x7c,0x7c,0x61,0x26,0x26,0x21,0x4d,0x28,0x29,0x29,0x3b,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x76,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x64,0x29,0x7b,0x76,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x79,0x3d,0x76,0x2e,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3b,0x76,0x61,0x72,0x20,0x65,0x3d,0x64,0x28,0x76,0x2e,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3c,0x3d,0x62,0x29,0x3b,0x62,0x3d,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x65,0x3f,0x76,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x65,0x3a,0x76,0x3d,0x3d,0x3d,0x68,0x28,0x72,0x29,0x26,0x26,0x6b,0x28,0x72,0x29,0x3b,0x47,0x28,0x62,0x29,0x7d,0x65,0x6c,0x73,0x65,0x20,0x6b,0x28,0x72,0x29,0x3b,0x76,0x3d,0x68,0x28,0x72,0x29,0x7d,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x76,0x29,0x76,0x61,0x72,0x20,0x77,0x3d,0x21,0x30,0x3b,0x65,0x6c,0x73,0x65,0x7b,0x76,0x61,0x72,0x20,0x6d,0x3d,0x68,0x28,0x74,0x29,0x3b,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x6d,0x26,0x26,0x4b,0x28,0x48,0x2c,0x6d,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x62,0x29,0x3b,0x77,0x3d,0x21,0x31,0x7d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x77,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x76,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x79,0x3d,0x63,0x2c,0x7a,0x3d,0x21,0x31,0x7d,0x7d,0x76,0x61,0x72,0x20,0x4e,0x3d,0x21,0x31,0x2c,0x4f,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x4c,0x3d,0x2d,0x31,0x2c,0x50,0x3d,0x35,0x2c,0x51,0x3d,0x2d,0x31,0x3b,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x51,0x3c,0x50,0x3f,0x21,0x31,0x3a,0x21,0x30,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x28,0x29,0x7b,0x69,0x66,0x28,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x4f,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3d,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x51,0x3d,0x61,0x3b,0x76,0x61,0x72,0x20,0x62,0x3d,0x21,0x30,0x3b,0x74,0x72,0x79,0x7b,0x62,0x3d,0x4f,0x28,0x21,0x30,0x2c,0x61,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x62,0x3f,0x53,0x28,0x29,0x3a,0x28,0x4e,0x3d,0x21,0x31,0x2c,0x4f,0x3d,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x4e,0x3d,0x21,0x31,0x7d,0x76,0x61,0x72,0x20,0x53,0x3b,0x69,0x66,0x28,0x5c,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x46,0x29,0x53,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x46,0x28,0x52,0x29,0x7d,0x3b,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x5c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x5c,0x22,0x21,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0x76,0x61,0x72,0x20,0x54,0x3d,0x6e,0x65,0x77,0x20,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x55,0x3d,0x54,0x2e,0x70,0x6f,0x72,0x74,0x32,0x3b,0x54,0x2e,0x70,0x6f,0x72,0x74,0x31,0x2e,0x6f,0x6e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x3d,0x52,0x3b,0x53,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x55,0x2e,0x70,0x6f,0x73,0x74,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x7d,0x7d,0x65,0x6c,0x73,0x65,0x20,0x53,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x44,0x28,0x52,0x2c,0x30,0x29,0x7d,0x3b,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x49,0x28,0x61,0x29,0x7b,0x4f,0x3d,0x61,0x3b,0x4e,0x7c,0x7c,0x28,0x4e,0x3d,0x21,0x30,0x2c,0x53,0x28,0x29,0x29,0x7d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4b,0x28,0x61,0x2c,0x62,0x29,0x7b,0x4c,0x3d,0x44,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x61,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x29,0x7d,0x2c,0x62,0x29,0x7d,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x64,0x6c,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x35,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x31,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4c,0x6f,0x77,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x34,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x33,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x50,0x72,0x6f,0x66,0x69,0x6c,0x69,0x6e,0x67,0x3d,0x6e,0x75,0x6c,0x6c,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x55,0x73,0x65,0x72,0x42,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x32,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x61,0x6e,0x63,0x65,0x6c,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x61,0x2e,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x6e,0x75,0x6c,0x6c,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x41,0x7c,0x7c,0x7a,0x7c,0x7c,0x28,0x41,0x3d,0x21,0x30,0x2c,0x49,0x28,0x4a,0x29,0x29,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x66,0x6f,0x72,0x63,0x65,0x46,0x72,0x61,0x6d,0x65,0x52,0x61,0x74,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x30,0x3e,0x61,0x7c,0x7c,0x31,0x32,0x35,0x3c,0x61,0x3f,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x5c,0x22,0x66,0x6f,0x72,0x63,0x65,0x46,0x72,0x61,0x6d,0x65,0x52,0x61,0x74,0x65,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,0x61,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x20,0x69,0x6e,0x74,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x30,0x20,0x61,0x6e,0x64,0x20,0x31,0x32,0x35,0x2c,0x20,0x66,0x6f,0x72,0x63,0x69,0x6e,0x67,0x20,0x66,0x72,0x61,0x6d,0x65,0x20,0x72,0x61,0x74,0x65,0x73,0x20,0x68,0x69,0x67,0x68,0x65,0x72,0x20,0x74,0x68,0x61,0x6e,0x20,0x31,0x32,0x35,0x20,0x66,0x70,0x73,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x5c,0x22,0x29,0x3a,0x50,0x3d,0x30,0x3c,0x61,0x3f,0x4d,0x61,0x74,0x68,0x2e,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x31,0x45,0x33,0x2f,0x61,0x29,0x3a,0x35,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x79,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x46,0x69,0x72,0x73,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x28,0x72,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x65,0x78,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x79,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x76,0x61,0x72,0x20,0x62,0x3d,0x33,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x62,0x3d,0x79,0x7d,0x76,0x61,0x72,0x20,0x63,0x3d,0x79,0x3b,0x79,0x3d,0x62,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x79,0x3d,0x63,0x7d,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x70,0x61,0x75,0x73,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x50,0x61,0x69,0x6e,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x75,0x6e,0x57,0x69,0x74,0x68,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x29,0x7b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x61,0x3d,0x33,0x7d,0x76,0x61,0x72,0x20,0x63,0x3d,0x79,0x3b,0x79,0x3d,0x61,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x28,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x79,0x3d,0x63,0x7d,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x62,0x2c,0x63,0x29,0x7b,0x76,0x61,0x72,0x20,0x64,0x3d,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x28,0x29,0x3b,0x5c,0x22,0x6f,0x62,0x6a,0x65,0x63,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x6e,0x75,0x6c,0x6c,0x21,0x3d,0x3d,0x63,0x3f,0x28,0x63,0x3d,0x63,0x2e,0x64,0x65,0x6c,0x61,0x79,0x2c,0x63,0x3d,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x3d,0x3d,0x3d,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x63,0x26,0x26,0x30,0x3c,0x63,0x3f,0x64,0x2b,0x63,0x3a,0x64,0x29,0x3a,0x63,0x3d,0x64,0x3b,0x73,0x77,0x69,0x74,0x63,0x68,0x28,0x61,0x29,0x7b,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0x76,0x61,0x72,0x20,0x65,0x3d,0x2d,0x31,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0x65,0x3d,0x32,0x35,0x30,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x35,0x3a,0x65,0x3d,0x31,0x30,0x37,0x33,0x37,0x34,0x31,0x38,0x32,0x33,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x63,0x61,0x73,0x65,0x20,0x34,0x3a,0x65,0x3d,0x31,0x45,0x34,0x3b,0x62,0x72,0x65,0x61,0x6b,0x3b,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x65,0x3d,0x35,0x45,0x33,0x7d,0x65,0x3d,0x63,0x2b,0x65,0x3b,0x61,0x3d,0x7b,0x69,0x64,0x3a,0x75,0x2b,0x2b,0x2c,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3a,0x62,0x2c,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x3a,0x61,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x63,0x2c,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x3a,0x65,0x2c,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3a,0x2d,0x31,0x7d,0x3b,0x63,0x3e,0x64,0x3f,0x28,0x61,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x63,0x2c,0x66,0x28,0x74,0x2c,0x61,0x29,0x2c,0x6e,0x75,0x6c,0x6c,0x3d,0x3d,0x3d,0x68,0x28,0x72,0x29,0x26,0x26,0x61,0x3d,0x3d,0x3d,0x68,0x28,0x74,0x29,0x26,0x26,0x28,0x42,0x3f,0x28,0x45,0x28,0x4c,0x29,0x2c,0x4c,0x3d,0x2d,0x31,0x29,0x3a,0x42,0x3d,0x21,0x30,0x2c,0x4b,0x28,0x48,0x2c,0x63,0x2d,0x64,0x29,0x29,0x29,0x3a,0x28,0x61,0x2e,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x3d,0x65,0x2c,0x66,0x28,0x72,0x2c,0x61,0x29,0x2c,0x41,0x7c,0x7c,0x7a,0x7c,0x7c,0x28,0x41,0x3d,0x21,0x30,0x2c,0x49,0x28,0x4a,0x29,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x7d,0x3b,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x68,0x6f,0x75,0x6c,0x64,0x59,0x69,0x65,0x6c,0x64,0x3d,0x4d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2e,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x77,0x72,0x61,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x29,0x7b,0x76,0x61,0x72,0x20,0x62,0x3d,0x79,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x63,0x3d,0x79,0x3b,0x79,0x3d,0x62,0x3b,0x74,0x72,0x79,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x2e,0x61,0x70,0x70,0x6c,0x79,0x28,0x74,0x68,0x69,0x73,0x2c,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x29,0x7d,0x66,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x7b,0x79,0x3d,0x63,0x7d,0x7d,0x7d,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x27,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x69,0x66,0x20,0x28,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x2e,0x65,0x6e,0x76,0x2e,0x4e,0x4f,0x44,0x45,0x5f,0x45,0x4e,0x56,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x27,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2e,0x70,0x72,0x6f,0x64,0x75,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x69,0x6e,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x27,0x2e,0x2f,0x63,0x6a,0x73,0x2f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x72,0x2e,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x63,0x61,0x63,0x68,0x65,0x5c,0x6e,0x76,0x61,0x72,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5f,0x5f,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x6e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x28,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x43,0x68,0x65,0x63,0x6b,0x20,0x69,0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x69,0x73,0x20,0x69,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x63,0x61,0x63,0x68,0x65,0x64,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x3d,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5f,0x5f,0x5b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x20,0x28,0x63,0x61,0x63,0x68,0x65,0x64,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x21,0x3d,0x3d,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x64,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x43,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6e,0x65,0x77,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x28,0x61,0x6e,0x64,0x20,0x70,0x75,0x74,0x20,0x69,0x74,0x20,0x69,0x6e,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x63,0x61,0x63,0x68,0x65,0x29,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x3d,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5f,0x5f,0x5b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x5d,0x20,0x3d,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x69,0x64,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3a,0x20,0x7b,0x7d,0x5c,0x6e,0x5c,0x74,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x45,0x78,0x65,0x63,0x75,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x6e,0x5c,0x74,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5f,0x5f,0x5b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x5d,0x28,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2c,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x68,0x65,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5c,0x6e,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x2e,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x65,0x78,0x70,0x6f,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5f,0x5f,0x29,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6d,0x20,0x3d,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5f,0x5f,0x3b,0x5c,0x6e,0x5c,0x6e,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x67,0x65,0x74,0x74,0x65,0x72,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x66,0x6f,0x72,0x20,0x68,0x61,0x72,0x6d,0x6f,0x6e,0x79,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x64,0x20,0x3d,0x20,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x64,0x65,0x66,0x69,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6b,0x65,0x79,0x20,0x69,0x6e,0x20,0x64,0x65,0x66,0x69,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x64,0x65,0x66,0x69,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x6b,0x65,0x79,0x29,0x20,0x26,0x26,0x20,0x21,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x6b,0x65,0x79,0x29,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x6b,0x65,0x79,0x2c,0x20,0x7b,0x20,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x3a,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x67,0x65,0x74,0x3a,0x20,0x64,0x65,0x66,0x69,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x7d,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x66,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x5c,0x6e,0x2f,0x2f,0x20,0x54,0x68,0x69,0x73,0x20,0x66,0x69,0x6c,0x65,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x5c,0x6e,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x66,0x6f,0x72,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x2e,0x61,0x6c,0x6c,0x28,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x6b,0x65,0x79,0x73,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x66,0x29,0x2e,0x72,0x65,0x64,0x75,0x63,0x65,0x28,0x28,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x2c,0x20,0x6b,0x65,0x79,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x66,0x5b,0x6b,0x65,0x79,0x5d,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x2c,0x20,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x2c,0x20,0x5b,0x5d,0x29,0x29,0x3b,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x54,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x75,0x20,0x3d,0x20,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x6c,0x20,0x66,0x6f,0x72,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x73,0x20,0x62,0x61,0x73,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,0x5c,0x6e,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5c,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x5c,0x22,0x20,0x2b,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x20,0x2b,0x20,0x5c,0x22,0x2e,0x5c,0x22,0x20,0x2b,0x20,0x5c,0x22,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x5c,0x22,0x20,0x2b,0x20,0x5c,0x22,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x5c,0x22,0x3b,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x54,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6d,0x69,0x6e,0x69,0x43,0x73,0x73,0x46,0x20,0x3d,0x20,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x6c,0x20,0x66,0x6f,0x72,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x73,0x20,0x62,0x61,0x73,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,0x5c,0x6e,0x5c,0x74,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x3b,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x20,0x3d,0x20,0x28,0x6f,0x62,0x6a,0x2c,0x20,0x70,0x72,0x6f,0x70,0x29,0x20,0x3d,0x3e,0x20,0x28,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x2e,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x6f,0x62,0x6a,0x2c,0x20,0x70,0x72,0x6f,0x70,0x29,0x29,0x22,0x2c,0x22,0x76,0x61,0x72,0x20,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x5c,0x6e,0x76,0x61,0x72,0x20,0x64,0x61,0x74,0x61,0x57,0x65,0x62,0x70,0x61,0x63,0x6b,0x50,0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x20,0x5c,0x22,0x77,0x65,0x62,0x75,0x69,0x2d,0x72,0x65,0x61,0x63,0x74,0x2d,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3a,0x5c,0x22,0x3b,0x5c,0x6e,0x2f,0x2f,0x20,0x6c,0x6f,0x61,0x64,0x53,0x63,0x72,0x69,0x70,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x61,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x76,0x69,0x61,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x61,0x67,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6c,0x20,0x3d,0x20,0x28,0x75,0x72,0x6c,0x2c,0x20,0x64,0x6f,0x6e,0x65,0x2c,0x20,0x6b,0x65,0x79,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x5b,0x75,0x72,0x6c,0x5d,0x29,0x20,0x7b,0x20,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x5b,0x75,0x72,0x6c,0x5d,0x2e,0x70,0x75,0x73,0x68,0x28,0x64,0x6f,0x6e,0x65,0x29,0x3b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x7d,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x2c,0x20,0x6e,0x65,0x65,0x64,0x41,0x74,0x74,0x61,0x63,0x68,0x3b,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x6b,0x65,0x79,0x20,0x21,0x3d,0x3d,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x20,0x3d,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x42,0x79,0x54,0x61,0x67,0x4e,0x61,0x6d,0x65,0x28,0x5c,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x5c,0x22,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x73,0x20,0x3d,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x5b,0x69,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x73,0x2e,0x67,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x73,0x72,0x63,0x5c,0x22,0x29,0x20,0x3d,0x3d,0x20,0x75,0x72,0x6c,0x20,0x7c,0x7c,0x20,0x73,0x2e,0x67,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x64,0x61,0x74,0x61,0x2d,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5c,0x22,0x29,0x20,0x3d,0x3d,0x20,0x64,0x61,0x74,0x61,0x57,0x65,0x62,0x70,0x61,0x63,0x6b,0x50,0x72,0x65,0x66,0x69,0x78,0x20,0x2b,0x20,0x6b,0x65,0x79,0x29,0x20,0x7b,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x3d,0x20,0x73,0x3b,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x20,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x21,0x73,0x63,0x72,0x69,0x70,0x74,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x6e,0x65,0x65,0x64,0x41,0x74,0x74,0x61,0x63,0x68,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x3d,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x28,0x27,0x73,0x63,0x72,0x69,0x70,0x74,0x27,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x20,0x3d,0x20,0x27,0x75,0x74,0x66,0x2d,0x38,0x27,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x20,0x3d,0x20,0x31,0x32,0x30,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x20,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6e,0x63,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x6e,0x6f,0x6e,0x63,0x65,0x5c,0x22,0x2c,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6e,0x63,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x5c,0x22,0x64,0x61,0x74,0x61,0x2d,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5c,0x22,0x2c,0x20,0x64,0x61,0x74,0x61,0x57,0x65,0x62,0x70,0x61,0x63,0x6b,0x50,0x72,0x65,0x66,0x69,0x78,0x20,0x2b,0x20,0x6b,0x65,0x79,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x73,0x72,0x63,0x20,0x3d,0x20,0x75,0x72,0x6c,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x5b,0x75,0x72,0x6c,0x5d,0x20,0x3d,0x20,0x5b,0x64,0x6f,0x6e,0x65,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x6f,0x6e,0x53,0x63,0x72,0x69,0x70,0x74,0x43,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x20,0x3d,0x20,0x28,0x70,0x72,0x65,0x76,0x2c,0x20,0x65,0x76,0x65,0x6e,0x74,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x61,0x76,0x6f,0x69,0x64,0x20,0x6d,0x65,0x6d,0x20,0x6c,0x65,0x61,0x6b,0x73,0x20,0x69,0x6e,0x20,0x49,0x45,0x2e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x20,0x3d,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x64,0x6f,0x6e,0x65,0x46,0x6e,0x73,0x20,0x3d,0x20,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x5b,0x75,0x72,0x6c,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x5b,0x75,0x72,0x6c,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x20,0x26,0x26,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x28,0x73,0x63,0x72,0x69,0x70,0x74,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x64,0x6f,0x6e,0x65,0x46,0x6e,0x73,0x20,0x26,0x26,0x20,0x64,0x6f,0x6e,0x65,0x46,0x6e,0x73,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x6e,0x29,0x20,0x3d,0x3e,0x20,0x28,0x66,0x6e,0x28,0x65,0x76,0x65,0x6e,0x74,0x29,0x29,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x70,0x72,0x65,0x76,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x65,0x76,0x28,0x65,0x76,0x65,0x6e,0x74,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x6f,0x6e,0x53,0x63,0x72,0x69,0x70,0x74,0x43,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x2c,0x20,0x7b,0x20,0x74,0x79,0x70,0x65,0x3a,0x20,0x27,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x27,0x2c,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x7d,0x29,0x2c,0x20,0x31,0x32,0x30,0x30,0x30,0x30,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x20,0x3d,0x20,0x6f,0x6e,0x53,0x63,0x72,0x69,0x70,0x74,0x43,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x20,0x3d,0x20,0x6f,0x6e,0x53,0x63,0x72,0x69,0x70,0x74,0x43,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x2e,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x6e,0x65,0x65,0x64,0x41,0x74,0x74,0x61,0x63,0x68,0x20,0x26,0x26,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x68,0x65,0x61,0x64,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x28,0x73,0x63,0x72,0x69,0x70,0x74,0x29,0x3b,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x65,0x73,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x6f,0x6e,0x20,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x72,0x20,0x3d,0x20,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x20,0x21,0x3d,0x3d,0x20,0x27,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x27,0x20,0x26,0x26,0x20,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x54,0x61,0x67,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x54,0x61,0x67,0x2c,0x20,0x7b,0x20,0x76,0x61,0x6c,0x75,0x65,0x3a,0x20,0x27,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x27,0x20,0x7d,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x4f,0x62,0x6a,0x65,0x63,0x74,0x2e,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x2c,0x20,0x27,0x5f,0x5f,0x65,0x73,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x27,0x2c,0x20,0x7b,0x20,0x76,0x61,0x6c,0x75,0x65,0x3a,0x20,0x74,0x72,0x75,0x65,0x20,0x7d,0x29,0x3b,0x5c,0x6e,0x7d,0x3b,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x70,0x20,0x3d,0x20,0x5c,0x22,0x2f,0x5c,0x22,0x3b,0x22,0x2c,0x22,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x62,0x61,0x73,0x65,0x55,0x52,0x49,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x72,0x65,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x61,0x6e,0x64,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x5c,0x6e,0x2f,0x2f,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x3d,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2c,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x3d,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2f,0x70,0x72,0x65,0x66,0x65,0x74,0x63,0x68,0x65,0x64,0x5c,0x6e,0x2f,0x2f,0x20,0x5b,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x2c,0x20,0x72,0x65,0x6a,0x65,0x63,0x74,0x2c,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x5d,0x20,0x3d,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x2c,0x20,0x30,0x20,0x3d,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x5c,0x6e,0x76,0x61,0x72,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x20,0x3d,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x37,0x39,0x32,0x3a,0x20,0x30,0x5c,0x6e,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x66,0x2e,0x6a,0x20,0x3d,0x20,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x2c,0x20,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x4a,0x53,0x4f,0x4e,0x50,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x20,0x6a,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x20,0x3d,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x3f,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x20,0x3a,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x20,0x21,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0x20,0x2f,0x2f,0x20,0x30,0x20,0x6d,0x65,0x61,0x6e,0x73,0x20,0x5c,0x22,0x61,0x6c,0x72,0x65,0x61,0x64,0x79,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x5c,0x22,0x2e,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x61,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x20,0x6d,0x65,0x61,0x6e,0x73,0x20,0x5c,0x22,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x5c,0x22,0x2e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x5b,0x32,0x5d,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x74,0x72,0x75,0x65,0x29,0x20,0x7b,0x20,0x2f,0x2f,0x20,0x61,0x6c,0x6c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x20,0x68,0x61,0x76,0x65,0x20,0x4a,0x53,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x73,0x65,0x74,0x75,0x70,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x20,0x69,0x6e,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x63,0x61,0x63,0x68,0x65,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x20,0x3d,0x20,0x6e,0x65,0x77,0x20,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x28,0x28,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x2c,0x20,0x72,0x65,0x6a,0x65,0x63,0x74,0x29,0x20,0x3d,0x3e,0x20,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x20,0x3d,0x20,0x5b,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x2c,0x20,0x72,0x65,0x6a,0x65,0x63,0x74,0x5d,0x29,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x5b,0x32,0x5d,0x20,0x3d,0x20,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x70,0x20,0x2b,0x20,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x75,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x2f,0x2f,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x75,0x6e,0x77,0x6f,0x75,0x6e,0x64,0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x75,0x73,0x65,0x66,0x75,0x6c,0x20,0x73,0x74,0x61,0x63,0x6b,0x74,0x72,0x61,0x63,0x65,0x20,0x6c,0x61,0x74,0x65,0x72,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x3d,0x20,0x6e,0x65,0x77,0x20,0x45,0x72,0x72,0x6f,0x72,0x28,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x45,0x6e,0x64,0x65,0x64,0x20,0x3d,0x20,0x28,0x65,0x76,0x65,0x6e,0x74,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x20,0x21,0x3d,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x20,0x3d,0x20,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x65,0x72,0x72,0x6f,0x72,0x54,0x79,0x70,0x65,0x20,0x3d,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x26,0x26,0x20,0x28,0x65,0x76,0x65,0x6e,0x74,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x3d,0x20,0x27,0x6c,0x6f,0x61,0x64,0x27,0x20,0x3f,0x20,0x27,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x27,0x20,0x3a,0x20,0x65,0x76,0x65,0x6e,0x74,0x2e,0x74,0x79,0x70,0x65,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x76,0x61,0x72,0x20,0x72,0x65,0x61,0x6c,0x53,0x72,0x63,0x20,0x3d,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x26,0x26,0x20,0x65,0x76,0x65,0x6e,0x74,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x20,0x26,0x26,0x20,0x65,0x76,0x65,0x6e,0x74,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x73,0x72,0x63,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x65,0x72,0x72,0x6f,0x72,0x2e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x3d,0x20,0x27,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x27,0x20,0x2b,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x20,0x2b,0x20,0x27,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x2e,0x5c,0x5c,0x6e,0x28,0x27,0x20,0x2b,0x20,0x65,0x72,0x72,0x6f,0x72,0x54,0x79,0x70,0x65,0x20,0x2b,0x20,0x27,0x3a,0x20,0x27,0x20,0x2b,0x20,0x72,0x65,0x61,0x6c,0x53,0x72,0x63,0x20,0x2b,0x20,0x27,0x29,0x27,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x65,0x72,0x72,0x6f,0x72,0x2e,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x27,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x45,0x72,0x72,0x6f,0x72,0x27,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x65,0x72,0x72,0x6f,0x72,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x65,0x72,0x72,0x6f,0x72,0x54,0x79,0x70,0x65,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x65,0x72,0x72,0x6f,0x72,0x2e,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x20,0x3d,0x20,0x72,0x65,0x61,0x6c,0x53,0x72,0x63,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x5b,0x31,0x5d,0x28,0x65,0x72,0x72,0x6f,0x72,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6c,0x28,0x75,0x72,0x6c,0x2c,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x45,0x6e,0x64,0x65,0x64,0x2c,0x20,0x5c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x2d,0x5c,0x22,0x20,0x2b,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x70,0x72,0x65,0x66,0x65,0x74,0x63,0x68,0x69,0x6e,0x67,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x65,0x64,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x48,0x4d,0x52,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x48,0x4d,0x52,0x20,0x6d,0x61,0x6e,0x69,0x66,0x65,0x73,0x74,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x6e,0x6f,0x20,0x6f,0x6e,0x20,0x63,0x68,0x75,0x6e,0x6b,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x20,0x61,0x20,0x4a,0x53,0x4f,0x4e,0x50,0x20,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x5c,0x6e,0x76,0x61,0x72,0x20,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x4a,0x73,0x6f,0x6e,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x70,0x61,0x72,0x65,0x6e,0x74,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x20,0x3d,0x20,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x20,0x3d,0x20,0x64,0x61,0x74,0x61,0x5b,0x31,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x20,0x3d,0x20,0x64,0x61,0x74,0x61,0x5b,0x32,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x61,0x64,0x64,0x20,0x5c,0x22,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5c,0x22,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x2c,0x5c,0x6e,0x5c,0x74,0x2f,0x2f,0x20,0x74,0x68,0x65,0x6e,0x20,0x66,0x6c,0x61,0x67,0x20,0x61,0x6c,0x6c,0x20,0x5c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x5c,0x22,0x20,0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x61,0x6e,0x64,0x20,0x66,0x69,0x72,0x65,0x20,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x5c,0x6e,0x5c,0x74,0x76,0x61,0x72,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x2c,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x2e,0x73,0x6f,0x6d,0x65,0x28,0x28,0x69,0x64,0x29,0x20,0x3d,0x3e,0x20,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x69,0x64,0x5d,0x20,0x21,0x3d,0x3d,0x20,0x30,0x29,0x29,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x66,0x6f,0x72,0x28,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x20,0x69,0x6e,0x20,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2c,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x29,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6d,0x5b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x5d,0x20,0x3d,0x20,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x29,0x20,0x76,0x61,0x72,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x69,0x66,0x28,0x70,0x61,0x72,0x65,0x6e,0x74,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x29,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x66,0x6f,0x72,0x28,0x3b,0x69,0x20,0x3c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x20,0x3d,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x5b,0x69,0x5d,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x66,0x28,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x2e,0x6f,0x28,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x29,0x20,0x26,0x26,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x29,0x20,0x7b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x5c,0x74,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x5b,0x30,0x5d,0x28,0x29,0x3b,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x74,0x5c,0x74,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x5b,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x5d,0x20,0x3d,0x20,0x30,0x3b,0x5c,0x6e,0x5c,0x74,0x7d,0x5c,0x6e,0x5c,0x6e,0x7d,0x5c,0x6e,0x5c,0x6e,0x76,0x61,0x72,0x20,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b,0x5c,0x22,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x5c,0x22,0x5d,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b,0x5c,0x22,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x5c,0x22,0x5d,0x20,0x7c,0x7c,0x20,0x5b,0x5d,0x3b,0x5c,0x6e,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x4a,0x73,0x6f,0x6e,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x20,0x30,0x29,0x29,0x3b,0x5c,0x6e,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x70,0x75,0x73,0x68,0x20,0x3d,0x20,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x4a,0x73,0x6f,0x6e,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x2e,0x62,0x69,0x6e,0x64,0x28,0x6e,0x75,0x6c,0x6c,0x2c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x70,0x75,0x73,0x68,0x2e,0x62,0x69,0x6e,0x64,0x28,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x29,0x29,0x3b,0x22,0x2c,0x22,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x52,0x65,0x61,0x63,0x74,0x2c,0x20,0x7b,0x20,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x20,0x7d,0x20,0x66,0x72,0x6f,0x6d,0x20,0x5c,0x22,0x72,0x65,0x61,0x63,0x74,0x5c,0x22,0x3b,0x5c,0x6e,0x5c,0x6e,0x63,0x6f,0x6e,0x73,0x74,0x20,0x41,0x70,0x70,0x20,0x3d,0x20,0x28,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5b,0x76,0x61,0x6c,0x75,0x65,0x31,0x2c,0x20,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x31,0x5d,0x20,0x3d,0x20,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x27,0x27,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5b,0x76,0x61,0x6c,0x75,0x65,0x32,0x2c,0x20,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x5d,0x20,0x3d,0x20,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x27,0x27,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5b,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x73,0x65,0x74,0x52,0x65,0x73,0x75,0x6c,0x74,0x5d,0x20,0x3d,0x20,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x53,0x75,0x6d,0x20,0x3d,0x20,0x28,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x70,0x61,0x72,0x73,0x65,0x46,0x6c,0x6f,0x61,0x74,0x28,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x7c,0x7c,0x20,0x30,0x29,0x20,0x2b,0x20,0x70,0x61,0x72,0x73,0x65,0x46,0x6c,0x6f,0x61,0x74,0x28,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x7c,0x7c,0x20,0x30,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x73,0x65,0x74,0x52,0x65,0x73,0x75,0x6c,0x74,0x28,0x73,0x75,0x6d,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5c,0x6e,0x20,0x20,0x20,0x20,0x3c,0x64,0x69,0x76,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x20,0x27,0x32,0x30,0x70,0x78,0x27,0x2c,0x20,0x66,0x6f,0x6e,0x74,0x46,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x27,0x20,0x7d,0x7d,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x69,0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x5c,0x22,0x6c,0x6f,0x67,0x6f,0x31,0x39,0x32,0x2e,0x70,0x6e,0x67,0x5c,0x22,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x5c,0x22,0x36,0x34,0x5c,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x5c,0x22,0x36,0x34,0x5c,0x22,0x3e,0x3c,0x2f,0x69,0x6d,0x67,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x68,0x32,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3c,0x2f,0x68,0x32,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x69,0x76,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x42,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x27,0x20,0x7d,0x7d,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x6c,0x61,0x62,0x65,0x6c,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x49,0x6e,0x70,0x75,0x74,0x20,0x31,0x3a,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x6c,0x61,0x62,0x65,0x6c,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x69,0x6e,0x70,0x75,0x74,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x3d,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x3d,0x7b,0x76,0x61,0x6c,0x75,0x65,0x31,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x3d,0x7b,0x28,0x65,0x29,0x20,0x3d,0x3e,0x20,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x31,0x28,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x4c,0x65,0x66,0x74,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x27,0x2c,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x27,0x35,0x70,0x78,0x27,0x2c,0x20,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x20,0x27,0x31,0x36,0x70,0x78,0x27,0x20,0x7d,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x69,0x76,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x69,0x76,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x42,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x27,0x20,0x7d,0x7d,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x6c,0x61,0x62,0x65,0x6c,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x49,0x6e,0x70,0x75,0x74,0x20,0x32,0x3a,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x6c,0x61,0x62,0x65,0x6c,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x69,0x6e,0x70,0x75,0x74,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x3d,0x5c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x5c,0x22,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x3d,0x7b,0x76,0x61,0x6c,0x75,0x65,0x32,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x3d,0x7b,0x28,0x65,0x29,0x20,0x3d,0x3e,0x20,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x28,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x29,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x4c,0x65,0x66,0x74,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x27,0x2c,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x27,0x35,0x70,0x78,0x27,0x2c,0x20,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x20,0x27,0x31,0x36,0x70,0x78,0x27,0x20,0x7d,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x69,0x76,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x3d,0x7b,0x63,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x53,0x75,0x6d,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x20,0x32,0x30,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x27,0x23,0x34,0x43,0x41,0x46,0x35,0x30,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x27,0x77,0x68,0x69,0x74,0x65,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x20,0x27,0x31,0x36,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x27,0x6e,0x6f,0x6e,0x65,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x72,0x64,0x65,0x72,0x52,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x27,0x35,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x27,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x52,0x69,0x67,0x68,0x74,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x20,0x28,0x52,0x65,0x61,0x63,0x74,0x20,0x46,0x72,0x6f,0x6e,0x74,0x65,0x6e,0x64,0x29,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x64,0x3d,0x5c,0x22,0x45,0x78,0x69,0x74,0x5c,0x22,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x27,0x31,0x30,0x70,0x78,0x20,0x32,0x30,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x27,0x23,0x66,0x34,0x34,0x33,0x33,0x36,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x27,0x77,0x68,0x69,0x74,0x65,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x20,0x27,0x31,0x36,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x27,0x6e,0x6f,0x6e,0x65,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x72,0x64,0x65,0x72,0x52,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x27,0x35,0x70,0x78,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x27,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x45,0x78,0x69,0x74,0x20,0x28,0x57,0x65,0x62,0x55,0x49,0x20,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x29,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x69,0x76,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x7b,0x7b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x54,0x6f,0x70,0x3a,0x20,0x27,0x32,0x30,0x70,0x78,0x27,0x2c,0x20,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x3a,0x20,0x27,0x31,0x38,0x70,0x78,0x27,0x20,0x7d,0x7d,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x52,0x65,0x73,0x75,0x6c,0x74,0x3a,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,0x7b,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x21,0x3d,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x3f,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3a,0x20,0x27,0x4e,0x2f,0x41,0x27,0x7d,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x69,0x76,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x69,0x76,0x3e,0x5c,0x6e,0x20,0x20,0x29,0x3b,0x5c,0x6e,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x41,0x70,0x70,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x20,0x3d,0x20,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x20,0x26,0x26,0x20,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x6f,0x66,0x20,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x29,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x69,0x6d,0x70,0x6f,0x72,0x74,0x28,0x27,0x77,0x65,0x62,0x2d,0x76,0x69,0x74,0x61,0x6c,0x73,0x27,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x7b,0x20,0x67,0x65,0x74,0x43,0x4c,0x53,0x2c,0x20,0x67,0x65,0x74,0x46,0x49,0x44,0x2c,0x20,0x67,0x65,0x74,0x46,0x43,0x50,0x2c,0x20,0x67,0x65,0x74,0x4c,0x43,0x50,0x2c,0x20,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x20,0x7d,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x43,0x4c,0x53,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x46,0x49,0x44,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x46,0x43,0x50,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x4c,0x43,0x50,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x28,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x20,0x20,0x7d,0x29,0x3b,0x5c,0x6e,0x20,0x20,0x7d,0x5c,0x6e,0x7d,0x3b,0x5c,0x6e,0x5c,0x6e,0x65,0x78,0x70,0x6f,0x72,0x74,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x3b,0x5c,0x6e,0x22,0x2c,0x22,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x52,0x65,0x61,0x63,0x74,0x20,0x66,0x72,0x6f,0x6d,0x20,0x27,0x72,0x65,0x61,0x63,0x74,0x27,0x3b,0x5c,0x6e,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x52,0x65,0x61,0x63,0x74,0x44,0x4f,0x4d,0x20,0x66,0x72,0x6f,0x6d,0x20,0x27,0x72,0x65,0x61,0x63,0x74,0x2d,0x64,0x6f,0x6d,0x2f,0x63,0x6c,0x69,0x65,0x6e,0x74,0x27,0x3b,0x5c,0x6e,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x27,0x2e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x27,0x3b,0x5c,0x6e,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x41,0x70,0x70,0x20,0x66,0x72,0x6f,0x6d,0x20,0x27,0x2e,0x2f,0x41,0x70,0x70,0x27,0x3b,0x5c,0x6e,0x69,0x6d,0x70,0x6f,0x72,0x74,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20,0x27,0x2e,0x2f,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x27,0x3b,0x5c,0x6e,0x5c,0x6e,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x6f,0x6f,0x74,0x20,0x3d,0x20,0x52,0x65,0x61,0x63,0x74,0x44,0x4f,0x4d,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x28,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x27,0x72,0x6f,0x6f,0x74,0x27,0x29,0x29,0x3b,0x5c,0x6e,0x72,0x6f,0x6f,0x74,0x2e,0x72,0x65,0x6e,0x64,0x65,0x72,0x28,0x5c,0x6e,0x20,0x20,0x3c,0x52,0x65,0x61,0x63,0x74,0x2e,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x3e,0x5c,0x6e,0x20,0x20,0x20,0x20,0x3c,0x41,0x70,0x70,0x20,0x2f,0x3e,0x5c,0x6e,0x20,0x20,0x3c,0x2f,0x52,0x65,0x61,0x63,0x74,0x2e,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x3e,0x5c,0x6e,0x29,0x3b,0x5c,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x6d,0x65,0x61,0x73,0x75,0x72,0x69,0x6e,0x67,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x20,0x69,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x61,0x70,0x70,0x2c,0x20,0x70,0x61,0x73,0x73,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x5c,0x6e,0x2f,0x2f,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x67,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x28,0x66,0x6f,0x72,0x20,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3a,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x28,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x29,0x29,0x5c,0x6e,0x2f,0x2f,0x20,0x6f,0x72,0x20,0x73,0x65,0x6e,0x64,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x61,0x6e,0x61,0x6c,0x79,0x74,0x69,0x63,0x73,0x20,0x65,0x6e,0x64,0x70,0x6f,0x69,0x6e,0x74,0x2e,0x20,0x4c,0x65,0x61,0x72,0x6e,0x20,0x6d,0x6f,0x72,0x65,0x3a,0x20,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x62,0x69,0x74,0x2e,0x6c,0x79,0x2f,0x43,0x52,0x41,0x2d,0x76,0x69,0x74,0x61,0x6c,0x73,0x5c,0x6e,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x28,0x29,0x3b,0x5c,0x6e,0x22,0x5d,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x73,0x22,0x3a,0x5b,0x22,0x61,0x61,0x22,0x2c,0x22,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x22,0x2c,0x22,0x63,0x61,0x22,0x2c,0x22,0x70,0x22,0x2c,0x22,0x61,0x22,0x2c,0x22,0x62,0x22,0x2c,0x22,0x63,0x22,0x2c,0x22,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x22,0x2c,0x22,0x6c,0x65,0x6e,0x67,0x74,0x68,0x22,0x2c,0x22,0x65,0x6e,0x63,0x6f,0x64,0x65,0x55,0x52,0x49,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x22,0x2c,0x22,0x64,0x61,0x22,0x2c,0x22,0x53,0x65,0x74,0x22,0x2c,0x22,0x65,0x61,0x22,0x2c,0x22,0x66,0x61,0x22,0x2c,0x22,0x68,0x61,0x22,0x2c,0x22,0x61,0x64,0x64,0x22,0x2c,0x22,0x69,0x61,0x22,0x2c,0x22,0x77,0x69,0x6e,0x64,0x6f,0x77,0x22,0x2c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6a,0x61,0x22,0x2c,0x22,0x4f,0x62,0x6a,0x65,0x63,0x74,0x22,0x2c,0x22,0x70,0x72,0x6f,0x74,0x6f,0x74,0x79,0x70,0x65,0x22,0x2c,0x22,0x68,0x61,0x73,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x22,0x2c,0x22,0x6b,0x61,0x22,0x2c,0x22,0x6c,0x61,0x22,0x2c,0x22,0x6d,0x61,0x22,0x2c,0x22,0x76,0x22,0x2c,0x22,0x64,0x22,0x2c,0x22,0x65,0x22,0x2c,0x22,0x66,0x22,0x2c,0x22,0x67,0x22,0x2c,0x22,0x74,0x68,0x69,0x73,0x22,0x2c,0x22,0x61,0x63,0x63,0x65,0x70,0x74,0x73,0x42,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x73,0x22,0x2c,0x22,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x22,0x2c,0x22,0x6d,0x75,0x73,0x74,0x55,0x73,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x22,0x2c,0x22,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x22,0x73,0x61,0x6e,0x69,0x74,0x69,0x7a,0x65,0x55,0x52,0x4c,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x6d,0x70,0x74,0x79,0x53,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x22,0x7a,0x22,0x2c,0x22,0x73,0x70,0x6c,0x69,0x74,0x22,0x2c,0x22,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x22,0x2c,0x22,0x74,0x6f,0x4c,0x6f,0x77,0x65,0x72,0x43,0x61,0x73,0x65,0x22,0x2c,0x22,0x72,0x61,0x22,0x2c,0x22,0x73,0x61,0x22,0x2c,0x22,0x74,0x6f,0x55,0x70,0x70,0x65,0x72,0x43,0x61,0x73,0x65,0x22,0x2c,0x22,0x74,0x61,0x22,0x2c,0x22,0x73,0x6c,0x69,0x63,0x65,0x22,0x2c,0x22,0x70,0x61,0x22,0x2c,0x22,0x69,0x73,0x4e,0x61,0x4e,0x22,0x2c,0x22,0x71,0x61,0x22,0x2c,0x22,0x63,0x61,0x6c,0x6c,0x22,0x2c,0x22,0x74,0x65,0x73,0x74,0x22,0x2c,0x22,0x6f,0x61,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x4e,0x53,0x22,0x2c,0x22,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x22,0x2c,0x22,0x78,0x6c,0x69,0x6e,0x6b,0x48,0x72,0x65,0x66,0x22,0x2c,0x22,0x75,0x61,0x22,0x2c,0x22,0x5f,0x5f,0x53,0x45,0x43,0x52,0x45,0x54,0x5f,0x49,0x4e,0x54,0x45,0x52,0x4e,0x41,0x4c,0x53,0x5f,0x44,0x4f,0x5f,0x4e,0x4f,0x54,0x5f,0x55,0x53,0x45,0x5f,0x4f,0x52,0x5f,0x59,0x4f,0x55,0x5f,0x57,0x49,0x4c,0x4c,0x5f,0x42,0x45,0x5f,0x46,0x49,0x52,0x45,0x44,0x22,0x2c,0x22,0x76,0x61,0x22,0x2c,0x22,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x22,0x2c,0x22,0x66,0x6f,0x72,0x22,0x2c,0x22,0x77,0x61,0x22,0x2c,0x22,0x79,0x61,0x22,0x2c,0x22,0x7a,0x61,0x22,0x2c,0x22,0x41,0x61,0x22,0x2c,0x22,0x42,0x61,0x22,0x2c,0x22,0x43,0x61,0x22,0x2c,0x22,0x44,0x61,0x22,0x2c,0x22,0x45,0x61,0x22,0x2c,0x22,0x46,0x61,0x22,0x2c,0x22,0x47,0x61,0x22,0x2c,0x22,0x48,0x61,0x22,0x2c,0x22,0x49,0x61,0x22,0x2c,0x22,0x4a,0x61,0x22,0x2c,0x22,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x22,0x2c,0x22,0x4b,0x61,0x22,0x2c,0x22,0x4c,0x61,0x22,0x2c,0x22,0x41,0x22,0x2c,0x22,0x61,0x73,0x73,0x69,0x67,0x6e,0x22,0x2c,0x22,0x4d,0x61,0x22,0x2c,0x22,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x73,0x74,0x61,0x63,0x6b,0x22,0x2c,0x22,0x74,0x72,0x69,0x6d,0x22,0x2c,0x22,0x6d,0x61,0x74,0x63,0x68,0x22,0x2c,0x22,0x4e,0x61,0x22,0x2c,0x22,0x4f,0x61,0x22,0x2c,0x22,0x70,0x72,0x65,0x70,0x61,0x72,0x65,0x53,0x74,0x61,0x63,0x6b,0x54,0x72,0x61,0x63,0x65,0x22,0x2c,0x22,0x64,0x65,0x66,0x69,0x6e,0x65,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x22,0x2c,0x22,0x73,0x65,0x74,0x22,0x2c,0x22,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x22,0x2c,0x22,0x6c,0x22,0x2c,0x22,0x68,0x22,0x2c,0x22,0x6b,0x22,0x2c,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x22,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x50,0x61,0x22,0x2c,0x22,0x74,0x61,0x67,0x22,0x2c,0x22,0x72,0x65,0x6e,0x64,0x65,0x72,0x22,0x2c,0x22,0x51,0x61,0x22,0x2c,0x22,0x24,0x24,0x74,0x79,0x70,0x65,0x6f,0x66,0x22,0x2c,0x22,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x5f,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x22,0x5f,0x69,0x6e,0x69,0x74,0x22,0x2c,0x22,0x52,0x61,0x22,0x2c,0x22,0x53,0x61,0x22,0x2c,0x22,0x54,0x61,0x22,0x2c,0x22,0x6e,0x6f,0x64,0x65,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x56,0x61,0x22,0x2c,0x22,0x5f,0x76,0x61,0x6c,0x75,0x65,0x54,0x72,0x61,0x63,0x6b,0x65,0x72,0x22,0x2c,0x22,0x67,0x65,0x74,0x4f,0x77,0x6e,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x6f,0x72,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x22,0x2c,0x22,0x67,0x65,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x66,0x69,0x67,0x75,0x72,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x65,0x6e,0x75,0x6d,0x65,0x72,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x67,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x73,0x74,0x6f,0x70,0x54,0x72,0x61,0x63,0x6b,0x69,0x6e,0x67,0x22,0x2c,0x22,0x55,0x61,0x22,0x2c,0x22,0x57,0x61,0x22,0x2c,0x22,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x58,0x61,0x22,0x2c,0x22,0x61,0x63,0x74,0x69,0x76,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x62,0x6f,0x64,0x79,0x22,0x2c,0x22,0x59,0x61,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x5f,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x43,0x68,0x65,0x63,0x6b,0x65,0x64,0x22,0x2c,0x22,0x5a,0x61,0x22,0x2c,0x22,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x64,0x22,0x2c,0x22,0x61,0x62,0x22,0x2c,0x22,0x62,0x62,0x22,0x2c,0x22,0x63,0x62,0x22,0x2c,0x22,0x64,0x62,0x22,0x2c,0x22,0x6f,0x77,0x6e,0x65,0x72,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x65,0x62,0x22,0x2c,0x22,0x41,0x72,0x72,0x61,0x79,0x22,0x2c,0x22,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x22,0x2c,0x22,0x66,0x62,0x22,0x2c,0x22,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x22,0x2c,0x22,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x22,0x2c,0x22,0x67,0x62,0x22,0x2c,0x22,0x64,0x61,0x6e,0x67,0x65,0x72,0x6f,0x75,0x73,0x6c,0x79,0x53,0x65,0x74,0x49,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x2c,0x22,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x2c,0x22,0x68,0x62,0x22,0x2c,0x22,0x69,0x62,0x22,0x2c,0x22,0x6a,0x62,0x22,0x2c,0x22,0x74,0x65,0x78,0x74,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6b,0x62,0x22,0x2c,0x22,0x6c,0x62,0x22,0x2c,0x22,0x6d,0x62,0x22,0x2c,0x22,0x6e,0x62,0x22,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x55,0x52,0x49,0x22,0x2c,0x22,0x69,0x6e,0x6e,0x65,0x72,0x48,0x54,0x4d,0x4c,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x4f,0x66,0x22,0x2c,0x22,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x22,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x43,0x68,0x69,0x6c,0x64,0x22,0x2c,0x22,0x61,0x70,0x70,0x65,0x6e,0x64,0x43,0x68,0x69,0x6c,0x64,0x22,0x2c,0x22,0x4d,0x53,0x41,0x70,0x70,0x22,0x2c,0x22,0x65,0x78,0x65,0x63,0x55,0x6e,0x73,0x61,0x66,0x65,0x4c,0x6f,0x63,0x61,0x6c,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x6f,0x62,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x43,0x68,0x69,0x6c,0x64,0x22,0x2c,0x22,0x6e,0x6f,0x64,0x65,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x6e,0x6f,0x64,0x65,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x70,0x62,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x49,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x61,0x73,0x70,0x65,0x63,0x74,0x52,0x61,0x74,0x69,0x6f,0x22,0x2c,0x22,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x4f,0x75,0x74,0x73,0x65,0x74,0x22,0x2c,0x22,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x53,0x6c,0x69,0x63,0x65,0x22,0x2c,0x22,0x62,0x6f,0x72,0x64,0x65,0x72,0x49,0x6d,0x61,0x67,0x65,0x57,0x69,0x64,0x74,0x68,0x22,0x2c,0x22,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x22,0x2c,0x22,0x62,0x6f,0x78,0x46,0x6c,0x65,0x78,0x47,0x72,0x6f,0x75,0x70,0x22,0x2c,0x22,0x62,0x6f,0x78,0x4f,0x72,0x64,0x69,0x6e,0x61,0x6c,0x47,0x72,0x6f,0x75,0x70,0x22,0x2c,0x22,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x43,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6c,0x75,0x6d,0x6e,0x73,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x47,0x72,0x6f,0x77,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x50,0x6f,0x73,0x69,0x74,0x69,0x76,0x65,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x53,0x68,0x72,0x69,0x6e,0x6b,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x4e,0x65,0x67,0x61,0x74,0x69,0x76,0x65,0x22,0x2c,0x22,0x66,0x6c,0x65,0x78,0x4f,0x72,0x64,0x65,0x72,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x41,0x72,0x65,0x61,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x45,0x6e,0x64,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x70,0x61,0x6e,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x52,0x6f,0x77,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x45,0x6e,0x64,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x70,0x61,0x6e,0x22,0x2c,0x22,0x67,0x72,0x69,0x64,0x43,0x6f,0x6c,0x75,0x6d,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x66,0x6f,0x6e,0x74,0x57,0x65,0x69,0x67,0x68,0x74,0x22,0x2c,0x22,0x6c,0x69,0x6e,0x65,0x43,0x6c,0x61,0x6d,0x70,0x22,0x2c,0x22,0x6c,0x69,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x22,0x2c,0x22,0x6f,0x70,0x61,0x63,0x69,0x74,0x79,0x22,0x2c,0x22,0x6f,0x72,0x64,0x65,0x72,0x22,0x2c,0x22,0x6f,0x72,0x70,0x68,0x61,0x6e,0x73,0x22,0x2c,0x22,0x74,0x61,0x62,0x53,0x69,0x7a,0x65,0x22,0x2c,0x22,0x77,0x69,0x64,0x6f,0x77,0x73,0x22,0x2c,0x22,0x7a,0x49,0x6e,0x64,0x65,0x78,0x22,0x2c,0x22,0x7a,0x6f,0x6f,0x6d,0x22,0x2c,0x22,0x66,0x69,0x6c,0x6c,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x22,0x2c,0x22,0x66,0x6c,0x6f,0x6f,0x64,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x22,0x2c,0x22,0x73,0x74,0x6f,0x70,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x22,0x2c,0x22,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x61,0x72,0x72,0x61,0x79,0x22,0x2c,0x22,0x73,0x74,0x72,0x6f,0x6b,0x65,0x44,0x61,0x73,0x68,0x6f,0x66,0x66,0x73,0x65,0x74,0x22,0x2c,0x22,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4d,0x69,0x74,0x65,0x72,0x6c,0x69,0x6d,0x69,0x74,0x22,0x2c,0x22,0x73,0x74,0x72,0x6f,0x6b,0x65,0x4f,0x70,0x61,0x63,0x69,0x74,0x79,0x22,0x2c,0x22,0x73,0x74,0x72,0x6f,0x6b,0x65,0x57,0x69,0x64,0x74,0x68,0x22,0x2c,0x22,0x71,0x62,0x22,0x2c,0x22,0x72,0x62,0x22,0x2c,0x22,0x73,0x62,0x22,0x2c,0x22,0x73,0x74,0x79,0x6c,0x65,0x22,0x2c,0x22,0x69,0x6e,0x64,0x65,0x78,0x4f,0x66,0x22,0x2c,0x22,0x73,0x65,0x74,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x22,0x2c,0x22,0x6b,0x65,0x79,0x73,0x22,0x2c,0x22,0x63,0x68,0x61,0x72,0x41,0x74,0x22,0x2c,0x22,0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x22,0x74,0x62,0x22,0x2c,0x22,0x6d,0x65,0x6e,0x75,0x69,0x74,0x65,0x6d,0x22,0x2c,0x22,0x61,0x72,0x65,0x61,0x22,0x2c,0x22,0x62,0x61,0x73,0x65,0x22,0x2c,0x22,0x62,0x72,0x22,0x2c,0x22,0x63,0x6f,0x6c,0x22,0x2c,0x22,0x65,0x6d,0x62,0x65,0x64,0x22,0x2c,0x22,0x68,0x72,0x22,0x2c,0x22,0x69,0x6d,0x67,0x22,0x2c,0x22,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x6b,0x65,0x79,0x67,0x65,0x6e,0x22,0x2c,0x22,0x6c,0x69,0x6e,0x6b,0x22,0x2c,0x22,0x6d,0x65,0x74,0x61,0x22,0x2c,0x22,0x70,0x61,0x72,0x61,0x6d,0x22,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x2c,0x22,0x74,0x72,0x61,0x63,0x6b,0x22,0x2c,0x22,0x77,0x62,0x72,0x22,0x2c,0x22,0x75,0x62,0x22,0x2c,0x22,0x76,0x62,0x22,0x2c,0x22,0x69,0x73,0x22,0x2c,0x22,0x77,0x62,0x22,0x2c,0x22,0x78,0x62,0x22,0x2c,0x22,0x74,0x61,0x72,0x67,0x65,0x74,0x22,0x2c,0x22,0x73,0x72,0x63,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x55,0x73,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x70,0x61,0x72,0x65,0x6e,0x74,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x79,0x62,0x22,0x2c,0x22,0x7a,0x62,0x22,0x2c,0x22,0x41,0x62,0x22,0x2c,0x22,0x42,0x62,0x22,0x2c,0x22,0x43,0x62,0x22,0x2c,0x22,0x73,0x74,0x61,0x74,0x65,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x44,0x62,0x22,0x2c,0x22,0x45,0x62,0x22,0x2c,0x22,0x70,0x75,0x73,0x68,0x22,0x2c,0x22,0x46,0x62,0x22,0x2c,0x22,0x47,0x62,0x22,0x2c,0x22,0x48,0x62,0x22,0x2c,0x22,0x49,0x62,0x22,0x2c,0x22,0x4a,0x62,0x22,0x2c,0x22,0x4b,0x62,0x22,0x2c,0x22,0x4c,0x62,0x22,0x2c,0x22,0x4d,0x62,0x22,0x2c,0x22,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x22,0x2c,0x22,0x4e,0x62,0x22,0x2c,0x22,0x61,0x70,0x70,0x6c,0x79,0x22,0x2c,0x22,0x6d,0x22,0x2c,0x22,0x6f,0x6e,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x4f,0x62,0x22,0x2c,0x22,0x50,0x62,0x22,0x2c,0x22,0x51,0x62,0x22,0x2c,0x22,0x52,0x62,0x22,0x2c,0x22,0x53,0x62,0x22,0x2c,0x22,0x54,0x62,0x22,0x2c,0x22,0x56,0x62,0x22,0x2c,0x22,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x65,0x22,0x2c,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x2c,0x22,0x66,0x6c,0x61,0x67,0x73,0x22,0x2c,0x22,0x57,0x62,0x22,0x2c,0x22,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x64,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x22,0x2c,0x22,0x58,0x62,0x22,0x2c,0x22,0x5a,0x62,0x22,0x2c,0x22,0x63,0x68,0x69,0x6c,0x64,0x22,0x2c,0x22,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x22,0x2c,0x22,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x22,0x2c,0x22,0x59,0x62,0x22,0x2c,0x22,0x24,0x62,0x22,0x2c,0x22,0x61,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x62,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x61,0x6e,0x63,0x65,0x6c,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x63,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x68,0x6f,0x75,0x6c,0x64,0x59,0x69,0x65,0x6c,0x64,0x22,0x2c,0x22,0x64,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x50,0x61,0x69,0x6e,0x74,0x22,0x2c,0x22,0x42,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x6f,0x77,0x22,0x2c,0x22,0x65,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x22,0x2c,0x22,0x66,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x67,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x55,0x73,0x65,0x72,0x42,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x68,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x69,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x4c,0x6f,0x77,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x6a,0x63,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x49,0x64,0x6c,0x65,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x6b,0x63,0x22,0x2c,0x22,0x6c,0x63,0x22,0x2c,0x22,0x6f,0x63,0x22,0x2c,0x22,0x4d,0x61,0x74,0x68,0x22,0x2c,0x22,0x63,0x6c,0x7a,0x33,0x32,0x22,0x2c,0x22,0x70,0x63,0x22,0x2c,0x22,0x71,0x63,0x22,0x2c,0x22,0x6c,0x6f,0x67,0x22,0x2c,0x22,0x4c,0x4e,0x32,0x22,0x2c,0x22,0x72,0x63,0x22,0x2c,0x22,0x73,0x63,0x22,0x2c,0x22,0x74,0x63,0x22,0x2c,0x22,0x75,0x63,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x73,0x75,0x73,0x70,0x65,0x6e,0x64,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x70,0x69,0x6e,0x67,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x65,0x6e,0x74,0x61,0x6e,0x67,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x22,0x2c,0x22,0x76,0x63,0x22,0x2c,0x22,0x78,0x63,0x22,0x2c,0x22,0x79,0x63,0x22,0x2c,0x22,0x7a,0x63,0x22,0x2c,0x22,0x41,0x63,0x22,0x2c,0x22,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x73,0x22,0x2c,0x22,0x43,0x63,0x22,0x2c,0x22,0x43,0x22,0x2c,0x22,0x44,0x63,0x22,0x2c,0x22,0x45,0x63,0x22,0x2c,0x22,0x46,0x63,0x22,0x2c,0x22,0x47,0x63,0x22,0x2c,0x22,0x48,0x63,0x22,0x2c,0x22,0x49,0x63,0x22,0x2c,0x22,0x4a,0x63,0x22,0x2c,0x22,0x4b,0x63,0x22,0x2c,0x22,0x4c,0x63,0x22,0x2c,0x22,0x4d,0x63,0x22,0x2c,0x22,0x4e,0x63,0x22,0x2c,0x22,0x4f,0x63,0x22,0x2c,0x22,0x4d,0x61,0x70,0x22,0x2c,0x22,0x50,0x63,0x22,0x2c,0x22,0x51,0x63,0x22,0x2c,0x22,0x52,0x63,0x22,0x2c,0x22,0x53,0x63,0x22,0x2c,0x22,0x64,0x65,0x6c,0x65,0x74,0x65,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x49,0x64,0x22,0x2c,0x22,0x54,0x63,0x22,0x2c,0x22,0x6e,0x61,0x74,0x69,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x22,0x2c,0x22,0x62,0x6c,0x6f,0x63,0x6b,0x65,0x64,0x4f,0x6e,0x22,0x2c,0x22,0x64,0x6f,0x6d,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x65,0x76,0x65,0x6e,0x74,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6c,0x61,0x67,0x73,0x22,0x2c,0x22,0x74,0x61,0x72,0x67,0x65,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x73,0x22,0x2c,0x22,0x56,0x63,0x22,0x2c,0x22,0x57,0x63,0x22,0x2c,0x22,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x69,0x73,0x44,0x65,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x49,0x6e,0x66,0x6f,0x22,0x2c,0x22,0x58,0x63,0x22,0x2c,0x22,0x59,0x63,0x22,0x2c,0x22,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x22,0x2c,0x22,0x73,0x68,0x69,0x66,0x74,0x22,0x2c,0x22,0x5a,0x63,0x22,0x2c,0x22,0x24,0x63,0x22,0x2c,0x22,0x61,0x64,0x22,0x2c,0x22,0x62,0x64,0x22,0x2c,0x22,0x63,0x64,0x22,0x2c,0x22,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x42,0x61,0x74,0x63,0x68,0x43,0x6f,0x6e,0x66,0x69,0x67,0x22,0x2c,0x22,0x64,0x64,0x22,0x2c,0x22,0x65,0x64,0x22,0x2c,0x22,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x66,0x64,0x22,0x2c,0x22,0x67,0x64,0x22,0x2c,0x22,0x68,0x64,0x22,0x2c,0x22,0x69,0x64,0x22,0x2c,0x22,0x55,0x63,0x22,0x2c,0x22,0x73,0x74,0x6f,0x70,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x6a,0x64,0x22,0x2c,0x22,0x6b,0x64,0x22,0x2c,0x22,0x6c,0x64,0x22,0x2c,0x22,0x6d,0x64,0x22,0x2c,0x22,0x6e,0x64,0x22,0x2c,0x22,0x6f,0x64,0x22,0x2c,0x22,0x6b,0x65,0x79,0x43,0x6f,0x64,0x65,0x22,0x2c,0x22,0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x22,0x2c,0x22,0x70,0x64,0x22,0x2c,0x22,0x71,0x64,0x22,0x2c,0x22,0x72,0x64,0x22,0x2c,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,0x49,0x6e,0x73,0x74,0x22,0x2c,0x22,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x61,0x72,0x67,0x65,0x74,0x22,0x2c,0x22,0x69,0x73,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x65,0x76,0x65,0x6e,0x74,0x65,0x64,0x22,0x2c,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x69,0x73,0x50,0x72,0x6f,0x70,0x61,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x6f,0x70,0x70,0x65,0x64,0x22,0x2c,0x22,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x22,0x2c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x42,0x75,0x62,0x62,0x6c,0x65,0x22,0x2c,0x22,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x22,0x2c,0x22,0x69,0x73,0x50,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x6e,0x74,0x22,0x2c,0x22,0x77,0x64,0x22,0x2c,0x22,0x78,0x64,0x22,0x2c,0x22,0x79,0x64,0x22,0x2c,0x22,0x73,0x64,0x22,0x2c,0x22,0x65,0x76,0x65,0x6e,0x74,0x50,0x68,0x61,0x73,0x65,0x22,0x2c,0x22,0x62,0x75,0x62,0x62,0x6c,0x65,0x73,0x22,0x2c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x22,0x2c,0x22,0x44,0x61,0x74,0x65,0x22,0x2c,0x22,0x6e,0x6f,0x77,0x22,0x2c,0x22,0x69,0x73,0x54,0x72,0x75,0x73,0x74,0x65,0x64,0x22,0x2c,0x22,0x74,0x64,0x22,0x2c,0x22,0x75,0x64,0x22,0x2c,0x22,0x76,0x69,0x65,0x77,0x22,0x2c,0x22,0x64,0x65,0x74,0x61,0x69,0x6c,0x22,0x2c,0x22,0x76,0x64,0x22,0x2c,0x22,0x41,0x64,0x22,0x2c,0x22,0x73,0x63,0x72,0x65,0x65,0x6e,0x58,0x22,0x2c,0x22,0x73,0x63,0x72,0x65,0x65,0x6e,0x59,0x22,0x2c,0x22,0x63,0x6c,0x69,0x65,0x6e,0x74,0x58,0x22,0x2c,0x22,0x63,0x6c,0x69,0x65,0x6e,0x74,0x59,0x22,0x2c,0x22,0x70,0x61,0x67,0x65,0x58,0x22,0x2c,0x22,0x70,0x61,0x67,0x65,0x59,0x22,0x2c,0x22,0x63,0x74,0x72,0x6c,0x4b,0x65,0x79,0x22,0x2c,0x22,0x73,0x68,0x69,0x66,0x74,0x4b,0x65,0x79,0x22,0x2c,0x22,0x61,0x6c,0x74,0x4b,0x65,0x79,0x22,0x2c,0x22,0x6d,0x65,0x74,0x61,0x4b,0x65,0x79,0x22,0x2c,0x22,0x67,0x65,0x74,0x4d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x7a,0x64,0x22,0x2c,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x22,0x2c,0x22,0x62,0x75,0x74,0x74,0x6f,0x6e,0x73,0x22,0x2c,0x22,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x54,0x61,0x72,0x67,0x65,0x74,0x22,0x2c,0x22,0x66,0x72,0x6f,0x6d,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x74,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x58,0x22,0x2c,0x22,0x6d,0x6f,0x76,0x65,0x6d,0x65,0x6e,0x74,0x59,0x22,0x2c,0x22,0x42,0x64,0x22,0x2c,0x22,0x44,0x64,0x22,0x2c,0x22,0x64,0x61,0x74,0x61,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x22,0x2c,0x22,0x46,0x64,0x22,0x2c,0x22,0x48,0x64,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x65,0x6c,0x61,0x70,0x73,0x65,0x64,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x70,0x73,0x65,0x75,0x64,0x6f,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x49,0x64,0x22,0x2c,0x22,0x63,0x6c,0x69,0x70,0x62,0x6f,0x61,0x72,0x64,0x44,0x61,0x74,0x61,0x22,0x2c,0x22,0x4a,0x64,0x22,0x2c,0x22,0x4c,0x64,0x22,0x2c,0x22,0x64,0x61,0x74,0x61,0x22,0x2c,0x22,0x4d,0x64,0x22,0x2c,0x22,0x45,0x73,0x63,0x22,0x2c,0x22,0x53,0x70,0x61,0x63,0x65,0x62,0x61,0x72,0x22,0x2c,0x22,0x4c,0x65,0x66,0x74,0x22,0x2c,0x22,0x55,0x70,0x22,0x2c,0x22,0x52,0x69,0x67,0x68,0x74,0x22,0x2c,0x22,0x44,0x6f,0x77,0x6e,0x22,0x2c,0x22,0x44,0x65,0x6c,0x22,0x2c,0x22,0x57,0x69,0x6e,0x22,0x2c,0x22,0x4d,0x65,0x6e,0x75,0x22,0x2c,0x22,0x41,0x70,0x70,0x73,0x22,0x2c,0x22,0x53,0x63,0x72,0x6f,0x6c,0x6c,0x22,0x2c,0x22,0x4d,0x6f,0x7a,0x50,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x4b,0x65,0x79,0x22,0x2c,0x22,0x4e,0x64,0x22,0x2c,0x22,0x4f,0x64,0x22,0x2c,0x22,0x41,0x6c,0x74,0x22,0x2c,0x22,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x22,0x2c,0x22,0x4d,0x65,0x74,0x61,0x22,0x2c,0x22,0x53,0x68,0x69,0x66,0x74,0x22,0x2c,0x22,0x50,0x64,0x22,0x2c,0x22,0x51,0x64,0x22,0x2c,0x22,0x6b,0x65,0x79,0x22,0x2c,0x22,0x53,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x22,0x66,0x72,0x6f,0x6d,0x43,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x22,0x2c,0x22,0x63,0x6f,0x64,0x65,0x22,0x2c,0x22,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x72,0x65,0x70,0x65,0x61,0x74,0x22,0x2c,0x22,0x6c,0x6f,0x63,0x61,0x6c,0x65,0x22,0x2c,0x22,0x77,0x68,0x69,0x63,0x68,0x22,0x2c,0x22,0x52,0x64,0x22,0x2c,0x22,0x54,0x64,0x22,0x2c,0x22,0x77,0x69,0x64,0x74,0x68,0x22,0x2c,0x22,0x68,0x65,0x69,0x67,0x68,0x74,0x22,0x2c,0x22,0x70,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x22,0x2c,0x22,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x69,0x61,0x6c,0x50,0x72,0x65,0x73,0x73,0x75,0x72,0x65,0x22,0x2c,0x22,0x74,0x69,0x6c,0x74,0x58,0x22,0x2c,0x22,0x74,0x69,0x6c,0x74,0x59,0x22,0x2c,0x22,0x74,0x77,0x69,0x73,0x74,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x69,0x73,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x22,0x2c,0x22,0x56,0x64,0x22,0x2c,0x22,0x74,0x6f,0x75,0x63,0x68,0x65,0x73,0x22,0x2c,0x22,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x22,0x2c,0x22,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x54,0x6f,0x75,0x63,0x68,0x65,0x73,0x22,0x2c,0x22,0x58,0x64,0x22,0x2c,0x22,0x59,0x64,0x22,0x2c,0x22,0x64,0x65,0x6c,0x74,0x61,0x58,0x22,0x2c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x58,0x22,0x2c,0x22,0x64,0x65,0x6c,0x74,0x61,0x59,0x22,0x2c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x59,0x22,0x2c,0x22,0x77,0x68,0x65,0x65,0x6c,0x44,0x65,0x6c,0x74,0x61,0x22,0x2c,0x22,0x64,0x65,0x6c,0x74,0x61,0x5a,0x22,0x2c,0x22,0x64,0x65,0x6c,0x74,0x61,0x4d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x5a,0x64,0x22,0x2c,0x22,0x24,0x64,0x22,0x2c,0x22,0x61,0x65,0x22,0x2c,0x22,0x62,0x65,0x22,0x2c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x63,0x65,0x22,0x2c,0x22,0x64,0x65,0x22,0x2c,0x22,0x65,0x65,0x22,0x2c,0x22,0x66,0x65,0x22,0x2c,0x22,0x67,0x65,0x22,0x2c,0x22,0x68,0x65,0x22,0x2c,0x22,0x69,0x65,0x22,0x2c,0x22,0x6c,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6c,0x6f,0x72,0x22,0x2c,0x22,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,0x22,0x2c,0x22,0x65,0x6d,0x61,0x69,0x6c,0x22,0x2c,0x22,0x6d,0x6f,0x6e,0x74,0x68,0x22,0x2c,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x2c,0x22,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x22,0x2c,0x22,0x72,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x73,0x65,0x61,0x72,0x63,0x68,0x22,0x2c,0x22,0x74,0x65,0x6c,0x22,0x2c,0x22,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x74,0x69,0x6d,0x65,0x22,0x2c,0x22,0x75,0x72,0x6c,0x22,0x2c,0x22,0x77,0x65,0x65,0x6b,0x22,0x2c,0x22,0x6d,0x65,0x22,0x2c,0x22,0x6e,0x65,0x22,0x2c,0x22,0x6f,0x65,0x22,0x2c,0x22,0x65,0x76,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x73,0x22,0x2c,0x22,0x70,0x65,0x22,0x2c,0x22,0x71,0x65,0x22,0x2c,0x22,0x72,0x65,0x22,0x2c,0x22,0x73,0x65,0x22,0x2c,0x22,0x74,0x65,0x22,0x2c,0x22,0x75,0x65,0x22,0x2c,0x22,0x76,0x65,0x22,0x2c,0x22,0x77,0x65,0x22,0x2c,0x22,0x78,0x65,0x22,0x2c,0x22,0x79,0x65,0x22,0x2c,0x22,0x7a,0x65,0x22,0x2c,0x22,0x6f,0x6e,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x41,0x65,0x22,0x2c,0x22,0x64,0x65,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x22,0x2c,0x22,0x42,0x65,0x22,0x2c,0x22,0x43,0x65,0x22,0x2c,0x22,0x61,0x74,0x74,0x61,0x63,0x68,0x45,0x76,0x65,0x6e,0x74,0x22,0x2c,0x22,0x44,0x65,0x22,0x2c,0x22,0x45,0x65,0x22,0x2c,0x22,0x46,0x65,0x22,0x2c,0x22,0x48,0x65,0x22,0x2c,0x22,0x49,0x65,0x22,0x2c,0x22,0x4a,0x65,0x22,0x2c,0x22,0x4b,0x65,0x22,0x2c,0x22,0x6e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x6f,0x66,0x66,0x73,0x65,0x74,0x22,0x2c,0x22,0x6e,0x65,0x78,0x74,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x22,0x2c,0x22,0x4c,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x73,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x4d,0x65,0x22,0x2c,0x22,0x48,0x54,0x4d,0x4c,0x49,0x46,0x72,0x61,0x6d,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x22,0x2c,0x22,0x68,0x72,0x65,0x66,0x22,0x2c,0x22,0x4e,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x45,0x64,0x69,0x74,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x4f,0x65,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x45,0x6c,0x65,0x6d,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x52,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x73,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x65,0x6e,0x64,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x73,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x45,0x6e,0x64,0x22,0x2c,0x22,0x6d,0x69,0x6e,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x69,0x65,0x77,0x22,0x2c,0x22,0x67,0x65,0x74,0x53,0x65,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x65,0x78,0x74,0x65,0x6e,0x64,0x22,0x2c,0x22,0x72,0x61,0x6e,0x67,0x65,0x43,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x61,0x6e,0x63,0x68,0x6f,0x72,0x4f,0x66,0x66,0x73,0x65,0x74,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x4f,0x66,0x66,0x73,0x65,0x74,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x41,0x6c,0x6c,0x52,0x61,0x6e,0x67,0x65,0x73,0x22,0x2c,0x22,0x61,0x64,0x64,0x52,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x45,0x6e,0x64,0x22,0x2c,0x22,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6c,0x65,0x66,0x74,0x22,0x2c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x4c,0x65,0x66,0x74,0x22,0x2c,0x22,0x74,0x6f,0x70,0x22,0x2c,0x22,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x54,0x6f,0x70,0x22,0x2c,0x22,0x66,0x6f,0x63,0x75,0x73,0x22,0x2c,0x22,0x50,0x65,0x22,0x2c,0x22,0x51,0x65,0x22,0x2c,0x22,0x52,0x65,0x22,0x2c,0x22,0x53,0x65,0x22,0x2c,0x22,0x54,0x65,0x22,0x2c,0x22,0x55,0x65,0x22,0x2c,0x22,0x56,0x65,0x22,0x2c,0x22,0x57,0x65,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x6e,0x64,0x22,0x2c,0x22,0x58,0x65,0x22,0x2c,0x22,0x59,0x65,0x22,0x2c,0x22,0x5a,0x65,0x22,0x2c,0x22,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x24,0x65,0x22,0x2c,0x22,0x61,0x66,0x22,0x2c,0x22,0x62,0x66,0x22,0x2c,0x22,0x63,0x66,0x22,0x2c,0x22,0x64,0x66,0x22,0x2c,0x22,0x65,0x66,0x22,0x2c,0x22,0x66,0x66,0x22,0x2c,0x22,0x67,0x66,0x22,0x2c,0x22,0x68,0x66,0x22,0x2c,0x22,0x6c,0x66,0x22,0x2c,0x22,0x6d,0x66,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x63,0x61,0x74,0x22,0x2c,0x22,0x6e,0x66,0x22,0x2c,0x22,0x55,0x62,0x22,0x2c,0x22,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x22,0x2c,0x22,0x6c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x22,0x2c,0x22,0x44,0x22,0x2c,0x22,0x6f,0x66,0x22,0x2c,0x22,0x68,0x61,0x73,0x22,0x2c,0x22,0x70,0x66,0x22,0x2c,0x22,0x71,0x66,0x22,0x2c,0x22,0x72,0x66,0x22,0x2c,0x22,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x22,0x2c,0x22,0x73,0x66,0x22,0x2c,0x22,0x62,0x69,0x6e,0x64,0x22,0x2c,0x22,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x2c,0x22,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x22,0x2c,0x22,0x6e,0x22,0x2c,0x22,0x74,0x22,0x2c,0x22,0x4a,0x22,0x2c,0x22,0x78,0x22,0x2c,0x22,0x75,0x22,0x2c,0x22,0x77,0x22,0x2c,0x22,0x46,0x22,0x2c,0x22,0x74,0x66,0x22,0x2c,0x22,0x75,0x66,0x22,0x2c,0x22,0x70,0x61,0x72,0x65,0x6e,0x74,0x57,0x69,0x6e,0x64,0x6f,0x77,0x22,0x2c,0x22,0x76,0x66,0x22,0x2c,0x22,0x77,0x66,0x22,0x2c,0x22,0x6e,0x61,0x22,0x2c,0x22,0x78,0x61,0x22,0x2c,0x22,0x24,0x61,0x22,0x2c,0x22,0x62,0x61,0x22,0x2c,0x22,0x6a,0x65,0x22,0x2c,0x22,0x63,0x68,0x61,0x72,0x22,0x2c,0x22,0x6b,0x65,0x22,0x2c,0x22,0x75,0x6e,0x73,0x68,0x69,0x66,0x74,0x22,0x2c,0x22,0x78,0x66,0x22,0x2c,0x22,0x79,0x66,0x22,0x2c,0x22,0x7a,0x66,0x22,0x2c,0x22,0x41,0x66,0x22,0x2c,0x22,0x42,0x66,0x22,0x2c,0x22,0x43,0x66,0x22,0x2c,0x22,0x44,0x66,0x22,0x2c,0x22,0x45,0x66,0x22,0x2c,0x22,0x5f,0x5f,0x68,0x74,0x6d,0x6c,0x22,0x2c,0x22,0x46,0x66,0x22,0x2c,0x22,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x47,0x66,0x22,0x2c,0x22,0x63,0x6c,0x65,0x61,0x72,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x48,0x66,0x22,0x2c,0x22,0x50,0x72,0x6f,0x6d,0x69,0x73,0x65,0x22,0x2c,0x22,0x4a,0x66,0x22,0x2c,0x22,0x71,0x75,0x65,0x75,0x65,0x4d,0x69,0x63,0x72,0x6f,0x74,0x61,0x73,0x6b,0x22,0x2c,0x22,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x22,0x2c,0x22,0x74,0x68,0x65,0x6e,0x22,0x2c,0x22,0x63,0x61,0x74,0x63,0x68,0x22,0x2c,0x22,0x49,0x66,0x22,0x2c,0x22,0x4b,0x66,0x22,0x2c,0x22,0x4c,0x66,0x22,0x2c,0x22,0x4d,0x66,0x22,0x2c,0x22,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x53,0x69,0x62,0x6c,0x69,0x6e,0x67,0x22,0x2c,0x22,0x4e,0x66,0x22,0x2c,0x22,0x4f,0x66,0x22,0x2c,0x22,0x50,0x66,0x22,0x2c,0x22,0x51,0x66,0x22,0x2c,0x22,0x52,0x66,0x22,0x2c,0x22,0x53,0x66,0x22,0x2c,0x22,0x54,0x66,0x22,0x2c,0x22,0x55,0x66,0x22,0x2c,0x22,0x45,0x22,0x2c,0x22,0x47,0x22,0x2c,0x22,0x56,0x66,0x22,0x2c,0x22,0x48,0x22,0x2c,0x22,0x57,0x66,0x22,0x2c,0x22,0x58,0x66,0x22,0x2c,0x22,0x59,0x66,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x22,0x2c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x55,0x6e,0x6d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x61,0x73,0x6b,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x5a,0x66,0x22,0x2c,0x22,0x63,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x73,0x22,0x2c,0x22,0x24,0x66,0x22,0x2c,0x22,0x61,0x67,0x22,0x2c,0x22,0x62,0x67,0x22,0x2c,0x22,0x67,0x65,0x74,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x63,0x67,0x22,0x2c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x4d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x4d,0x65,0x72,0x67,0x65,0x64,0x43,0x68,0x69,0x6c,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x64,0x67,0x22,0x2c,0x22,0x65,0x67,0x22,0x2c,0x22,0x66,0x67,0x22,0x2c,0x22,0x67,0x67,0x22,0x2c,0x22,0x68,0x67,0x22,0x2c,0x22,0x6a,0x67,0x22,0x2c,0x22,0x6b,0x67,0x22,0x2c,0x22,0x6c,0x67,0x22,0x2c,0x22,0x6d,0x67,0x22,0x2c,0x22,0x6e,0x67,0x22,0x2c,0x22,0x6f,0x67,0x22,0x2c,0x22,0x70,0x67,0x22,0x2c,0x22,0x71,0x67,0x22,0x2c,0x22,0x72,0x67,0x22,0x2c,0x22,0x73,0x67,0x22,0x2c,0x22,0x74,0x67,0x22,0x2c,0x22,0x75,0x67,0x22,0x2c,0x22,0x76,0x67,0x22,0x2c,0x22,0x77,0x67,0x22,0x2c,0x22,0x78,0x67,0x22,0x2c,0x22,0x79,0x67,0x22,0x2c,0x22,0x49,0x22,0x2c,0x22,0x7a,0x67,0x22,0x2c,0x22,0x41,0x67,0x22,0x2c,0x22,0x42,0x67,0x22,0x2c,0x22,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x64,0x65,0x6c,0x65,0x74,0x69,0x6f,0x6e,0x73,0x22,0x2c,0x22,0x43,0x67,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x66,0x6c,0x6f,0x77,0x22,0x2c,0x22,0x74,0x72,0x65,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x72,0x65,0x74,0x72,0x79,0x4c,0x61,0x6e,0x65,0x22,0x2c,0x22,0x44,0x67,0x22,0x2c,0x22,0x6d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x45,0x67,0x22,0x2c,0x22,0x46,0x67,0x22,0x2c,0x22,0x47,0x67,0x22,0x2c,0x22,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x48,0x67,0x22,0x2c,0x22,0x49,0x67,0x22,0x2c,0x22,0x4a,0x67,0x22,0x2c,0x22,0x4b,0x67,0x22,0x2c,0x22,0x4c,0x67,0x22,0x2c,0x22,0x72,0x65,0x66,0x22,0x2c,0x22,0x5f,0x6f,0x77,0x6e,0x65,0x72,0x22,0x2c,0x22,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x52,0x65,0x66,0x22,0x2c,0x22,0x72,0x65,0x66,0x73,0x22,0x2c,0x22,0x4d,0x67,0x22,0x2c,0x22,0x6a,0x6f,0x69,0x6e,0x22,0x2c,0x22,0x4e,0x67,0x22,0x2c,0x22,0x4f,0x67,0x22,0x2c,0x22,0x69,0x6e,0x64,0x65,0x78,0x22,0x2c,0x22,0x50,0x67,0x22,0x2c,0x22,0x51,0x67,0x22,0x2c,0x22,0x70,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x52,0x67,0x22,0x2c,0x22,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x53,0x67,0x22,0x2c,0x22,0x54,0x67,0x22,0x2c,0x22,0x71,0x22,0x2c,0x22,0x72,0x22,0x2c,0x22,0x79,0x22,0x2c,0x22,0x6e,0x65,0x78,0x74,0x22,0x2c,0x22,0x64,0x6f,0x6e,0x65,0x22,0x2c,0x22,0x55,0x67,0x22,0x2c,0x22,0x56,0x67,0x22,0x2c,0x22,0x57,0x67,0x22,0x2c,0x22,0x58,0x67,0x22,0x2c,0x22,0x59,0x67,0x22,0x2c,0x22,0x5a,0x67,0x22,0x2c,0x22,0x24,0x67,0x22,0x2c,0x22,0x61,0x68,0x22,0x2c,0x22,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x62,0x68,0x22,0x2c,0x22,0x63,0x68,0x69,0x6c,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x63,0x68,0x22,0x2c,0x22,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x63,0x69,0x65,0x73,0x22,0x2c,0x22,0x66,0x69,0x72,0x73,0x74,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x6c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x64,0x68,0x22,0x2c,0x22,0x65,0x68,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x6d,0x65,0x6d,0x6f,0x69,0x7a,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x66,0x68,0x22,0x2c,0x22,0x67,0x68,0x22,0x2c,0x22,0x68,0x68,0x22,0x2c,0x22,0x69,0x6e,0x74,0x65,0x72,0x6c,0x65,0x61,0x76,0x65,0x64,0x22,0x2c,0x22,0x69,0x68,0x22,0x2c,0x22,0x6a,0x68,0x22,0x2c,0x22,0x6b,0x68,0x22,0x2c,0x22,0x75,0x70,0x64,0x61,0x74,0x65,0x51,0x75,0x65,0x75,0x65,0x22,0x2c,0x22,0x62,0x61,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x66,0x69,0x72,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x42,0x61,0x73,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x73,0x68,0x61,0x72,0x65,0x64,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x22,0x2c,0x22,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x22,0x2c,0x22,0x6c,0x68,0x22,0x2c,0x22,0x6d,0x68,0x22,0x2c,0x22,0x65,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x6c,0x61,0x6e,0x65,0x22,0x2c,0x22,0x70,0x61,0x79,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x22,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x6e,0x68,0x22,0x2c,0x22,0x4b,0x22,0x2c,0x22,0x6f,0x68,0x22,0x2c,0x22,0x70,0x68,0x22,0x2c,0x22,0x71,0x68,0x22,0x2c,0x22,0x72,0x68,0x22,0x2c,0x22,0x73,0x68,0x22,0x2c,0x22,0x74,0x68,0x22,0x2c,0x22,0x75,0x68,0x22,0x2c,0x22,0x76,0x68,0x22,0x2c,0x22,0x77,0x68,0x22,0x2c,0x22,0x78,0x68,0x22,0x2c,0x22,0x79,0x68,0x22,0x2c,0x22,0x74,0x61,0x67,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x7a,0x68,0x22,0x2c,0x22,0x41,0x68,0x22,0x2c,0x22,0x42,0x68,0x22,0x2c,0x22,0x4c,0x22,0x2c,0x22,0x43,0x68,0x22,0x2c,0x22,0x72,0x65,0x76,0x65,0x61,0x6c,0x4f,0x72,0x64,0x65,0x72,0x22,0x2c,0x22,0x44,0x68,0x22,0x2c,0x22,0x45,0x68,0x22,0x2c,0x22,0x5f,0x77,0x6f,0x72,0x6b,0x49,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x50,0x72,0x69,0x6d,0x61,0x72,0x79,0x22,0x2c,0x22,0x46,0x68,0x22,0x2c,0x22,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x22,0x2c,0x22,0x47,0x68,0x22,0x2c,0x22,0x48,0x68,0x22,0x2c,0x22,0x4d,0x22,0x2c,0x22,0x4e,0x22,0x2c,0x22,0x4f,0x22,0x2c,0x22,0x49,0x68,0x22,0x2c,0x22,0x4a,0x68,0x22,0x2c,0x22,0x4b,0x68,0x22,0x2c,0x22,0x4c,0x68,0x22,0x2c,0x22,0x50,0x22,0x2c,0x22,0x4d,0x68,0x22,0x2c,0x22,0x4e,0x68,0x22,0x2c,0x22,0x4f,0x68,0x22,0x2c,0x22,0x50,0x68,0x22,0x2c,0x22,0x51,0x68,0x22,0x2c,0x22,0x52,0x68,0x22,0x2c,0x22,0x53,0x68,0x22,0x2c,0x22,0x54,0x68,0x22,0x2c,0x22,0x62,0x61,0x73,0x65,0x51,0x75,0x65,0x75,0x65,0x22,0x2c,0x22,0x71,0x75,0x65,0x75,0x65,0x22,0x2c,0x22,0x55,0x68,0x22,0x2c,0x22,0x56,0x68,0x22,0x2c,0x22,0x57,0x68,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x22,0x2c,0x22,0x61,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x68,0x61,0x73,0x45,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x65,0x61,0x67,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x52,0x65,0x6e,0x64,0x65,0x72,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x22,0x2c,0x22,0x58,0x68,0x22,0x2c,0x22,0x59,0x68,0x22,0x2c,0x22,0x5a,0x68,0x22,0x2c,0x22,0x24,0x68,0x22,0x2c,0x22,0x61,0x69,0x22,0x2c,0x22,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x22,0x2c,0x22,0x62,0x69,0x22,0x2c,0x22,0x63,0x69,0x22,0x2c,0x22,0x51,0x22,0x2c,0x22,0x64,0x69,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x22,0x2c,0x22,0x73,0x74,0x6f,0x72,0x65,0x73,0x22,0x2c,0x22,0x65,0x69,0x22,0x2c,0x22,0x66,0x69,0x22,0x2c,0x22,0x67,0x69,0x22,0x2c,0x22,0x68,0x69,0x22,0x2c,0x22,0x69,0x69,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x22,0x2c,0x22,0x64,0x65,0x73,0x74,0x72,0x6f,0x79,0x22,0x2c,0x22,0x64,0x65,0x70,0x73,0x22,0x2c,0x22,0x6a,0x69,0x22,0x2c,0x22,0x6b,0x69,0x22,0x2c,0x22,0x6c,0x69,0x22,0x2c,0x22,0x6d,0x69,0x22,0x2c,0x22,0x6e,0x69,0x22,0x2c,0x22,0x6f,0x69,0x22,0x2c,0x22,0x70,0x69,0x22,0x2c,0x22,0x71,0x69,0x22,0x2c,0x22,0x72,0x69,0x22,0x2c,0x22,0x73,0x69,0x22,0x2c,0x22,0x74,0x69,0x22,0x2c,0x22,0x75,0x69,0x22,0x2c,0x22,0x76,0x69,0x22,0x2c,0x22,0x77,0x69,0x22,0x2c,0x22,0x78,0x69,0x22,0x2c,0x22,0x79,0x69,0x22,0x2c,0x22,0x7a,0x69,0x22,0x2c,0x22,0x41,0x69,0x22,0x2c,0x22,0x52,0x22,0x2c,0x22,0x42,0x69,0x22,0x2c,0x22,0x72,0x65,0x61,0x64,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x75,0x73,0x65,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x75,0x73,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x75,0x73,0x65,0x45,0x66,0x66,0x65,0x63,0x74,0x22,0x2c,0x22,0x75,0x73,0x65,0x49,0x6d,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x49,0x6e,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x45,0x66,0x66,0x65,0x63,0x74,0x22,0x2c,0x22,0x75,0x73,0x65,0x4c,0x61,0x79,0x6f,0x75,0x74,0x45,0x66,0x66,0x65,0x63,0x74,0x22,0x2c,0x22,0x75,0x73,0x65,0x4d,0x65,0x6d,0x6f,0x22,0x2c,0x22,0x75,0x73,0x65,0x52,0x65,0x64,0x75,0x63,0x65,0x72,0x22,0x2c,0x22,0x75,0x73,0x65,0x52,0x65,0x66,0x22,0x2c,0x22,0x75,0x73,0x65,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x44,0x65,0x62,0x75,0x67,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x44,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x75,0x73,0x65,0x4d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x53,0x79,0x6e,0x63,0x45,0x78,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x74,0x6f,0x72,0x65,0x22,0x2c,0x22,0x75,0x73,0x65,0x49,0x64,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x73,0x4e,0x65,0x77,0x52,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x22,0x2c,0x22,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x50,0x72,0x65,0x66,0x69,0x78,0x22,0x2c,0x22,0x43,0x69,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x44,0x69,0x22,0x2c,0x22,0x45,0x69,0x22,0x2c,0x22,0x69,0x73,0x4d,0x6f,0x75,0x6e,0x74,0x65,0x64,0x22,0x2c,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x73,0x22,0x2c,0x22,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x53,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x52,0x65,0x70,0x6c,0x61,0x63,0x65,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x46,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x46,0x69,0x22,0x2c,0x22,0x73,0x68,0x6f,0x75,0x6c,0x64,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x69,0x73,0x50,0x75,0x72,0x65,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x22,0x2c,0x22,0x47,0x69,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x73,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x75,0x70,0x64,0x61,0x74,0x65,0x72,0x22,0x2c,0x22,0x48,0x69,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x52,0x65,0x63,0x65,0x69,0x76,0x65,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x49,0x69,0x22,0x2c,0x22,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x67,0x65,0x74,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x4d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x4d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x4a,0x69,0x22,0x2c,0x22,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x2c,0x22,0x64,0x69,0x67,0x65,0x73,0x74,0x22,0x2c,0x22,0x4b,0x69,0x22,0x2c,0x22,0x4c,0x69,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x22,0x2c,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x4d,0x69,0x22,0x2c,0x22,0x57,0x65,0x61,0x6b,0x4d,0x61,0x70,0x22,0x2c,0x22,0x4e,0x69,0x22,0x2c,0x22,0x4f,0x69,0x22,0x2c,0x22,0x50,0x69,0x22,0x2c,0x22,0x51,0x69,0x22,0x2c,0x22,0x67,0x65,0x74,0x44,0x65,0x72,0x69,0x76,0x65,0x64,0x53,0x74,0x61,0x74,0x65,0x46,0x72,0x6f,0x6d,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x43,0x61,0x74,0x63,0x68,0x22,0x2c,0x22,0x52,0x69,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x53,0x74,0x61,0x63,0x6b,0x22,0x2c,0x22,0x53,0x69,0x22,0x2c,0x22,0x70,0x69,0x6e,0x67,0x43,0x61,0x63,0x68,0x65,0x22,0x2c,0x22,0x54,0x69,0x22,0x2c,0x22,0x55,0x69,0x22,0x2c,0x22,0x56,0x69,0x22,0x2c,0x22,0x57,0x69,0x22,0x2c,0x22,0x52,0x65,0x61,0x63,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,0x77,0x6e,0x65,0x72,0x22,0x2c,0x22,0x58,0x69,0x22,0x2c,0x22,0x59,0x69,0x22,0x2c,0x22,0x5a,0x69,0x22,0x2c,0x22,0x24,0x69,0x22,0x2c,0x22,0x61,0x6a,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x22,0x2c,0x22,0x62,0x6a,0x22,0x2c,0x22,0x63,0x6a,0x22,0x2c,0x22,0x64,0x6a,0x22,0x2c,0x22,0x62,0x61,0x73,0x65,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x63,0x61,0x63,0x68,0x65,0x50,0x6f,0x6f,0x6c,0x22,0x2c,0x22,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x73,0x22,0x2c,0x22,0x65,0x6a,0x22,0x2c,0x22,0x66,0x6a,0x22,0x2c,0x22,0x67,0x6a,0x22,0x2c,0x22,0x68,0x6a,0x22,0x2c,0x22,0x69,0x6a,0x22,0x2c,0x22,0x55,0x4e,0x53,0x41,0x46,0x45,0x5f,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x44,0x69,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x6a,0x6a,0x22,0x2c,0x22,0x6b,0x6a,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x6c,0x6a,0x22,0x2c,0x22,0x7a,0x6a,0x22,0x2c,0x22,0x41,0x6a,0x22,0x2c,0x22,0x42,0x6a,0x22,0x2c,0x22,0x43,0x6a,0x22,0x2c,0x22,0x6d,0x6a,0x22,0x2c,0x22,0x6e,0x6a,0x22,0x2c,0x22,0x6f,0x6a,0x22,0x2c,0x22,0x66,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x70,0x6a,0x22,0x2c,0x22,0x71,0x6a,0x22,0x2c,0x22,0x73,0x6a,0x22,0x2c,0x22,0x64,0x61,0x74,0x61,0x73,0x65,0x74,0x22,0x2c,0x22,0x64,0x67,0x73,0x74,0x22,0x2c,0x22,0x74,0x6a,0x22,0x2c,0x22,0x75,0x6a,0x22,0x2c,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x65,0x74,0x72,0x79,0x22,0x2c,0x22,0x72,0x6a,0x22,0x2c,0x22,0x73,0x75,0x62,0x74,0x72,0x65,0x65,0x46,0x6c,0x61,0x67,0x73,0x22,0x2c,0x22,0x76,0x6a,0x22,0x2c,0x22,0x77,0x6a,0x22,0x2c,0x22,0x69,0x73,0x42,0x61,0x63,0x6b,0x77,0x61,0x72,0x64,0x73,0x22,0x2c,0x22,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x22,0x2c,0x22,0x72,0x65,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x6c,0x61,0x73,0x74,0x22,0x2c,0x22,0x74,0x61,0x69,0x6c,0x22,0x2c,0x22,0x74,0x61,0x69,0x6c,0x4d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x78,0x6a,0x22,0x2c,0x22,0x44,0x6a,0x22,0x2c,0x22,0x53,0x22,0x2c,0x22,0x45,0x6a,0x22,0x2c,0x22,0x46,0x6a,0x22,0x2c,0x22,0x77,0x61,0x73,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x22,0x2c,0x22,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x22,0x2c,0x22,0x73,0x75,0x70,0x70,0x72,0x65,0x73,0x73,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x57,0x61,0x72,0x6e,0x69,0x6e,0x67,0x22,0x2c,0x22,0x6f,0x6e,0x43,0x6c,0x69,0x63,0x6b,0x22,0x2c,0x22,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x22,0x2c,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x4e,0x53,0x22,0x2c,0x22,0x61,0x75,0x74,0x6f,0x46,0x6f,0x63,0x75,0x73,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x54,0x65,0x78,0x74,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x54,0x22,0x2c,0x22,0x47,0x6a,0x22,0x2c,0x22,0x48,0x6a,0x22,0x2c,0x22,0x49,0x6a,0x22,0x2c,0x22,0x4a,0x6a,0x22,0x2c,0x22,0x55,0x22,0x2c,0x22,0x4b,0x6a,0x22,0x2c,0x22,0x57,0x65,0x61,0x6b,0x53,0x65,0x74,0x22,0x2c,0x22,0x56,0x22,0x2c,0x22,0x4c,0x6a,0x22,0x2c,0x22,0x57,0x22,0x2c,0x22,0x4d,0x6a,0x22,0x2c,0x22,0x4e,0x6a,0x22,0x2c,0x22,0x50,0x6a,0x22,0x2c,0x22,0x51,0x6a,0x22,0x2c,0x22,0x52,0x6a,0x22,0x2c,0x22,0x53,0x6a,0x22,0x2c,0x22,0x54,0x6a,0x22,0x2c,0x22,0x55,0x6a,0x22,0x2c,0x22,0x56,0x6a,0x22,0x2c,0x22,0x69,0x6e,0x73,0x65,0x72,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x22,0x2c,0x22,0x5f,0x72,0x65,0x61,0x63,0x74,0x52,0x6f,0x6f,0x74,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x22,0x2c,0x22,0x57,0x6a,0x22,0x2c,0x22,0x58,0x22,0x2c,0x22,0x58,0x6a,0x22,0x2c,0x22,0x59,0x6a,0x22,0x2c,0x22,0x5a,0x6a,0x22,0x2c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x57,0x69,0x6c,0x6c,0x55,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x61,0x6b,0x22,0x2c,0x22,0x62,0x6b,0x22,0x2c,0x22,0x63,0x6b,0x22,0x2c,0x22,0x64,0x6b,0x22,0x2c,0x22,0x65,0x6b,0x22,0x2c,0x22,0x69,0x73,0x48,0x69,0x64,0x64,0x65,0x6e,0x22,0x2c,0x22,0x66,0x6b,0x22,0x2c,0x22,0x67,0x6b,0x22,0x2c,0x22,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x22,0x2c,0x22,0x68,0x6b,0x22,0x2c,0x22,0x69,0x6b,0x22,0x2c,0x22,0x6a,0x6b,0x22,0x2c,0x22,0x6b,0x6b,0x22,0x2c,0x22,0x5f,0x5f,0x72,0x65,0x61,0x63,0x74,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x53,0x6e,0x61,0x70,0x73,0x68,0x6f,0x74,0x42,0x65,0x66,0x6f,0x72,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x73,0x72,0x63,0x22,0x2c,0x22,0x56,0x6b,0x22,0x2c,0x22,0x6c,0x6b,0x22,0x2c,0x22,0x63,0x65,0x69,0x6c,0x22,0x2c,0x22,0x6d,0x6b,0x22,0x2c,0x22,0x6e,0x6b,0x22,0x2c,0x22,0x6f,0x6b,0x22,0x2c,0x22,0x59,0x22,0x2c,0x22,0x5a,0x22,0x2c,0x22,0x70,0x6b,0x22,0x2c,0x22,0x71,0x6b,0x22,0x2c,0x22,0x72,0x6b,0x22,0x2c,0x22,0x73,0x6b,0x22,0x2c,0x22,0x74,0x6b,0x22,0x2c,0x22,0x49,0x6e,0x66,0x69,0x6e,0x69,0x74,0x79,0x22,0x2c,0x22,0x75,0x6b,0x22,0x2c,0x22,0x76,0x6b,0x22,0x2c,0x22,0x77,0x6b,0x22,0x2c,0x22,0x78,0x6b,0x22,0x2c,0x22,0x79,0x6b,0x22,0x2c,0x22,0x7a,0x6b,0x22,0x2c,0x22,0x41,0x6b,0x22,0x2c,0x22,0x42,0x6b,0x22,0x2c,0x22,0x43,0x6b,0x22,0x2c,0x22,0x44,0x6b,0x22,0x2c,0x22,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x73,0x22,0x2c,0x22,0x65,0x78,0x70,0x69,0x72,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x77,0x63,0x22,0x2c,0x22,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x69,0x67,0x22,0x2c,0x22,0x45,0x6b,0x22,0x2c,0x22,0x46,0x6b,0x22,0x2c,0x22,0x47,0x6b,0x22,0x2c,0x22,0x48,0x6b,0x22,0x2c,0x22,0x49,0x6b,0x22,0x2c,0x22,0x4a,0x6b,0x22,0x2c,0x22,0x4b,0x6b,0x22,0x2c,0x22,0x4c,0x6b,0x22,0x2c,0x22,0x4d,0x6b,0x22,0x2c,0x22,0x4e,0x6b,0x22,0x2c,0x22,0x4f,0x6b,0x22,0x2c,0x22,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x57,0x6f,0x72,0x6b,0x22,0x2c,0x22,0x66,0x69,0x6e,0x69,0x73,0x68,0x65,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x50,0x6b,0x22,0x2c,0x22,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x48,0x61,0x6e,0x64,0x6c,0x65,0x22,0x2c,0x22,0x51,0x6b,0x22,0x2c,0x22,0x52,0x6b,0x22,0x2c,0x22,0x53,0x6b,0x22,0x2c,0x22,0x54,0x6b,0x22,0x2c,0x22,0x55,0x6b,0x22,0x2c,0x22,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4c,0x61,0x6e,0x65,0x73,0x22,0x2c,0x22,0x42,0x63,0x22,0x2c,0x22,0x4f,0x6a,0x22,0x2c,0x22,0x6f,0x6e,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x6d,0x63,0x22,0x2c,0x22,0x6f,0x6e,0x52,0x65,0x63,0x6f,0x76,0x65,0x72,0x61,0x62,0x6c,0x65,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x57,0x6b,0x22,0x2c,0x22,0x6f,0x6e,0x50,0x6f,0x73,0x74,0x43,0x6f,0x6d,0x6d,0x69,0x74,0x46,0x69,0x62,0x65,0x72,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x58,0x6b,0x22,0x2c,0x22,0x59,0x6b,0x22,0x2c,0x22,0x24,0x6b,0x22,0x2c,0x22,0x69,0x73,0x52,0x65,0x61,0x63,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x2c,0x22,0x61,0x6c,0x22,0x2c,0x22,0x6d,0x75,0x74,0x61,0x62,0x6c,0x65,0x53,0x6f,0x75,0x72,0x63,0x65,0x45,0x61,0x67,0x65,0x72,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x44,0x61,0x74,0x61,0x22,0x2c,0x22,0x62,0x6c,0x22,0x2c,0x22,0x63,0x61,0x63,0x68,0x65,0x22,0x2c,0x22,0x70,0x65,0x6e,0x64,0x69,0x6e,0x67,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x42,0x6f,0x75,0x6e,0x64,0x61,0x72,0x69,0x65,0x73,0x22,0x2c,0x22,0x64,0x6c,0x22,0x2c,0x22,0x65,0x6c,0x22,0x2c,0x22,0x66,0x6c,0x22,0x2c,0x22,0x67,0x6c,0x22,0x2c,0x22,0x68,0x6c,0x22,0x2c,0x22,0x69,0x6c,0x22,0x2c,0x22,0x79,0x6a,0x22,0x2c,0x22,0x5a,0x6b,0x22,0x2c,0x22,0x6b,0x6c,0x22,0x2c,0x22,0x72,0x65,0x70,0x6f,0x72,0x74,0x45,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x6c,0x6c,0x22,0x2c,0x22,0x5f,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x6d,0x6c,0x22,0x2c,0x22,0x6e,0x6c,0x22,0x2c,0x22,0x6f,0x6c,0x22,0x2c,0x22,0x70,0x6c,0x22,0x2c,0x22,0x72,0x6c,0x22,0x2c,0x22,0x71,0x6c,0x22,0x2c,0x22,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x48,0x79,0x64,0x72,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x73,0x70,0x6c,0x69,0x63,0x65,0x22,0x2c,0x22,0x71,0x75,0x65,0x72,0x79,0x53,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x41,0x6c,0x6c,0x22,0x2c,0x22,0x4a,0x53,0x4f,0x4e,0x22,0x2c,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x69,0x66,0x79,0x22,0x2c,0x22,0x66,0x6f,0x72,0x6d,0x22,0x2c,0x22,0x73,0x6c,0x22,0x2c,0x22,0x75,0x73,0x69,0x6e,0x67,0x43,0x6c,0x69,0x65,0x6e,0x74,0x45,0x6e,0x74,0x72,0x79,0x50,0x6f,0x69,0x6e,0x74,0x22,0x2c,0x22,0x45,0x76,0x65,0x6e,0x74,0x73,0x22,0x2c,0x22,0x74,0x6c,0x22,0x2c,0x22,0x66,0x69,0x6e,0x64,0x46,0x69,0x62,0x65,0x72,0x42,0x79,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x22,0x2c,0x22,0x62,0x75,0x6e,0x64,0x6c,0x65,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x50,0x61,0x63,0x6b,0x61,0x67,0x65,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x75,0x6c,0x22,0x2c,0x22,0x72,0x65,0x6e,0x64,0x65,0x72,0x65,0x72,0x43,0x6f,0x6e,0x66,0x69,0x67,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x48,0x6f,0x6f,0x6b,0x53,0x74,0x61,0x74,0x65,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x44,0x65,0x6c,0x65,0x74,0x65,0x50,0x61,0x74,0x68,0x22,0x2c,0x22,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x50,0x72,0x6f,0x70,0x73,0x52,0x65,0x6e,0x61,0x6d,0x65,0x50,0x61,0x74,0x68,0x22,0x2c,0x22,0x73,0x65,0x74,0x45,0x72,0x72,0x6f,0x72,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x22,0x2c,0x22,0x73,0x65,0x74,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x22,0x2c,0x22,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x44,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x65,0x72,0x52,0x65,0x66,0x22,0x2c,0x22,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x42,0x79,0x46,0x69,0x62,0x65,0x72,0x22,0x2c,0x22,0x66,0x69,0x6e,0x64,0x48,0x6f,0x73,0x74,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x73,0x46,0x6f,0x72,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x22,0x2c,0x22,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x22,0x2c,0x22,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x65,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x73,0x65,0x74,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x22,0x2c,0x22,0x67,0x65,0x74,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x46,0x69,0x62,0x65,0x72,0x22,0x2c,0x22,0x72,0x65,0x63,0x6f,0x6e,0x63,0x69,0x6c,0x65,0x72,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x5f,0x5f,0x52,0x45,0x41,0x43,0x54,0x5f,0x44,0x45,0x56,0x54,0x4f,0x4f,0x4c,0x53,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x48,0x4f,0x4f,0x4b,0x5f,0x5f,0x22,0x2c,0x22,0x76,0x6c,0x22,0x2c,0x22,0x69,0x73,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x22,0x2c,0x22,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x46,0x69,0x62,0x65,0x72,0x22,0x2c,0x22,0x69,0x6e,0x6a,0x65,0x63,0x74,0x22,0x2c,0x22,0x65,0x78,0x70,0x6f,0x72,0x74,0x73,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x50,0x6f,0x72,0x74,0x61,0x6c,0x22,0x2c,0x22,0x63,0x6c,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x73,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x66,0x69,0x6e,0x64,0x44,0x4f,0x4d,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x66,0x6c,0x75,0x73,0x68,0x53,0x79,0x6e,0x63,0x22,0x2c,0x22,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x22,0x2c,0x22,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x52,0x6f,0x6f,0x74,0x22,0x2c,0x22,0x68,0x79,0x64,0x72,0x61,0x74,0x65,0x64,0x53,0x6f,0x75,0x72,0x63,0x65,0x73,0x22,0x2c,0x22,0x5f,0x67,0x65,0x74,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x2c,0x22,0x75,0x6e,0x6d,0x6f,0x75,0x6e,0x74,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x41,0x74,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x62,0x61,0x74,0x63,0x68,0x65,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x73,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x65,0x6e,0x64,0x65,0x72,0x53,0x75,0x62,0x74,0x72,0x65,0x65,0x49,0x6e,0x74,0x6f,0x43,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x22,0x2c,0x22,0x63,0x68,0x65,0x63,0x6b,0x44,0x43,0x45,0x22,0x2c,0x22,0x65,0x72,0x72,0x22,0x2c,0x22,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x22,0x2c,0x22,0x5f,0x5f,0x73,0x65,0x6c,0x66,0x22,0x2c,0x22,0x5f,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x2c,0x22,0x6a,0x73,0x78,0x22,0x2c,0x22,0x6a,0x73,0x78,0x73,0x22,0x2c,0x22,0x73,0x65,0x74,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x66,0x6f,0x72,0x63,0x65,0x55,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x22,0x65,0x73,0x63,0x61,0x70,0x65,0x22,0x2c,0x22,0x5f,0x73,0x74,0x61,0x74,0x75,0x73,0x22,0x2c,0x22,0x5f,0x72,0x65,0x73,0x75,0x6c,0x74,0x22,0x2c,0x22,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x22,0x2c,0x22,0x43,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x22,0x2c,0x22,0x6d,0x61,0x70,0x22,0x2c,0x22,0x63,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x74,0x6f,0x41,0x72,0x72,0x61,0x79,0x22,0x2c,0x22,0x6f,0x6e,0x6c,0x79,0x22,0x2c,0x22,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x22,0x2c,0x22,0x46,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x72,0x22,0x2c,0x22,0x50,0x75,0x72,0x65,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x22,0x2c,0x22,0x53,0x74,0x72,0x69,0x63,0x74,0x4d,0x6f,0x64,0x65,0x22,0x2c,0x22,0x53,0x75,0x73,0x70,0x65,0x6e,0x73,0x65,0x22,0x2c,0x22,0x61,0x63,0x74,0x22,0x2c,0x22,0x63,0x6c,0x6f,0x6e,0x65,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x2c,0x22,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x22,0x2c,0x22,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x43,0x6f,0x75,0x6e,0x74,0x22,0x2c,0x22,0x50,0x72,0x6f,0x76,0x69,0x64,0x65,0x72,0x22,0x2c,0x22,0x43,0x6f,0x6e,0x73,0x75,0x6d,0x65,0x72,0x22,0x2c,0x22,0x5f,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x56,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x46,0x61,0x63,0x74,0x6f,0x72,0x79,0x22,0x2c,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x52,0x65,0x66,0x22,0x2c,0x22,0x66,0x6f,0x72,0x77,0x61,0x72,0x64,0x52,0x65,0x66,0x22,0x2c,0x22,0x69,0x73,0x56,0x61,0x6c,0x69,0x64,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x6c,0x61,0x7a,0x79,0x22,0x2c,0x22,0x6d,0x65,0x6d,0x6f,0x22,0x2c,0x22,0x73,0x74,0x61,0x72,0x74,0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x61,0x63,0x74,0x22,0x2c,0x22,0x70,0x6f,0x70,0x22,0x2c,0x22,0x73,0x6f,0x72,0x74,0x49,0x6e,0x64,0x65,0x78,0x22,0x2c,0x22,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x22,0x2c,0x22,0x73,0x65,0x74,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x22,0x2c,0x22,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x65,0x78,0x70,0x69,0x72,0x61,0x74,0x69,0x6f,0x6e,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x4c,0x65,0x76,0x65,0x6c,0x22,0x2c,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x6f,0x72,0x22,0x2c,0x22,0x73,0x63,0x68,0x65,0x64,0x75,0x6c,0x69,0x6e,0x67,0x22,0x2c,0x22,0x69,0x73,0x49,0x6e,0x70,0x75,0x74,0x50,0x65,0x6e,0x64,0x69,0x6e,0x67,0x22,0x2c,0x22,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x22,0x2c,0x22,0x70,0x6f,0x72,0x74,0x32,0x22,0x2c,0x22,0x70,0x6f,0x72,0x74,0x31,0x22,0x2c,0x22,0x6f,0x6e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x2c,0x22,0x70,0x6f,0x73,0x74,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x50,0x72,0x6f,0x66,0x69,0x6c,0x69,0x6e,0x67,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x66,0x6f,0x72,0x63,0x65,0x46,0x72,0x61,0x6d,0x65,0x52,0x61,0x74,0x65,0x22,0x2c,0x22,0x66,0x6c,0x6f,0x6f,0x72,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x67,0x65,0x74,0x46,0x69,0x72,0x73,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x4e,0x6f,0x64,0x65,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6e,0x65,0x78,0x74,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x70,0x61,0x75,0x73,0x65,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x72,0x75,0x6e,0x57,0x69,0x74,0x68,0x50,0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x22,0x2c,0x22,0x64,0x65,0x6c,0x61,0x79,0x22,0x2c,0x22,0x75,0x6e,0x73,0x74,0x61,0x62,0x6c,0x65,0x5f,0x77,0x72,0x61,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5f,0x5f,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x5f,0x5f,0x22,0x2c,0x22,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x49,0x64,0x22,0x2c,0x22,0x63,0x61,0x63,0x68,0x65,0x64,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x22,0x2c,0x22,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x22,0x2c,0x22,0x5f,0x5f,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x5f,0x5f,0x22,0x2c,0x22,0x64,0x65,0x66,0x69,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x6f,0x22,0x2c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x22,0x2c,0x22,0x61,0x6c,0x6c,0x22,0x2c,0x22,0x72,0x65,0x64,0x75,0x63,0x65,0x22,0x2c,0x22,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x73,0x22,0x2c,0x22,0x6d,0x69,0x6e,0x69,0x43,0x73,0x73,0x46,0x22,0x2c,0x22,0x6f,0x62,0x6a,0x22,0x2c,0x22,0x70,0x72,0x6f,0x70,0x22,0x2c,0x22,0x69,0x6e,0x50,0x72,0x6f,0x67,0x72,0x65,0x73,0x73,0x22,0x2c,0x22,0x64,0x61,0x74,0x61,0x57,0x65,0x62,0x70,0x61,0x63,0x6b,0x50,0x72,0x65,0x66,0x69,0x78,0x22,0x2c,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x2c,0x22,0x6e,0x65,0x65,0x64,0x41,0x74,0x74,0x61,0x63,0x68,0x22,0x2c,0x22,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x22,0x2c,0x22,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x42,0x79,0x54,0x61,0x67,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x69,0x22,0x2c,0x22,0x73,0x22,0x2c,0x22,0x67,0x65,0x74,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x22,0x2c,0x22,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x22,0x2c,0x22,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x6e,0x63,0x22,0x2c,0x22,0x6f,0x6e,0x53,0x63,0x72,0x69,0x70,0x74,0x43,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x22,0x2c,0x22,0x70,0x72,0x65,0x76,0x22,0x2c,0x22,0x6f,0x6e,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x22,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x22,0x64,0x6f,0x6e,0x65,0x46,0x6e,0x73,0x22,0x2c,0x22,0x66,0x6e,0x22,0x2c,0x22,0x68,0x65,0x61,0x64,0x22,0x2c,0x22,0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67,0x54,0x61,0x67,0x22,0x2c,0x22,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x73,0x22,0x2c,0x22,0x6a,0x22,0x2c,0x22,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x65,0x64,0x43,0x68,0x75,0x6e,0x6b,0x44,0x61,0x74,0x61,0x22,0x2c,0x22,0x70,0x72,0x6f,0x6d,0x69,0x73,0x65,0x22,0x2c,0x22,0x72,0x65,0x6a,0x65,0x63,0x74,0x22,0x2c,0x22,0x65,0x72,0x72,0x6f,0x72,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x72,0x65,0x61,0x6c,0x53,0x72,0x63,0x22,0x2c,0x22,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x22,0x2c,0x22,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x4a,0x73,0x6f,0x6e,0x70,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x22,0x2c,0x22,0x70,0x61,0x72,0x65,0x6e,0x74,0x43,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x49,0x64,0x73,0x22,0x2c,0x22,0x6d,0x6f,0x72,0x65,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x22,0x2c,0x22,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x22,0x2c,0x22,0x73,0x6f,0x6d,0x65,0x22,0x2c,0x22,0x63,0x68,0x75,0x6e,0x6b,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x22,0x2c,0x22,0x73,0x65,0x6c,0x66,0x22,0x2c,0x22,0x41,0x70,0x70,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x31,0x22,0x2c,0x22,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x31,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x32,0x22,0x2c,0x22,0x73,0x65,0x74,0x56,0x61,0x6c,0x75,0x65,0x32,0x22,0x2c,0x22,0x72,0x65,0x73,0x75,0x6c,0x74,0x22,0x2c,0x22,0x73,0x65,0x74,0x52,0x65,0x73,0x75,0x6c,0x74,0x22,0x2c,0x22,0x5f,0x6a,0x73,0x78,0x73,0x22,0x2c,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e,0x22,0x2c,0x22,0x66,0x6f,0x6e,0x74,0x46,0x61,0x6d,0x69,0x6c,0x79,0x22,0x2c,0x22,0x5f,0x6a,0x73,0x78,0x22,0x2c,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e,0x42,0x6f,0x74,0x74,0x6f,0x6d,0x22,0x2c,0x22,0x6f,0x6e,0x43,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e,0x4c,0x65,0x66,0x74,0x22,0x2c,0x22,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x22,0x2c,0x22,0x66,0x6f,0x6e,0x74,0x53,0x69,0x7a,0x65,0x22,0x2c,0x22,0x63,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x53,0x75,0x6d,0x22,0x2c,0x22,0x73,0x75,0x6d,0x22,0x2c,0x22,0x70,0x61,0x72,0x73,0x65,0x46,0x6c,0x6f,0x61,0x74,0x22,0x2c,0x22,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6c,0x6f,0x72,0x22,0x2c,0x22,0x62,0x6f,0x72,0x64,0x65,0x72,0x22,0x2c,0x22,0x62,0x6f,0x72,0x64,0x65,0x72,0x52,0x61,0x64,0x69,0x75,0x73,0x22,0x2c,0x22,0x63,0x75,0x72,0x73,0x6f,0x72,0x22,0x2c,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e,0x52,0x69,0x67,0x68,0x74,0x22,0x2c,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e,0x54,0x6f,0x70,0x22,0x2c,0x22,0x6f,0x6e,0x50,0x65,0x72,0x66,0x45,0x6e,0x74,0x72,0x79,0x22,0x2c,0x22,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x22,0x5f,0x72,0x65,0x66,0x22,0x2c,0x22,0x67,0x65,0x74,0x43,0x4c,0x53,0x22,0x2c,0x22,0x67,0x65,0x74,0x46,0x49,0x44,0x22,0x2c,0x22,0x67,0x65,0x74,0x46,0x43,0x50,0x22,0x2c,0x22,0x67,0x65,0x74,0x4c,0x43,0x50,0x22,0x2c,0x22,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x22,0x2c,0x22,0x52,0x65,0x61,0x63,0x74,0x44,0x4f,0x4d,0x22,0x2c,0x22,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x22,0x2c,0x22,0x52,0x65,0x61,0x63,0x74,0x22,0x2c,0x22,0x72,0x65,0x70,0x6f,0x72,0x74,0x57,0x65,0x62,0x56,0x69,0x74,0x61,0x6c,0x73,0x22,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x52,0x6f,0x6f,0x74,0x22,0x3a,0x22,0x22,0x7d};
+
+static const unsigned char FILE_10[] = {0x22,0x75,0x73,0x65,0x20,0x73,0x74,0x72,0x69,0x63,0x74,0x22,0x3b,0x28,0x73,0x65,0x6c,0x66,0x2e,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3d,0x73,0x65,0x6c,0x66,0x2e,0x77,0x65,0x62,0x70,0x61,0x63,0x6b,0x43,0x68,0x75,0x6e,0x6b,0x77,0x65,0x62,0x75,0x69,0x5f,0x72,0x65,0x61,0x63,0x74,0x5f,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x7c,0x7c,0x5b,0x5d,0x29,0x2e,0x70,0x75,0x73,0x68,0x28,0x5b,0x5b,0x34,0x35,0x33,0x5d,0x2c,0x7b,0x34,0x35,0x33,0x3a,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x3d,0x3e,0x7b,0x6e,0x2e,0x72,0x28,0x74,0x29,0x2c,0x6e,0x2e,0x64,0x28,0x74,0x2c,0x7b,0x67,0x65,0x74,0x43,0x4c,0x53,0x3a,0x28,0x29,0x3d,0x3e,0x79,0x2c,0x67,0x65,0x74,0x46,0x43,0x50,0x3a,0x28,0x29,0x3d,0x3e,0x67,0x2c,0x67,0x65,0x74,0x46,0x49,0x44,0x3a,0x28,0x29,0x3d,0x3e,0x43,0x2c,0x67,0x65,0x74,0x4c,0x43,0x50,0x3a,0x28,0x29,0x3d,0x3e,0x50,0x2c,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x3a,0x28,0x29,0x3d,0x3e,0x44,0x7d,0x29,0x3b,0x76,0x61,0x72,0x20,0x69,0x2c,0x72,0x2c,0x61,0x2c,0x6f,0x2c,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x6e,0x61,0x6d,0x65,0x3a,0x65,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x74,0x3f,0x2d,0x31,0x3a,0x74,0x2c,0x64,0x65,0x6c,0x74,0x61,0x3a,0x30,0x2c,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3a,0x5b,0x5d,0x2c,0x69,0x64,0x3a,0x22,0x76,0x32,0x2d,0x22,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x44,0x61,0x74,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2c,0x22,0x2d,0x22,0x29,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x4d,0x61,0x74,0x68,0x2e,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x2a,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x29,0x2b,0x31,0x65,0x31,0x32,0x29,0x7d,0x7d,0x2c,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x4f,0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x45,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x73,0x2e,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x28,0x65,0x29,0x29,0x7b,0x69,0x66,0x28,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x21,0x28,0x22,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x45,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x69,0x6e,0x67,0x22,0x69,0x6e,0x20,0x73,0x65,0x6c,0x66,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x4f,0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x74,0x29,0x7d,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x6f,0x62,0x73,0x65,0x72,0x76,0x65,0x28,0x7b,0x74,0x79,0x70,0x65,0x3a,0x65,0x2c,0x62,0x75,0x66,0x66,0x65,0x72,0x65,0x64,0x3a,0x21,0x30,0x7d,0x29,0x2c,0x6e,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x7d,0x7d,0x2c,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x69,0x29,0x7b,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x22,0x21,0x3d,0x3d,0x69,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x21,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x65,0x28,0x69,0x29,0x2c,0x74,0x26,0x26,0x28,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x2c,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x29,0x29,0x7d,0x3b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x2c,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x73,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x61,0x67,0x65,0x73,0x68,0x6f,0x77,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x74,0x2e,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x64,0x26,0x26,0x65,0x28,0x74,0x29,0x7d,0x29,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x6d,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x72,0x29,0x7b,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3e,0x3d,0x30,0x26,0x26,0x28,0x72,0x7c,0x7c,0x6e,0x29,0x26,0x26,0x28,0x74,0x2e,0x64,0x65,0x6c,0x74,0x61,0x3d,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2d,0x28,0x69,0x7c,0x7c,0x30,0x29,0x2c,0x28,0x74,0x2e,0x64,0x65,0x6c,0x74,0x61,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x69,0x29,0x26,0x26,0x28,0x69,0x3d,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x65,0x28,0x74,0x29,0x29,0x29,0x7d,0x7d,0x2c,0x76,0x3d,0x2d,0x31,0x2c,0x70,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x22,0x3d,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x53,0x74,0x61,0x74,0x65,0x3f,0x30,0x3a,0x31,0x2f,0x30,0x7d,0x2c,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3b,0x76,0x3d,0x74,0x7d,0x29,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x6c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x3c,0x30,0x26,0x26,0x28,0x76,0x3d,0x70,0x28,0x29,0x2c,0x64,0x28,0x29,0x2c,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x3d,0x70,0x28,0x29,0x2c,0x64,0x28,0x29,0x7d,0x29,0x2c,0x30,0x29,0x7d,0x29,0x29,0x29,0x2c,0x7b,0x67,0x65,0x74,0x20,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x7d,0x7d,0x7d,0x2c,0x67,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x6c,0x28,0x29,0x2c,0x72,0x3d,0x75,0x28,0x22,0x46,0x43,0x50,0x22,0x29,0x2c,0x61,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x26,0x26,0x28,0x66,0x26,0x26,0x66,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x2c,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x69,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2c,0x72,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x6e,0x28,0x21,0x30,0x29,0x29,0x29,0x7d,0x2c,0x6f,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x26,0x26,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x4e,0x61,0x6d,0x65,0x28,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x22,0x29,0x5b,0x30,0x5d,0x2c,0x66,0x3d,0x6f,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x63,0x28,0x22,0x70,0x61,0x69,0x6e,0x74,0x22,0x2c,0x61,0x29,0x3b,0x28,0x6f,0x7c,0x7c,0x66,0x29,0x26,0x26,0x28,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x6f,0x26,0x26,0x61,0x28,0x6f,0x29,0x2c,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x69,0x29,0x7b,0x72,0x3d,0x75,0x28,0x22,0x46,0x43,0x50,0x22,0x29,0x2c,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x29,0x7d,0x2c,0x68,0x3d,0x21,0x31,0x2c,0x54,0x3d,0x2d,0x31,0x2c,0x79,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x68,0x7c,0x7c,0x28,0x67,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x54,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x29,0x29,0x2c,0x68,0x3d,0x21,0x30,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x54,0x3e,0x2d,0x31,0x26,0x26,0x65,0x28,0x74,0x29,0x7d,0x2c,0x72,0x3d,0x75,0x28,0x22,0x43,0x4c,0x53,0x22,0x2c,0x30,0x29,0x2c,0x61,0x3d,0x30,0x2c,0x6f,0x3d,0x5b,0x5d,0x2c,0x76,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x2e,0x68,0x61,0x64,0x52,0x65,0x63,0x65,0x6e,0x74,0x49,0x6e,0x70,0x75,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6f,0x5b,0x30,0x5d,0x2c,0x69,0x3d,0x6f,0x5b,0x6f,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x5d,0x3b,0x61,0x26,0x26,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x69,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x31,0x65,0x33,0x26,0x26,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x74,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x35,0x65,0x33,0x3f,0x28,0x61,0x2b,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x29,0x3a,0x28,0x61,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6f,0x3d,0x5b,0x65,0x5d,0x29,0x2c,0x61,0x3e,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x28,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x61,0x2c,0x72,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3d,0x6f,0x2c,0x6e,0x28,0x29,0x29,0x7d,0x7d,0x2c,0x70,0x3d,0x63,0x28,0x22,0x6c,0x61,0x79,0x6f,0x75,0x74,0x2d,0x73,0x68,0x69,0x66,0x74,0x22,0x2c,0x76,0x29,0x3b,0x70,0x26,0x26,0x28,0x6e,0x3d,0x6d,0x28,0x69,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x66,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x70,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x76,0x29,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x2c,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x61,0x3d,0x30,0x2c,0x54,0x3d,0x2d,0x31,0x2c,0x72,0x3d,0x75,0x28,0x22,0x43,0x4c,0x53,0x22,0x2c,0x30,0x29,0x2c,0x6e,0x3d,0x6d,0x28,0x69,0x2c,0x72,0x2c,0x74,0x29,0x7d,0x29,0x29,0x29,0x7d,0x2c,0x45,0x3d,0x7b,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x7d,0x2c,0x77,0x3d,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x2c,0x4c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x69,0x7c,0x7c,0x28,0x69,0x3d,0x74,0x2c,0x72,0x3d,0x65,0x2c,0x61,0x3d,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x2c,0x46,0x28,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x29,0x2c,0x53,0x28,0x29,0x29,0x7d,0x2c,0x53,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x69,0x66,0x28,0x72,0x3e,0x3d,0x30,0x26,0x26,0x72,0x3c,0x61,0x2d,0x77,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x7b,0x65,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x3a,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x6e,0x61,0x6d,0x65,0x3a,0x69,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x69,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2c,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x3a,0x69,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x3a,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2b,0x72,0x7d,0x3b,0x6f,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x74,0x28,0x65,0x29,0x7d,0x29,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x7d,0x7d,0x2c,0x62,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x28,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3e,0x31,0x65,0x31,0x32,0x3f,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x3a,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x29,0x2d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3b,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x22,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x4c,0x28,0x65,0x2c,0x74,0x29,0x2c,0x72,0x28,0x29,0x7d,0x2c,0x69,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x28,0x29,0x7d,0x2c,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x22,0x2c,0x6e,0x2c,0x45,0x29,0x2c,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x2c,0x69,0x2c,0x45,0x29,0x7d,0x3b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x22,0x2c,0x6e,0x2c,0x45,0x29,0x2c,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x22,0x2c,0x69,0x2c,0x45,0x29,0x7d,0x28,0x74,0x2c,0x65,0x29,0x3a,0x4c,0x28,0x74,0x2c,0x65,0x29,0x7d,0x7d,0x2c,0x46,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x5b,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x22,0x2c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x2c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x74,0x2c,0x62,0x2c,0x45,0x29,0x7d,0x29,0x29,0x7d,0x2c,0x43,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x61,0x3d,0x6c,0x28,0x29,0x2c,0x76,0x3d,0x75,0x28,0x22,0x46,0x49,0x44,0x22,0x29,0x2c,0x70,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x61,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x76,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x65,0x2e,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x2d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2c,0x76,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x6e,0x28,0x21,0x30,0x29,0x29,0x7d,0x2c,0x64,0x3d,0x63,0x28,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x22,0x2c,0x70,0x29,0x3b,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x76,0x2c,0x74,0x29,0x2c,0x64,0x26,0x26,0x66,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x64,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x70,0x29,0x2c,0x64,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x7d,0x29,0x2c,0x21,0x30,0x29,0x2c,0x64,0x26,0x26,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3b,0x76,0x3d,0x75,0x28,0x22,0x46,0x49,0x44,0x22,0x29,0x2c,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x76,0x2c,0x74,0x29,0x2c,0x6f,0x3d,0x5b,0x5d,0x2c,0x72,0x3d,0x2d,0x31,0x2c,0x69,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x46,0x28,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x29,0x2c,0x61,0x3d,0x70,0x2c,0x6f,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x2c,0x53,0x28,0x29,0x7d,0x29,0x29,0x7d,0x2c,0x6b,0x3d,0x7b,0x7d,0x2c,0x50,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x6c,0x28,0x29,0x2c,0x72,0x3d,0x75,0x28,0x22,0x4c,0x43,0x50,0x22,0x29,0x2c,0x61,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3b,0x74,0x3c,0x69,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x74,0x2c,0x72,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x6e,0x28,0x29,0x29,0x7d,0x2c,0x6f,0x3d,0x63,0x28,0x22,0x6c,0x61,0x72,0x67,0x65,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x22,0x2c,0x61,0x29,0x3b,0x69,0x66,0x28,0x6f,0x29,0x7b,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x72,0x2c,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x76,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6b,0x5b,0x72,0x2e,0x69,0x64,0x5d,0x7c,0x7c,0x28,0x6f,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x61,0x29,0x2c,0x6f,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x2c,0x6b,0x5b,0x72,0x2e,0x69,0x64,0x5d,0x3d,0x21,0x30,0x2c,0x6e,0x28,0x21,0x30,0x29,0x29,0x7d,0x3b,0x5b,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x22,0x2c,0x22,0x63,0x6c,0x69,0x63,0x6b,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x65,0x2c,0x76,0x2c,0x7b,0x6f,0x6e,0x63,0x65,0x3a,0x21,0x30,0x2c,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x7d,0x29,0x7d,0x29,0x29,0x2c,0x66,0x28,0x76,0x2c,0x21,0x30,0x29,0x2c,0x73,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x69,0x29,0x7b,0x72,0x3d,0x75,0x28,0x22,0x4c,0x43,0x50,0x22,0x29,0x2c,0x6e,0x3d,0x6d,0x28,0x65,0x2c,0x72,0x2c,0x74,0x29,0x2c,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x6b,0x5b,0x72,0x2e,0x69,0x64,0x5d,0x3d,0x21,0x30,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x7d,0x2c,0x44,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x2c,0x6e,0x3d,0x75,0x28,0x22,0x54,0x54,0x46,0x42,0x22,0x29,0x3b,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x54,0x79,0x70,0x65,0x28,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x22,0x29,0x5b,0x30,0x5d,0x7c,0x7c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x74,0x69,0x6d,0x69,0x6e,0x67,0x2c,0x74,0x3d,0x7b,0x65,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x3a,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x22,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x30,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x20,0x69,0x6e,0x20,0x65,0x29,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x22,0x74,0x6f,0x4a,0x53,0x4f,0x4e,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x74,0x5b,0x6e,0x5d,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x61,0x78,0x28,0x65,0x5b,0x6e,0x5d,0x2d,0x65,0x2e,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x7d,0x28,0x29,0x3b,0x69,0x66,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x2e,0x64,0x65,0x6c,0x74,0x61,0x3d,0x74,0x2e,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x53,0x74,0x61,0x72,0x74,0x2c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3c,0x30,0x7c,0x7c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3e,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3d,0x5b,0x74,0x5d,0x2c,0x65,0x28,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x7d,0x7d,0x2c,0x22,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x22,0x3d,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x72,0x65,0x61,0x64,0x79,0x53,0x74,0x61,0x74,0x65,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x74,0x2c,0x30,0x29,0x3a,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x22,0x6c,0x6f,0x61,0x64,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x74,0x2c,0x30,0x29,0x7d,0x29,0x29,0x7d,0x7d,0x7d,0x5d,0x29,0x3b,0x0a,0x2f,0x2f,0x23,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x4d,0x61,0x70,0x70,0x69,0x6e,0x67,0x55,0x52,0x4c,0x3d,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x2e,0x6d,0x61,0x70};
+
+static const unsigned char FILE_11[] = {0x7b,0x22,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x3a,0x33,0x2c,0x22,0x66,0x69,0x6c,0x65,0x22,0x3a,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x6a,0x73,0x2f,0x34,0x35,0x33,0x2e,0x37,0x62,0x62,0x33,0x64,0x63,0x62,0x33,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x6a,0x73,0x22,0x2c,0x22,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x73,0x22,0x3a,0x22,0x30,0x4d,0x41,0x41,0x41,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x4a,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x43,0x41,0x41,0x43,0x49,0x2c,0x4b,0x41,0x41,0x4b,0x4c,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x57,0x41,0x41,0x4d,0x2c,0x49,0x41,0x41,0x53,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x51,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4d,0x41,0x41,0x4d,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x4f,0x41,0x41,0x4f,0x47,0x2c,0x4b,0x41,0x41,0x4b,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x63,0x41,0x41,0x63,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x45,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x47,0x41,0x41,0x47,0x67,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x43,0x2c,0x53,0x41,0x41,0x53,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x41,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x6f,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x6c,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x65,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x2c,0x53,0x41,0x41,0x53,0x6a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x42,0x2c,0x61,0x41,0x41,0x61,0x43,0x2c,0x49,0x41,0x41,0x49,0x72,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x55,0x41,0x41,0x53,0x2c,0x49,0x41,0x41,0x4b,0x76,0x42,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x45,0x41,0x41,0x45,0x71,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x47,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x49,0x41,0x41,0x49,0x34,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x32,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x57,0x41,0x41,0x57,0x33,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x34,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x6d,0x42,0x41,0x41,0x6d,0x42,0x35,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x34,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x57,0x41,0x41,0x57,0x35,0x42,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x2f,0x42,0x2c,0x47,0x41,0x41,0x47,0x38,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x59,0x41,0x41,0x59,0x2c,0x53,0x41,0x41,0x53,0x37,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x57,0x41,0x41,0x57,0x68,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x47,0x41,0x41,0x47,0x48,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x4b,0x41,0x41,0x4b,0x44,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x48,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x46,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x59,0x41,0x41,0x4f,0x2c,0x49,0x41,0x41,0x53,0x4a,0x2c,0x4b,0x41,0x41,0x4b,0x41,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x57,0x41,0x41,0x57,0x52,0x2c,0x53,0x41,0x41,0x53,0x43,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x31,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x48,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x4a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x49,0x41,0x41,0x49,0x4c,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x51,0x2c,0x59,0x41,0x41,0x59,0x2c,0x57,0x41,0x41,0x57,0x4c,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x43,0x41,0x41,0x43,0x2c,0x6d,0x42,0x41,0x41,0x49,0x49,0x2c,0x47,0x41,0x41,0x6b,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x4e,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x4f,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x7a,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x43,0x2c,0x49,0x41,0x41,0x49,0x5a,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6c,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x41,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x42,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x61,0x41,0x41,0x61,0x31,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x64,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x6a,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x42,0x2c,0x51,0x41,0x41,0x51,0x6f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x47,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x55,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x61,0x41,0x41,0x61,0x41,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x44,0x2c,0x59,0x41,0x41,0x59,0x43,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x30,0x42,0x41,0x41,0x30,0x42,0x2c,0x47,0x41,0x41,0x47,0x58,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x6e,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x6b,0x42,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x6b,0x43,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x75,0x42,0x2c,0x45,0x41,0x41,0x45,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x42,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x43,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x57,0x41,0x41,0x57,0x74,0x42,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x43,0x2c,0x59,0x41,0x41,0x59,0x6c,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x54,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x55,0x41,0x41,0x55,0x6e,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2b,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x67,0x44,0x2c,0x49,0x41,0x41,0x49,0x52,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x7a,0x43,0x2c,0x47,0x41,0x41,0x47,0x6b,0x44,0x2c,0x45,0x41,0x41,0x45,0x6c,0x44,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x32,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2f,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x46,0x2c,0x47,0x41,0x41,0x47,0x69,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x6c,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x74,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x65,0x41,0x41,0x65,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x6e,0x44,0x2c,0x45,0x41,0x41,0x45,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x69,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x2c,0x47,0x41,0x41,0x47,0x6c,0x42,0x2c,0x47,0x41,0x41,0x47,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x78,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x33,0x43,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x31,0x43,0x2c,0x45,0x41,0x41,0x45,0x30,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x52,0x2c,0x47,0x41,0x41,0x47,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x4d,0x41,0x41,0x4d,0x38,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x70,0x43,0x2c,0x49,0x41,0x41,0x49,0x6d,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x51,0x41,0x41,0x51,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x36,0x42,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x51,0x41,0x41,0x51,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x6c,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x69,0x44,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x65,0x41,0x41,0x65,0x73,0x42,0x2c,0x47,0x41,0x41,0x47,0x61,0x2c,0x49,0x41,0x41,0x49,0x6a,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x79,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x47,0x2c,0x63,0x41,0x41,0x63,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x70,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x36,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x65,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x68,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x73,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x45,0x41,0x41,0x47,0x43,0x2c,0x53,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x2f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x67,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x78,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x48,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x53,0x2c,0x4b,0x41,0x41,0x4b,0x69,0x44,0x2c,0x45,0x41,0x41,0x45,0x2f,0x42,0x2c,0x71,0x42,0x41,0x41,0x71,0x42,0x67,0x43,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x47,0x41,0x41,0x47,0x35,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x74,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x30,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x63,0x41,0x41,0x63,0x7a,0x44,0x2c,0x4b,0x41,0x41,0x4b,0x4c,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x75,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x2f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2b,0x44,0x2c,0x4f,0x41,0x41,0x4f,0x43,0x2c,0x57,0x41,0x41,0x57,0x68,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x45,0x2c,0x57,0x41,0x41,0x57,0x72,0x42,0x2c,0x55,0x41,0x41,0x55,0x33,0x43,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x34,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x70,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x45,0x41,0x41,0x45,0x2b,0x44,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x67,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x67,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x43,0x41,0x41,0x43,0x2c,0x49,0x41,0x41,0x49,0x2f,0x44,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x49,0x41,0x41,0x49,0x31,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x6d,0x43,0x2c,0x59,0x41,0x41,0x59,0x6c,0x43,0x2c,0x4f,0x41,0x41,0x4f,0x5a,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x65,0x41,0x41,0x65,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x77,0x42,0x2c,0x4b,0x41,0x41,0x4b,0x2c,0x53,0x41,0x41,0x53,0x78,0x42,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x79,0x44,0x2c,0x45,0x41,0x41,0x45,0x33,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x41,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x79,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x59,0x41,0x41,0x59,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x47,0x41,0x41,0x47,0x31,0x42,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x31,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x59,0x41,0x41,0x59,0x35,0x42,0x2c,0x45,0x41,0x41,0x45,0x71,0x44,0x2c,0x47,0x41,0x41,0x47,0x7a,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x33,0x42,0x2c,0x45,0x41,0x41,0x45,0x6f,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x68,0x4f,0x2c,0x43,0x41,0x41,0x6b,0x4f,0x74,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x47,0x41,0x41,0x47,0x32,0x44,0x2c,0x45,0x41,0x41,0x45,0x31,0x44,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x34,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x35,0x44,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x59,0x41,0x41,0x59,0x2c,0x55,0x41,0x41,0x55,0x2c,0x61,0x41,0x41,0x61,0x2c,0x65,0x41,0x41,0x65,0x6b,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x6a,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x4f,0x41,0x41,0x4f,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x45,0x2c,0x45,0x41,0x41,0x45,0x5a,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x61,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6c,0x45,0x2c,0x45,0x41,0x41,0x45,0x67,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x49,0x41,0x41,0x49,0x47,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x36,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6a,0x44,0x2c,0x47,0x41,0x41,0x47,0x41,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x50,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x43,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x69,0x45,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x6a,0x45,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x46,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x51,0x41,0x41,0x51,0x6f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x43,0x2c,0x47,0x41,0x41,0x47,0x6d,0x43,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x65,0x2c,0x45,0x41,0x41,0x45,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x63,0x41,0x41,0x63,0x69,0x43,0x2c,0x47,0x41,0x41,0x47,0x64,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x50,0x2c,0x47,0x41,0x41,0x47,0x67,0x42,0x2c,0x47,0x41,0x41,0x47,0x78,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x77,0x42,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x63,0x41,0x41,0x63,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x32,0x42,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x52,0x2c,0x59,0x41,0x41,0x59,0x2c,0x49,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x49,0x51,0x2c,0x47,0x41,0x41,0x47,0x6e,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x66,0x2c,0x45,0x41,0x41,0x45,0x79,0x42,0x2c,0x45,0x41,0x41,0x45,0x72,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x46,0x2c,0x45,0x41,0x41,0x45,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x75,0x43,0x2c,0x45,0x41,0x41,0x45,0x50,0x2c,0x47,0x41,0x41,0x47,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4b,0x41,0x41,0x4b,0x34,0x44,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x64,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x39,0x43,0x2c,0x45,0x41,0x41,0x45,0x79,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x36,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x45,0x41,0x41,0x45,0x51,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x74,0x45,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x6d,0x43,0x2c,0x49,0x41,0x41,0x49,0x4a,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x6e,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x44,0x2c,0x45,0x41,0x41,0x45,0x32,0x43,0x2c,0x55,0x41,0x41,0x55,0x31,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x71,0x43,0x2c,0x6b,0x42,0x41,0x41,0x6b,0x42,0x4e,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x4c,0x2c,0x45,0x41,0x41,0x45,0x69,0x43,0x2c,0x45,0x41,0x41,0x45,0x31,0x42,0x2c,0x51,0x41,0x41,0x51,0x6f,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x35,0x43,0x2c,0x47,0x41,0x41,0x47,0x45,0x2c,0x49,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x70,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x32,0x42,0x41,0x41,0x32,0x42,0x6d,0x42,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x6c,0x43,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x77,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x34,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6b,0x42,0x2c,0x63,0x41,0x41,0x63,0x68,0x43,0x2c,0x49,0x41,0x41,0x49,0x61,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x61,0x41,0x41,0x61,0x32,0x42,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x50,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x55,0x41,0x41,0x55,0x2c,0x53,0x41,0x41,0x53,0x67,0x45,0x2c,0x53,0x41,0x41,0x53,0x2c,0x53,0x41,0x41,0x53,0x6c,0x45,0x2c,0x47,0x41,0x41,0x47,0x38,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x79,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x38,0x42,0x2c,0x4d,0x41,0x41,0x4b,0x2c,0x45,0x41,0x41,0x47,0x64,0x2c,0x53,0x41,0x41,0x51,0x2c,0x47,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x2f,0x42,0x2c,0x45,0x41,0x41,0x45,0x65,0x2c,0x47,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x49,0x56,0x2c,0x47,0x41,0x41,0x47,0x2c,0x53,0x41,0x41,0x53,0x35,0x42,0x2c,0x47,0x41,0x41,0x47,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x39,0x42,0x2c,0x45,0x41,0x41,0x45,0x2c,0x4f,0x41,0x41,0x4f,0x46,0x2c,0x45,0x41,0x41,0x45,0x2b,0x42,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x45,0x41,0x41,0x45,0x6a,0x43,0x2c,0x47,0x41,0x41,0x47,0x2b,0x43,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x75,0x42,0x41,0x41,0x75,0x42,0x2c,0x57,0x41,0x41,0x57,0x64,0x2c,0x45,0x41,0x41,0x45,0x35,0x42,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x43,0x2c,0x59,0x41,0x41,0x59,0x6c,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x54,0x2c,0x45,0x41,0x41,0x45,0x6b,0x43,0x2c,0x55,0x41,0x41,0x55,0x67,0x43,0x2c,0x45,0x41,0x41,0x45,0x6e,0x43,0x2c,0x45,0x41,0x41,0x45,0x7a,0x42,0x2c,0x4b,0x41,0x41,0x49,0x2c,0x45,0x41,0x41,0x47,0x50,0x2c,0x47,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x73,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x53,0x41,0x41,0x53,0x78,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x43,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x51,0x41,0x41,0x51,0x48,0x2c,0x45,0x41,0x41,0x45,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x41,0x2c,0x45,0x41,0x41,0x45,0x36,0x43,0x2c,0x59,0x41,0x41,0x59,0x32,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x63,0x41,0x41,0x63,0x2c,0x49,0x41,0x41,0x49,0x2c,0x57,0x41,0x41,0x57,0x2c,0x49,0x41,0x41,0x49,0x7a,0x45,0x2c,0x45,0x41,0x41,0x45,0x38,0x43,0x2c,0x59,0x41,0x41,0x59,0x34,0x42,0x2c,0x4f,0x41,0x41,0x4f,0x7a,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x36,0x44,0x2c,0x55,0x41,0x41,0x55,0x2c,0x61,0x41,0x41,0x61,0x6e,0x42,0x2c,0x55,0x41,0x41,0x55,0x2c,0x47,0x41,0x41,0x47,0x2c,0x49,0x41,0x41,0x49,0x2c,0x49,0x41,0x41,0x49,0x7a,0x43,0x2c,0x4b,0x41,0x41,0x4b,0x46,0x2c,0x45,0x41,0x41,0x45,0x2c,0x6f,0x42,0x41,0x41,0x6f,0x42,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x57,0x41,0x41,0x57,0x41,0x2c,0x49,0x41,0x41,0x49,0x44,0x2c,0x45,0x41,0x41,0x45,0x43,0x2c,0x47,0x41,0x41,0x47,0x57,0x2c,0x4b,0x41,0x41,0x4b,0x38,0x44,0x2c,0x49,0x41,0x41,0x49,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x47,0x41,0x41,0x47,0x46,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x67,0x42,0x41,0x41,0x67,0x42,0x2c,0x49,0x41,0x41,0x49,0x2c,0x4f,0x41,0x41,0x4f,0x33,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x43,0x41,0x41,0x6a,0x4c,0x2c,0x47,0x41,0x41,0x71,0x4c,0x2c,0x47,0x41,0x41,0x47,0x43,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x4a,0x2c,0x45,0x41,0x41,0x45,0x4b,0x2c,0x4d,0x41,0x41,0x4d,0x4e,0x2c,0x45,0x41,0x41,0x45,0x34,0x45,0x2c,0x63,0x41,0x41,0x63,0x33,0x45,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x47,0x41,0x41,0x47,0x4a,0x2c,0x45,0x41,0x41,0x45,0x49,0x2c,0x4d,0x41,0x41,0x4d,0x77,0x43,0x2c,0x59,0x41,0x41,0x59,0x6c,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x2c,0x4f,0x41,0x41,0x4f,0x56,0x2c,0x45,0x41,0x41,0x45,0x4d,0x2c,0x51,0x41,0x41,0x51,0x2c,0x43,0x41,0x41,0x43,0x50,0x2c,0x47,0x41,0x41,0x47,0x44,0x2c,0x45,0x41,0x41,0x45,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x43,0x41,0x41,0x43,0x2c,0x4d,0x41,0x41,0x4d,0x46,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x41,0x41,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x61,0x41,0x41,0x61,0x32,0x42,0x2c,0x53,0x41,0x41,0x53,0x6d,0x44,0x2c,0x57,0x41,0x41,0x57,0x76,0x43,0x2c,0x57,0x41,0x41,0x57,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x36,0x42,0x2c,0x69,0x42,0x41,0x41,0x69,0x42,0x2c,0x51,0x41,0x41,0x51,0x2c,0x57,0x41,0x41,0x57,0x2c,0x4f,0x41,0x41,0x4f,0x53,0x2c,0x57,0x41,0x41,0x57,0x74,0x43,0x2c,0x45,0x41,0x41,0x45,0x2c,0x45,0x41,0x41,0x45,0x2c,0x47,0x41,0x41,0x47,0x2c,0x43,0x22,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x22,0x3a,0x5b,0x22,0x2e,0x2e,0x2f,0x6e,0x6f,0x64,0x65,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x2f,0x77,0x65,0x62,0x2d,0x76,0x69,0x74,0x61,0x6c,0x73,0x2f,0x64,0x69,0x73,0x74,0x2f,0x77,0x65,0x62,0x2d,0x76,0x69,0x74,0x61,0x6c,0x73,0x2e,0x6a,0x73,0x22,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x22,0x3a,0x5b,0x22,0x76,0x61,0x72,0x20,0x65,0x2c,0x74,0x2c,0x6e,0x2c,0x69,0x2c,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x7b,0x6e,0x61,0x6d,0x65,0x3a,0x65,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3a,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x74,0x3f,0x2d,0x31,0x3a,0x74,0x2c,0x64,0x65,0x6c,0x74,0x61,0x3a,0x30,0x2c,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3a,0x5b,0x5d,0x2c,0x69,0x64,0x3a,0x5c,0x22,0x76,0x32,0x2d,0x5c,0x22,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x44,0x61,0x74,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2c,0x5c,0x22,0x2d,0x5c,0x22,0x29,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x4d,0x61,0x74,0x68,0x2e,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x2a,0x4d,0x61,0x74,0x68,0x2e,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x29,0x29,0x2b,0x31,0x65,0x31,0x32,0x29,0x7d,0x7d,0x2c,0x61,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x74,0x72,0x79,0x7b,0x69,0x66,0x28,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x4f,0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x45,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x73,0x2e,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x28,0x65,0x29,0x29,0x7b,0x69,0x66,0x28,0x5c,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x65,0x26,0x26,0x21,0x28,0x5c,0x22,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x45,0x76,0x65,0x6e,0x74,0x54,0x69,0x6d,0x69,0x6e,0x67,0x5c,0x22,0x69,0x6e,0x20,0x73,0x65,0x6c,0x66,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x4f,0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x74,0x29,0x7d,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x2e,0x6f,0x62,0x73,0x65,0x72,0x76,0x65,0x28,0x7b,0x74,0x79,0x70,0x65,0x3a,0x65,0x2c,0x62,0x75,0x66,0x66,0x65,0x72,0x65,0x64,0x3a,0x21,0x30,0x7d,0x29,0x2c,0x6e,0x7d,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x7d,0x7d,0x2c,0x6f,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x28,0x69,0x29,0x7b,0x5c,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x5c,0x22,0x21,0x3d,0x3d,0x69,0x2e,0x74,0x79,0x70,0x65,0x26,0x26,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x21,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x53,0x74,0x61,0x74,0x65,0x7c,0x7c,0x28,0x65,0x28,0x69,0x29,0x2c,0x74,0x26,0x26,0x28,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x2c,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x5c,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x29,0x29,0x7d,0x3b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x63,0x68,0x61,0x6e,0x67,0x65,0x5c,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x2c,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x61,0x67,0x65,0x68,0x69,0x64,0x65,0x5c,0x22,0x2c,0x6e,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x75,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x61,0x67,0x65,0x73,0x68,0x6f,0x77,0x5c,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x74,0x2e,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x64,0x26,0x26,0x65,0x28,0x74,0x29,0x7d,0x29,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x63,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x2c,0x6e,0x29,0x7b,0x76,0x61,0x72,0x20,0x69,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x72,0x29,0x7b,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3e,0x3d,0x30,0x26,0x26,0x28,0x72,0x7c,0x7c,0x6e,0x29,0x26,0x26,0x28,0x74,0x2e,0x64,0x65,0x6c,0x74,0x61,0x3d,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2d,0x28,0x69,0x7c,0x7c,0x30,0x29,0x2c,0x28,0x74,0x2e,0x64,0x65,0x6c,0x74,0x61,0x7c,0x7c,0x76,0x6f,0x69,0x64,0x20,0x30,0x3d,0x3d,0x3d,0x69,0x29,0x26,0x26,0x28,0x69,0x3d,0x74,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x65,0x28,0x74,0x29,0x29,0x29,0x7d,0x7d,0x2c,0x66,0x3d,0x2d,0x31,0x2c,0x73,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x5c,0x22,0x68,0x69,0x64,0x64,0x65,0x6e,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x53,0x74,0x61,0x74,0x65,0x3f,0x30,0x3a,0x31,0x2f,0x30,0x7d,0x2c,0x6d,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6f,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3b,0x66,0x3d,0x74,0x7d,0x29,0x2c,0x21,0x30,0x29,0x7d,0x2c,0x76,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x3c,0x30,0x26,0x26,0x28,0x66,0x3d,0x73,0x28,0x29,0x2c,0x6d,0x28,0x29,0x2c,0x75,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x3d,0x73,0x28,0x29,0x2c,0x6d,0x28,0x29,0x7d,0x29,0x2c,0x30,0x29,0x7d,0x29,0x29,0x29,0x2c,0x7b,0x67,0x65,0x74,0x20,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x7d,0x7d,0x7d,0x2c,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x76,0x28,0x29,0x2c,0x6f,0x3d,0x72,0x28,0x5c,0x22,0x46,0x43,0x50,0x5c,0x22,0x29,0x2c,0x66,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x5c,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x5c,0x22,0x3d,0x3d,0x3d,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x26,0x26,0x28,0x6d,0x26,0x26,0x6d,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x2c,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x69,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x6f,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2c,0x6f,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x6e,0x28,0x21,0x30,0x29,0x29,0x29,0x7d,0x2c,0x73,0x3d,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x26,0x26,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x4e,0x61,0x6d,0x65,0x26,0x26,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x4e,0x61,0x6d,0x65,0x28,0x5c,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x5c,0x22,0x29,0x5b,0x30,0x5d,0x2c,0x6d,0x3d,0x73,0x3f,0x6e,0x75,0x6c,0x6c,0x3a,0x61,0x28,0x5c,0x22,0x70,0x61,0x69,0x6e,0x74,0x5c,0x22,0x2c,0x66,0x29,0x3b,0x28,0x73,0x7c,0x7c,0x6d,0x29,0x26,0x26,0x28,0x6e,0x3d,0x63,0x28,0x65,0x2c,0x6f,0x2c,0x74,0x29,0x2c,0x73,0x26,0x26,0x66,0x28,0x73,0x29,0x2c,0x75,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x69,0x29,0x7b,0x6f,0x3d,0x72,0x28,0x5c,0x22,0x46,0x43,0x50,0x5c,0x22,0x29,0x2c,0x6e,0x3d,0x63,0x28,0x65,0x2c,0x6f,0x2c,0x74,0x29,0x2c,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6f,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x29,0x7d,0x2c,0x70,0x3d,0x21,0x31,0x2c,0x6c,0x3d,0x2d,0x31,0x2c,0x68,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x70,0x7c,0x7c,0x28,0x64,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x6c,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x29,0x29,0x2c,0x70,0x3d,0x21,0x30,0x29,0x3b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x6c,0x3e,0x2d,0x31,0x26,0x26,0x65,0x28,0x74,0x29,0x7d,0x2c,0x66,0x3d,0x72,0x28,0x5c,0x22,0x43,0x4c,0x53,0x5c,0x22,0x2c,0x30,0x29,0x2c,0x73,0x3d,0x30,0x2c,0x6d,0x3d,0x5b,0x5d,0x2c,0x76,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x21,0x65,0x2e,0x68,0x61,0x64,0x52,0x65,0x63,0x65,0x6e,0x74,0x49,0x6e,0x70,0x75,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x6d,0x5b,0x30,0x5d,0x2c,0x69,0x3d,0x6d,0x5b,0x6d,0x2e,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2d,0x31,0x5d,0x3b,0x73,0x26,0x26,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x69,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x31,0x65,0x33,0x26,0x26,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2d,0x74,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x35,0x65,0x33,0x3f,0x28,0x73,0x2b,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6d,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x29,0x3a,0x28,0x73,0x3d,0x65,0x2e,0x76,0x61,0x6c,0x75,0x65,0x2c,0x6d,0x3d,0x5b,0x65,0x5d,0x29,0x2c,0x73,0x3e,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x26,0x26,0x28,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x73,0x2c,0x66,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3d,0x6d,0x2c,0x6e,0x28,0x29,0x29,0x7d,0x7d,0x2c,0x68,0x3d,0x61,0x28,0x5c,0x22,0x6c,0x61,0x79,0x6f,0x75,0x74,0x2d,0x73,0x68,0x69,0x66,0x74,0x5c,0x22,0x2c,0x76,0x29,0x3b,0x68,0x26,0x26,0x28,0x6e,0x3d,0x63,0x28,0x69,0x2c,0x66,0x2c,0x74,0x29,0x2c,0x6f,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x68,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x76,0x29,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x2c,0x75,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x73,0x3d,0x30,0x2c,0x6c,0x3d,0x2d,0x31,0x2c,0x66,0x3d,0x72,0x28,0x5c,0x22,0x43,0x4c,0x53,0x5c,0x22,0x2c,0x30,0x29,0x2c,0x6e,0x3d,0x63,0x28,0x69,0x2c,0x66,0x2c,0x74,0x29,0x7d,0x29,0x29,0x29,0x7d,0x2c,0x54,0x3d,0x7b,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x3a,0x21,0x30,0x2c,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x7d,0x2c,0x79,0x3d,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x2c,0x67,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x69,0x2c,0x72,0x29,0x7b,0x65,0x7c,0x7c,0x28,0x65,0x3d,0x72,0x2c,0x74,0x3d,0x69,0x2c,0x6e,0x3d,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x2c,0x77,0x28,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x29,0x2c,0x45,0x28,0x29,0x29,0x7d,0x2c,0x45,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x69,0x66,0x28,0x74,0x3e,0x3d,0x30,0x26,0x26,0x74,0x3c,0x6e,0x2d,0x79,0x29,0x7b,0x76,0x61,0x72,0x20,0x72,0x3d,0x7b,0x65,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x3a,0x5c,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x6e,0x61,0x6d,0x65,0x3a,0x65,0x2e,0x74,0x79,0x70,0x65,0x2c,0x74,0x61,0x72,0x67,0x65,0x74,0x3a,0x65,0x2e,0x74,0x61,0x72,0x67,0x65,0x74,0x2c,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x3a,0x65,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x3a,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2b,0x74,0x7d,0x3b,0x69,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x65,0x28,0x72,0x29,0x7d,0x29,0x29,0x2c,0x69,0x3d,0x5b,0x5d,0x7d,0x7d,0x2c,0x53,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x69,0x66,0x28,0x65,0x2e,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x28,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3e,0x31,0x65,0x31,0x32,0x3f,0x6e,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x3a,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x29,0x2d,0x65,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x3b,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x3d,0x3d,0x65,0x2e,0x74,0x79,0x70,0x65,0x3f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x67,0x28,0x65,0x2c,0x74,0x29,0x2c,0x72,0x28,0x29,0x7d,0x2c,0x69,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x28,0x29,0x7d,0x2c,0x72,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x5c,0x22,0x2c,0x6e,0x2c,0x54,0x29,0x2c,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x2c,0x69,0x2c,0x54,0x29,0x7d,0x3b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x75,0x70,0x5c,0x22,0x2c,0x6e,0x2c,0x54,0x29,0x2c,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5c,0x22,0x2c,0x69,0x2c,0x54,0x29,0x7d,0x28,0x74,0x2c,0x65,0x29,0x3a,0x67,0x28,0x74,0x2c,0x65,0x29,0x7d,0x7d,0x2c,0x77,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x5b,0x5c,0x22,0x6d,0x6f,0x75,0x73,0x65,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x74,0x6f,0x75,0x63,0x68,0x73,0x74,0x61,0x72,0x74,0x5c,0x22,0x2c,0x5c,0x22,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x28,0x74,0x2c,0x53,0x2c,0x54,0x29,0x7d,0x29,0x29,0x7d,0x2c,0x4c,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x2c,0x66,0x29,0x7b,0x76,0x61,0x72,0x20,0x73,0x2c,0x6d,0x3d,0x76,0x28,0x29,0x2c,0x64,0x3d,0x72,0x28,0x5c,0x22,0x46,0x49,0x44,0x5c,0x22,0x29,0x2c,0x70,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3c,0x6d,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x64,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x65,0x2e,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x2d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x2c,0x64,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x73,0x28,0x21,0x30,0x29,0x29,0x7d,0x2c,0x6c,0x3d,0x61,0x28,0x5c,0x22,0x66,0x69,0x72,0x73,0x74,0x2d,0x69,0x6e,0x70,0x75,0x74,0x5c,0x22,0x2c,0x70,0x29,0x3b,0x73,0x3d,0x63,0x28,0x6e,0x2c,0x64,0x2c,0x66,0x29,0x2c,0x6c,0x26,0x26,0x6f,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x6c,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x70,0x29,0x2c,0x6c,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x7d,0x29,0x2c,0x21,0x30,0x29,0x2c,0x6c,0x26,0x26,0x75,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x61,0x3b,0x64,0x3d,0x72,0x28,0x5c,0x22,0x46,0x49,0x44,0x5c,0x22,0x29,0x2c,0x73,0x3d,0x63,0x28,0x6e,0x2c,0x64,0x2c,0x66,0x29,0x2c,0x69,0x3d,0x5b,0x5d,0x2c,0x74,0x3d,0x2d,0x31,0x2c,0x65,0x3d,0x6e,0x75,0x6c,0x6c,0x2c,0x77,0x28,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x29,0x2c,0x61,0x3d,0x70,0x2c,0x69,0x2e,0x70,0x75,0x73,0x68,0x28,0x61,0x29,0x2c,0x45,0x28,0x29,0x7d,0x29,0x29,0x7d,0x2c,0x62,0x3d,0x7b,0x7d,0x2c,0x46,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x2c,0x74,0x29,0x7b,0x76,0x61,0x72,0x20,0x6e,0x2c,0x69,0x3d,0x76,0x28,0x29,0x2c,0x66,0x3d,0x72,0x28,0x5c,0x22,0x4c,0x43,0x50,0x5c,0x22,0x29,0x2c,0x73,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x65,0x2e,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3b,0x74,0x3c,0x69,0x2e,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x26,0x26,0x28,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x74,0x2c,0x66,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x65,0x29,0x2c,0x6e,0x28,0x29,0x29,0x7d,0x2c,0x6d,0x3d,0x61,0x28,0x5c,0x22,0x6c,0x61,0x72,0x67,0x65,0x73,0x74,0x2d,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x66,0x75,0x6c,0x2d,0x70,0x61,0x69,0x6e,0x74,0x5c,0x22,0x2c,0x73,0x29,0x3b,0x69,0x66,0x28,0x6d,0x29,0x7b,0x6e,0x3d,0x63,0x28,0x65,0x2c,0x66,0x2c,0x74,0x29,0x3b,0x76,0x61,0x72,0x20,0x64,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x62,0x5b,0x66,0x2e,0x69,0x64,0x5d,0x7c,0x7c,0x28,0x6d,0x2e,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x28,0x29,0x2e,0x6d,0x61,0x70,0x28,0x73,0x29,0x2c,0x6d,0x2e,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x29,0x2c,0x62,0x5b,0x66,0x2e,0x69,0x64,0x5d,0x3d,0x21,0x30,0x2c,0x6e,0x28,0x21,0x30,0x29,0x29,0x7d,0x3b,0x5b,0x5c,0x22,0x6b,0x65,0x79,0x64,0x6f,0x77,0x6e,0x5c,0x22,0x2c,0x5c,0x22,0x63,0x6c,0x69,0x63,0x6b,0x5c,0x22,0x5d,0x2e,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x65,0x2c,0x64,0x2c,0x7b,0x6f,0x6e,0x63,0x65,0x3a,0x21,0x30,0x2c,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x3a,0x21,0x30,0x7d,0x29,0x7d,0x29,0x29,0x2c,0x6f,0x28,0x64,0x2c,0x21,0x30,0x29,0x2c,0x75,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x69,0x29,0x7b,0x66,0x3d,0x72,0x28,0x5c,0x22,0x4c,0x43,0x50,0x5c,0x22,0x29,0x2c,0x6e,0x3d,0x63,0x28,0x65,0x2c,0x66,0x2c,0x74,0x29,0x2c,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x28,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x66,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x2d,0x69,0x2e,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x2c,0x62,0x5b,0x66,0x2e,0x69,0x64,0x5d,0x3d,0x21,0x30,0x2c,0x6e,0x28,0x21,0x30,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x29,0x29,0x7d,0x7d,0x2c,0x50,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x29,0x7b,0x76,0x61,0x72,0x20,0x74,0x2c,0x6e,0x3d,0x72,0x28,0x5c,0x22,0x54,0x54,0x46,0x42,0x5c,0x22,0x29,0x3b,0x74,0x3d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x74,0x72,0x79,0x7b,0x76,0x61,0x72,0x20,0x74,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x54,0x79,0x70,0x65,0x28,0x5c,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x29,0x5b,0x30,0x5d,0x7c,0x7c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x76,0x61,0x72,0x20,0x65,0x3d,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x74,0x69,0x6d,0x69,0x6e,0x67,0x2c,0x74,0x3d,0x7b,0x65,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x3a,0x5c,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x5c,0x22,0x2c,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x3a,0x30,0x7d,0x3b,0x66,0x6f,0x72,0x28,0x76,0x61,0x72,0x20,0x6e,0x20,0x69,0x6e,0x20,0x65,0x29,0x5c,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x5c,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x5c,0x22,0x74,0x6f,0x4a,0x53,0x4f,0x4e,0x5c,0x22,0x21,0x3d,0x3d,0x6e,0x26,0x26,0x28,0x74,0x5b,0x6e,0x5d,0x3d,0x4d,0x61,0x74,0x68,0x2e,0x6d,0x61,0x78,0x28,0x65,0x5b,0x6e,0x5d,0x2d,0x65,0x2e,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x2c,0x30,0x29,0x29,0x3b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x7d,0x28,0x29,0x3b,0x69,0x66,0x28,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x6e,0x2e,0x64,0x65,0x6c,0x74,0x61,0x3d,0x74,0x2e,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x53,0x74,0x61,0x72,0x74,0x2c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3c,0x30,0x7c,0x7c,0x6e,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3e,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x2e,0x6e,0x6f,0x77,0x28,0x29,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x6e,0x2e,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x3d,0x5b,0x74,0x5d,0x2c,0x65,0x28,0x6e,0x29,0x7d,0x63,0x61,0x74,0x63,0x68,0x28,0x65,0x29,0x7b,0x7d,0x7d,0x2c,0x5c,0x22,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x5c,0x22,0x3d,0x3d,0x3d,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x72,0x65,0x61,0x64,0x79,0x53,0x74,0x61,0x74,0x65,0x3f,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x74,0x2c,0x30,0x29,0x3a,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x5c,0x22,0x6c,0x6f,0x61,0x64,0x5c,0x22,0x2c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x7b,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x74,0x2c,0x30,0x29,0x7d,0x29,0x29,0x7d,0x3b,0x65,0x78,0x70,0x6f,0x72,0x74,0x7b,0x68,0x20,0x61,0x73,0x20,0x67,0x65,0x74,0x43,0x4c,0x53,0x2c,0x64,0x20,0x61,0x73,0x20,0x67,0x65,0x74,0x46,0x43,0x50,0x2c,0x4c,0x20,0x61,0x73,0x20,0x67,0x65,0x74,0x46,0x49,0x44,0x2c,0x46,0x20,0x61,0x73,0x20,0x67,0x65,0x74,0x4c,0x43,0x50,0x2c,0x50,0x20,0x61,0x73,0x20,0x67,0x65,0x74,0x54,0x54,0x46,0x42,0x7d,0x3b,0x5c,0x6e,0x22,0x5d,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x73,0x22,0x3a,0x5b,0x22,0x65,0x22,0x2c,0x22,0x74,0x22,0x2c,0x22,0x6e,0x22,0x2c,0x22,0x69,0x22,0x2c,0x22,0x72,0x22,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x22,0x64,0x65,0x6c,0x74,0x61,0x22,0x2c,0x22,0x65,0x6e,0x74,0x72,0x69,0x65,0x73,0x22,0x2c,0x22,0x69,0x64,0x22,0x2c,0x22,0x63,0x6f,0x6e,0x63,0x61,0x74,0x22,0x2c,0x22,0x44,0x61,0x74,0x65,0x22,0x2c,0x22,0x6e,0x6f,0x77,0x22,0x2c,0x22,0x4d,0x61,0x74,0x68,0x22,0x2c,0x22,0x66,0x6c,0x6f,0x6f,0x72,0x22,0x2c,0x22,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x22,0x2c,0x22,0x61,0x22,0x2c,0x22,0x50,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x4f,0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x22,0x2c,0x22,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x45,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x73,0x22,0x2c,0x22,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73,0x22,0x2c,0x22,0x73,0x65,0x6c,0x66,0x22,0x2c,0x22,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x22,0x2c,0x22,0x6d,0x61,0x70,0x22,0x2c,0x22,0x6f,0x62,0x73,0x65,0x72,0x76,0x65,0x22,0x2c,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x22,0x62,0x75,0x66,0x66,0x65,0x72,0x65,0x64,0x22,0x2c,0x22,0x6f,0x22,0x2c,0x22,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x22,0x2c,0x22,0x76,0x69,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x53,0x74,0x61,0x74,0x65,0x22,0x2c,0x22,0x72,0x65,0x6d,0x6f,0x76,0x65,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x22,0x2c,0x22,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x22,0x2c,0x22,0x75,0x22,0x2c,0x22,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x64,0x22,0x2c,0x22,0x63,0x22,0x2c,0x22,0x66,0x22,0x2c,0x22,0x73,0x22,0x2c,0x22,0x6d,0x22,0x2c,0x22,0x74,0x69,0x6d,0x65,0x53,0x74,0x61,0x6d,0x70,0x22,0x2c,0x22,0x76,0x22,0x2c,0x22,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x22,0x2c,0x22,0x66,0x69,0x72,0x73,0x74,0x48,0x69,0x64,0x64,0x65,0x6e,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x64,0x22,0x2c,0x22,0x64,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x22,0x2c,0x22,0x73,0x74,0x61,0x72,0x74,0x54,0x69,0x6d,0x65,0x22,0x2c,0x22,0x70,0x75,0x73,0x68,0x22,0x2c,0x22,0x77,0x69,0x6e,0x64,0x6f,0x77,0x22,0x2c,0x22,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65,0x22,0x2c,0x22,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x4e,0x61,0x6d,0x65,0x22,0x2c,0x22,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x41,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x46,0x72,0x61,0x6d,0x65,0x22,0x2c,0x22,0x70,0x22,0x2c,0x22,0x6c,0x22,0x2c,0x22,0x68,0x22,0x2c,0x22,0x68,0x61,0x64,0x52,0x65,0x63,0x65,0x6e,0x74,0x49,0x6e,0x70,0x75,0x74,0x22,0x2c,0x22,0x6c,0x65,0x6e,0x67,0x74,0x68,0x22,0x2c,0x22,0x74,0x61,0x6b,0x65,0x52,0x65,0x63,0x6f,0x72,0x64,0x73,0x22,0x2c,0x22,0x54,0x22,0x2c,0x22,0x70,0x61,0x73,0x73,0x69,0x76,0x65,0x22,0x2c,0x22,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x22,0x2c,0x22,0x79,0x22,0x2c,0x22,0x67,0x22,0x2c,0x22,0x77,0x22,0x2c,0x22,0x45,0x22,0x2c,0x22,0x65,0x6e,0x74,0x72,0x79,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x74,0x61,0x72,0x67,0x65,0x74,0x22,0x2c,0x22,0x63,0x61,0x6e,0x63,0x65,0x6c,0x61,0x62,0x6c,0x65,0x22,0x2c,0x22,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x69,0x6e,0x67,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x66,0x6f,0x72,0x45,0x61,0x63,0x68,0x22,0x2c,0x22,0x53,0x22,0x2c,0x22,0x4c,0x22,0x2c,0x22,0x62,0x22,0x2c,0x22,0x46,0x22,0x2c,0x22,0x6f,0x6e,0x63,0x65,0x22,0x2c,0x22,0x50,0x22,0x2c,0x22,0x67,0x65,0x74,0x45,0x6e,0x74,0x72,0x69,0x65,0x73,0x42,0x79,0x54,0x79,0x70,0x65,0x22,0x2c,0x22,0x74,0x69,0x6d,0x69,0x6e,0x67,0x22,0x2c,0x22,0x6d,0x61,0x78,0x22,0x2c,0x22,0x6e,0x61,0x76,0x69,0x67,0x61,0x74,0x69,0x6f,0x6e,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x53,0x74,0x61,0x72,0x74,0x22,0x2c,0x22,0x72,0x65,0x61,0x64,0x79,0x53,0x74,0x61,0x74,0x65,0x22,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x52,0x6f,0x6f,0x74,0x22,0x3a,0x22,0x22,0x7d};
+
+static const unsigned char FILE_12[] = {0x62,0x6f,0x64,0x79,0x7b,0x2d,0x77,0x65,0x62,0x6b,0x69,0x74,0x2d,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x69,0x6e,0x67,0x3a,0x61,0x6e,0x74,0x69,0x61,0x6c,0x69,0x61,0x73,0x65,0x64,0x3b,0x2d,0x6d,0x6f,0x7a,0x2d,0x6f,0x73,0x78,0x2d,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x69,0x6e,0x67,0x3a,0x67,0x72,0x61,0x79,0x73,0x63,0x61,0x6c,0x65,0x3b,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x23,0x32,0x61,0x32,0x63,0x32,0x65,0x3b,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x23,0x35,0x65,0x64,0x32,0x66,0x32,0x3b,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x2d,0x61,0x70,0x70,0x6c,0x65,0x2d,0x73,0x79,0x73,0x74,0x65,0x6d,0x2c,0x42,0x6c,0x69,0x6e,0x6b,0x4d,0x61,0x63,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6f,0x6e,0x74,0x2c,0x53,0x65,0x67,0x6f,0x65,0x20,0x55,0x49,0x2c,0x52,0x6f,0x62,0x6f,0x74,0x6f,0x2c,0x4f,0x78,0x79,0x67,0x65,0x6e,0x2c,0x55,0x62,0x75,0x6e,0x74,0x75,0x2c,0x43,0x61,0x6e,0x74,0x61,0x72,0x65,0x6c,0x6c,0x2c,0x46,0x69,0x72,0x61,0x20,0x53,0x61,0x6e,0x73,0x2c,0x44,0x72,0x6f,0x69,0x64,0x20,0x53,0x61,0x6e,0x73,0x2c,0x48,0x65,0x6c,0x76,0x65,0x74,0x69,0x63,0x61,0x20,0x4e,0x65,0x75,0x65,0x2c,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x30,0x7d,0x63,0x6f,0x64,0x65,0x7b,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x73,0x6f,0x75,0x72,0x63,0x65,0x2d,0x63,0x6f,0x64,0x65,0x2d,0x70,0x72,0x6f,0x2c,0x4d,0x65,0x6e,0x6c,0x6f,0x2c,0x4d,0x6f,0x6e,0x61,0x63,0x6f,0x2c,0x43,0x6f,0x6e,0x73,0x6f,0x6c,0x61,0x73,0x2c,0x43,0x6f,0x75,0x72,0x69,0x65,0x72,0x20,0x4e,0x65,0x77,0x2c,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x7d,0x0a,0x2f,0x2a,0x23,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x4d,0x61,0x70,0x70,0x69,0x6e,0x67,0x55,0x52,0x4c,0x3d,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x2e,0x6d,0x61,0x70,0x2a,0x2f};
+
+static const unsigned char FILE_13[] = {0x7b,0x22,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x22,0x3a,0x33,0x2c,0x22,0x66,0x69,0x6c,0x65,0x22,0x3a,0x22,0x73,0x74,0x61,0x74,0x69,0x63,0x2f,0x63,0x73,0x73,0x2f,0x6d,0x61,0x69,0x6e,0x2e,0x39,0x66,0x63,0x62,0x32,0x64,0x36,0x38,0x2e,0x63,0x73,0x73,0x22,0x2c,0x22,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x73,0x22,0x3a,0x22,0x41,0x41,0x41,0x41,0x2c,0x4b,0x41,0x4b,0x45,0x2c,0x6b,0x43,0x41,0x41,0x6d,0x43,0x2c,0x43,0x41,0x43,0x6e,0x43,0x2c,0x69,0x43,0x41,0x41,0x6b,0x43,0x2c,0x43,0x41,0x47,0x6c,0x43,0x2c,0x77,0x42,0x41,0x41,0x79,0x42,0x2c,0x43,0x41,0x44,0x7a,0x42,0x2c,0x61,0x41,0x41,0x63,0x2c,0x43,0x41,0x4e,0x64,0x2c,0x6d,0x49,0x41,0x45,0x59,0x2c,0x43,0x41,0x48,0x5a,0x2c,0x51,0x41,0x53,0x46,0x2c,0x43,0x41,0x45,0x41,0x2c,0x4b,0x41,0x43,0x45,0x2c,0x75,0x45,0x41,0x45,0x46,0x22,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x22,0x3a,0x5b,0x22,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x22,0x3a,0x5b,0x22,0x62,0x6f,0x64,0x79,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x20,0x30,0x3b,0x5c,0x6e,0x20,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x2d,0x61,0x70,0x70,0x6c,0x65,0x2d,0x73,0x79,0x73,0x74,0x65,0x6d,0x2c,0x20,0x42,0x6c,0x69,0x6e,0x6b,0x4d,0x61,0x63,0x53,0x79,0x73,0x74,0x65,0x6d,0x46,0x6f,0x6e,0x74,0x2c,0x20,0x27,0x53,0x65,0x67,0x6f,0x65,0x20,0x55,0x49,0x27,0x2c,0x20,0x27,0x52,0x6f,0x62,0x6f,0x74,0x6f,0x27,0x2c,0x20,0x27,0x4f,0x78,0x79,0x67,0x65,0x6e,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x27,0x55,0x62,0x75,0x6e,0x74,0x75,0x27,0x2c,0x20,0x27,0x43,0x61,0x6e,0x74,0x61,0x72,0x65,0x6c,0x6c,0x27,0x2c,0x20,0x27,0x46,0x69,0x72,0x61,0x20,0x53,0x61,0x6e,0x73,0x27,0x2c,0x20,0x27,0x44,0x72,0x6f,0x69,0x64,0x20,0x53,0x61,0x6e,0x73,0x27,0x2c,0x20,0x27,0x48,0x65,0x6c,0x76,0x65,0x74,0x69,0x63,0x61,0x20,0x4e,0x65,0x75,0x65,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x5c,0x6e,0x20,0x20,0x2d,0x77,0x65,0x62,0x6b,0x69,0x74,0x2d,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x69,0x6e,0x67,0x3a,0x20,0x61,0x6e,0x74,0x69,0x61,0x6c,0x69,0x61,0x73,0x65,0x64,0x3b,0x5c,0x6e,0x20,0x20,0x2d,0x6d,0x6f,0x7a,0x2d,0x6f,0x73,0x78,0x2d,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x69,0x6e,0x67,0x3a,0x20,0x67,0x72,0x61,0x79,0x73,0x63,0x61,0x6c,0x65,0x3b,0x5c,0x6e,0x5c,0x6e,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x35,0x65,0x64,0x32,0x66,0x32,0x3b,0x5c,0x6e,0x20,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x32,0x61,0x32,0x63,0x32,0x65,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x5c,0x6e,0x63,0x6f,0x64,0x65,0x20,0x7b,0x5c,0x6e,0x20,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x2d,0x63,0x6f,0x64,0x65,0x2d,0x70,0x72,0x6f,0x2c,0x20,0x4d,0x65,0x6e,0x6c,0x6f,0x2c,0x20,0x4d,0x6f,0x6e,0x61,0x63,0x6f,0x2c,0x20,0x43,0x6f,0x6e,0x73,0x6f,0x6c,0x61,0x73,0x2c,0x20,0x27,0x43,0x6f,0x75,0x72,0x69,0x65,0x72,0x20,0x4e,0x65,0x77,0x27,0x2c,0x5c,0x6e,0x20,0x20,0x20,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x5c,0x6e,0x7d,0x5c,0x6e,0x22,0x5d,0x2c,0x22,0x6e,0x61,0x6d,0x65,0x73,0x22,0x3a,0x5b,0x5d,0x2c,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x52,0x6f,0x6f,0x74,0x22,0x3a,0x22,0x22,0x7d};
+
+
+static const VirtualFile virtual_files[] = {
+ {
+ "/favicon.ico",
+ FILE_0,
+ 3870
+ },
+ {
+ "/logo192.png",
+ FILE_1,
+ 5347
+ },
+ {
+ "/logo512.png",
+ FILE_2,
+ 9664
+ },
+ {
+ "/manifest.json",
+ FILE_3,
+ 492
+ },
+ {
+ "/robots.txt",
+ FILE_4,
+ 67
+ },
+ {
+ "/index.html",
+ FILE_5,
+ 678
+ },
+ {
+ "/asset-manifest.json",
+ FILE_6,
+ 517
+ },
+ {
+ "/static/js/main.c5c7da37.js",
+ FILE_7,
+ 144743
+ },
+ {
+ "/static/js/main.c5c7da37.js.LICENSE.txt",
+ FILE_8,
+ 971
+ },
+ {
+ "/static/js/main.c5c7da37.js.map",
+ FILE_9,
+ 370888
+ },
+ {
+ "/static/js/453.7bb3dcb3.chunk.js",
+ FILE_10,
+ 4538
+ },
+ {
+ "/static/js/453.7bb3dcb3.chunk.js.map",
+ FILE_11,
+ 10597
+ },
+ {
+ "/static/css/main.9fcb2d68.css",
+ FILE_12,
+ 376
+ },
+ {
+ "/static/css/main.9fcb2d68.css.map",
+ FILE_13,
+ 658
+ },
+};
+
+static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);
+
+bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
+ for (int i = 0; i < virtual_files_count; ++i) {
+ if (strcmp(virtual_files[i].path, path) == 0) {
+ *file = virtual_files[i].data;
+ *length = virtual_files[i].length;
+ return true;
+ }
+ }
+ return false;
+}
+
+const void* vfs(const char* path, int* length) {
+ const unsigned char* file_data;
+ int file_length;
+
+ if (virtual_file_system(path, &file_data, &file_length)) {
+ const char* content_type = webui_get_mime_type(path);
+ const char* http_header_template = "HTTP/1.1 200 OK\r\n"
+ "Content-Type: %s\r\n"
+ "Content-Length: %d\r\n"
+ "Cache-Control: no-cache\r\n\r\n";
+ int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
+ *length = header_length + file_length;
+ unsigned char* response = (unsigned char*) webui_malloc(*length);
+ snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
+ memcpy(response + header_length, file_data, file_length);
+ return response;
+ }
+ return NULL;
+}
+
+#endif // VIRTUAL_FILE_SYSTEM_H
diff --git a/v2/webui/examples/C/react/vfs.py b/v2/webui/examples/C/react/vfs.py
new file mode 100644
index 0000000..57e4dfd
--- /dev/null
+++ b/v2/webui/examples/C/react/vfs.py
@@ -0,0 +1,99 @@
+# WebUI Library
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# WebUI Virtual File System Generator
+# v2.0
+
+import os
+import sys
+
+def generate_vfs_header(directory, output_header):
+ files = []
+
+ for root, _, filenames in os.walk(directory):
+ for filename in filenames:
+ filepath = os.path.join(root, filename)
+ relative_path = os.path.relpath(filepath, directory)
+ # Ensure path starts with a slash
+ relative_path = '/' + relative_path.replace('\\', '/')
+ files.append((relative_path, filepath))
+
+ with open(output_header, 'w') as header:
+ header.write('#ifndef VIRTUAL_FILE_SYSTEM_H\n')
+ header.write('#define VIRTUAL_FILE_SYSTEM_H\n\n')
+
+ header.write('typedef struct {\n')
+ header.write(' const char *path;\n')
+ header.write(' const unsigned char *data;\n')
+ header.write(' int length;\n')
+ header.write('} VirtualFile;\n\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(f'static const unsigned char FILE_{i}[] = {{')
+ header.write(','.join(f'0x{byte:02x}' for byte in data))
+ header.write('};\n\n')
+
+ header.write('\nstatic const VirtualFile virtual_files[] = {\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(' {\n')
+ header.write(f' "{relative_path}",\n')
+ header.write(f' FILE_{i},\n')
+ header.write(f' {len(data)}\n')
+ header.write(' },\n')
+
+ header.write('};\n\n')
+
+ header.write('static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);\n\n')
+
+ header.write('bool virtual_file_system(const char* path, const unsigned char** file, int* length) {\n')
+ header.write(' for (int i = 0; i < virtual_files_count; ++i) {\n')
+ header.write(' if (strcmp(virtual_files[i].path, path) == 0) {\n')
+ header.write(' *file = virtual_files[i].data;\n')
+ header.write(' *length = virtual_files[i].length;\n')
+ header.write(' return true;\n')
+ header.write(' }\n')
+ header.write(' }\n')
+ header.write(' return false;\n')
+ header.write('}\n\n')
+
+ header.write('const void* vfs(const char* path, int* length) {\n')
+ header.write(' const unsigned char* file_data;\n')
+ header.write(' int file_length;\n\n')
+
+ header.write(' if (virtual_file_system(path, &file_data, &file_length)) {\n')
+ header.write(' const char* content_type = webui_get_mime_type(path);\n')
+ header.write(' const char* http_header_template = "HTTP/1.1 200 OK\\r\\n"\n')
+ header.write(' "Content-Type: %s\\r\\n"\n')
+ header.write(' "Content-Length: %d\\r\\n"\n')
+ header.write(' "Cache-Control: no-cache\\r\\n\\r\\n";\n')
+ header.write(' int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);\n')
+ header.write(' *length = header_length + file_length;\n')
+ header.write(' unsigned char* response = (unsigned char*) webui_malloc(*length);\n')
+ header.write(' snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);\n')
+ header.write(' memcpy(response + header_length, file_data, file_length);\n')
+ header.write(' return response;\n')
+ header.write(' }\n')
+ header.write(' return NULL;\n')
+ header.write('}\n\n')
+
+ header.write('#endif // VIRTUAL_FILE_SYSTEM_H\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print(f'Usage: {sys.argv[0]} ')
+ sys.exit(1)
+
+ directory = sys.argv[1]
+ output_header = sys.argv[2]
+ generate_vfs_header(directory, output_header)
+ print(f'Generated {output_header} from {directory}')
diff --git a/v2/webui/examples/C/react/webui-react-example/.gitignore b/v2/webui/examples/C/react/webui-react-example/.gitignore
new file mode 100644
index 0000000..4d29575
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/.gitignore
@@ -0,0 +1,23 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/v2/webui/examples/C/react/webui-react-example/package-lock.json b/v2/webui/examples/C/react/webui-react-example/package-lock.json
new file mode 100644
index 0000000..2458e83
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/package-lock.json
@@ -0,0 +1,19039 @@
+{
+ "name": "webui-react-example",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "webui-react-example",
+ "version": "0.1.0",
+ "dependencies": {
+ "@testing-library/jest-dom": "^5.17.0",
+ "@testing-library/react": "^13.4.0",
+ "@testing-library/user-event": "^13.5.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-scripts": "5.0.1",
+ "web-vitals": "^2.1.4"
+ }
+ },
+ "node_modules/@adobe/css-tools": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz",
+ "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==",
+ "license": "MIT"
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
+ "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/eslint-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz",
+ "integrity": "sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+ "eslint-visitor-keys": "^2.1.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.11.0",
+ "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
+ "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.26.2",
+ "@babel/types": "^7.26.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
+ "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+ "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "regexpu-core": "^6.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+ "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-wrap-function": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
+ "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
+ "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+ "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
+ "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.26.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
+ "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
+ "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
+ "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
+ "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-class-properties": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz",
+ "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-decorators": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-numeric-separator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-methods": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+ "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz",
+ "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz",
+ "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
+ "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+ "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
+ "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
+ "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+ "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+ "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
+ "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+ "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+ "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/template": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+ "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
+ "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
+ "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
+ "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
+ "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
+ "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz",
+ "integrity": "sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-flow": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
+ "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+ "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
+ "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+ "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+ "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
+ "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
+ "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
+ "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-simple-access": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
+ "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
+ "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
+ "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
+ "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+ "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+ "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
+ "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+ "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+ "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+ "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+ "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
+ "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-constant-elements": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz",
+ "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
+ "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
+ "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
+ "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+ "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
+ "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
+ "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
+ "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+ "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+ "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+ "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
+ "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
+ "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz",
+ "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
+ "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
+ "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+ "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
+ "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
+ "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.26.0",
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.9",
+ "@babel/plugin-transform-async-to-generator": "^7.25.9",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
+ "@babel/plugin-transform-block-scoping": "^7.25.9",
+ "@babel/plugin-transform-class-properties": "^7.25.9",
+ "@babel/plugin-transform-class-static-block": "^7.26.0",
+ "@babel/plugin-transform-classes": "^7.25.9",
+ "@babel/plugin-transform-computed-properties": "^7.25.9",
+ "@babel/plugin-transform-destructuring": "^7.25.9",
+ "@babel/plugin-transform-dotall-regex": "^7.25.9",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.9",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-dynamic-import": "^7.25.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.9",
+ "@babel/plugin-transform-for-of": "^7.25.9",
+ "@babel/plugin-transform-function-name": "^7.25.9",
+ "@babel/plugin-transform-json-strings": "^7.25.9",
+ "@babel/plugin-transform-literals": "^7.25.9",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.9",
+ "@babel/plugin-transform-modules-amd": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.9",
+ "@babel/plugin-transform-modules-umd": "^7.25.9",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-new-target": "^7.25.9",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
+ "@babel/plugin-transform-numeric-separator": "^7.25.9",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.9",
+ "@babel/plugin-transform-object-super": "^7.25.9",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9",
+ "@babel/plugin-transform-private-methods": "^7.25.9",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.9",
+ "@babel/plugin-transform-property-literals": "^7.25.9",
+ "@babel/plugin-transform-regenerator": "^7.25.9",
+ "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
+ "@babel/plugin-transform-reserved-words": "^7.25.9",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.9",
+ "@babel/plugin-transform-spread": "^7.25.9",
+ "@babel/plugin-transform-sticky-regex": "^7.25.9",
+ "@babel/plugin-transform-template-literals": "^7.25.9",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.9",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.9",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
+ "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-transform-react-display-name": "^7.25.9",
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+ "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz",
+ "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-typescript": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
+ "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/generator": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.25.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "license": "MIT"
+ },
+ "node_modules/@csstools/normalize.css": {
+ "version": "12.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz",
+ "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/@csstools/postcss-cascade-layers": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz",
+ "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^2.0.2",
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-color-function": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz",
+ "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-font-format-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz",
+ "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-hwb-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz",
+ "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-ic-unit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz",
+ "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz",
+ "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^2.0.0",
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-nested-calc": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz",
+ "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-normalize-display-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz",
+ "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-oklab-function": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz",
+ "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-progressive-custom-properties": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz",
+ "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3"
+ }
+ },
+ "node_modules/@csstools/postcss-stepped-value-functions": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz",
+ "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-text-decoration-shorthand": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz",
+ "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-trigonometric-functions": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz",
+ "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/postcss-unset-value": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
+ "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==",
+ "license": "CC0-1.0",
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz",
+ "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==",
+ "license": "CC0-1.0",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "license": "ISC",
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/console/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/environment/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/environment/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+ "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+ "license": "MIT",
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/fake-timers/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "license": "MIT",
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/source-map/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "license": "MIT"
+ },
+ "node_modules/@jest/transform/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@leichtgewicht/ip-codec": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
+ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
+ "license": "MIT"
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+ "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+ "license": "MIT",
+ "dependencies": {
+ "eslint-scope": "5.1.1"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pmmmwh/react-refresh-webpack-plugin": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz",
+ "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-html": "^0.0.9",
+ "core-js-pure": "^3.23.3",
+ "error-stack-parser": "^2.0.6",
+ "html-entities": "^2.1.0",
+ "loader-utils": "^2.0.4",
+ "schema-utils": "^4.2.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">= 10.13"
+ },
+ "peerDependencies": {
+ "@types/webpack": "4.x || 5.x",
+ "react-refresh": ">=0.10.0 <1.0.0",
+ "sockjs-client": "^1.4.0",
+ "type-fest": ">=0.17.0 <5.0.0",
+ "webpack": ">=4.43.0 <6.0.0",
+ "webpack-dev-server": "3.x || 4.x || 5.x",
+ "webpack-hot-middleware": "2.x",
+ "webpack-plugin-serve": "0.x || 1.x"
+ },
+ "peerDependenciesMeta": {
+ "@types/webpack": {
+ "optional": true
+ },
+ "sockjs-client": {
+ "optional": true
+ },
+ "type-fest": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ },
+ "webpack-hot-middleware": {
+ "optional": true
+ },
+ "webpack-plugin-serve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-babel": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
+ "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@types/babel__core": "^7.1.9",
+ "rollup": "^1.20.0||^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/babel__core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "11.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
+ "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "@types/resolve": "1.17.1",
+ "builtin-modules": "^3.1.0",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/@rollup/plugin-replace": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
+ "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "magic-string": "^0.25.7"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0 || ^2.0.0"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "license": "MIT"
+ },
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "license": "MIT"
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
+ "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
+ "license": "MIT"
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "license": "MIT"
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/@surma/rollup-plugin-off-main-thread": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
+ "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ejs": "^3.1.6",
+ "json5": "^2.2.0",
+ "magic-string": "^0.25.0",
+ "string.prototype.matchall": "^4.0.6"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz",
+ "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz",
+ "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz",
+ "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz",
+ "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz",
+ "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz",
+ "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz",
+ "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-svg-component": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz",
+ "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/babel-preset": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz",
+ "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==",
+ "license": "MIT",
+ "dependencies": {
+ "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0",
+ "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0",
+ "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1",
+ "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1",
+ "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0",
+ "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0",
+ "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0",
+ "@svgr/babel-plugin-transform-svg-component": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/core": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz",
+ "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@svgr/plugin-jsx": "^5.5.0",
+ "camelcase": "^6.2.0",
+ "cosmiconfig": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/hast-util-to-babel-ast": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz",
+ "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.12.6"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/plugin-jsx": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz",
+ "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@svgr/babel-preset": "^5.5.0",
+ "@svgr/hast-util-to-babel-ast": "^5.5.0",
+ "svg-parser": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/plugin-svgo": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz",
+ "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cosmiconfig": "^7.0.0",
+ "deepmerge": "^4.2.2",
+ "svgo": "^1.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/webpack": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz",
+ "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/plugin-transform-react-constant-elements": "^7.12.1",
+ "@babel/preset-env": "^7.12.1",
+ "@babel/preset-react": "^7.12.5",
+ "@svgr/core": "^5.5.0",
+ "@svgr/plugin-jsx": "^5.5.0",
+ "@svgr/plugin-svgo": "^5.5.0",
+ "loader-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@testing-library/dom": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+ "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.3.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@testing-library/jest-dom": {
+ "version": "5.17.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz",
+ "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@adobe/css-tools": "^4.0.1",
+ "@babel/runtime": "^7.9.2",
+ "@types/testing-library__jest-dom": "^5.9.1",
+ "aria-query": "^5.0.0",
+ "chalk": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.5.6",
+ "lodash": "^4.17.15",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/react": {
+ "version": "13.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz",
+ "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@testing-library/dom": "^8.5.0",
+ "@types/react-dom": "^18.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@testing-library/react/node_modules/@testing-library/dom": {
+ "version": "8.20.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz",
+ "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.1.3",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@testing-library/react/node_modules/aria-query": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "deep-equal": "^2.0.5"
+ }
+ },
+ "node_modules/@testing-library/user-event": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
+ "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": ">=7.21.4"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/aria-query": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
+ "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/bonjour": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
+ "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect-history-api-fallback": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
+ "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.56.12",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz",
+ "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz",
+ "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/express/node_modules/@types/express-serve-static-core": {
+ "version": "4.19.6",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
+ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+ "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.15",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
+ "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "29.5.14",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz",
+ "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "expect": "^29.0.0",
+ "pretty-format": "^29.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@types/jest/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.9.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.1.tgz",
+ "integrity": "sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.8"
+ }
+ },
+ "node_modules/@types/node-forge": {
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
+ "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/q": {
+ "version": "1.5.8",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz",
+ "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.17",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz",
+ "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.12",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
+ "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/resolve": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
+ "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-index": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
+ "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/express": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/sockjs": {
+ "version": "0.3.36",
+ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
+ "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/testing-library__jest-dom": {
+ "version": "5.14.9",
+ "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz",
+ "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/jest": "*"
+ }
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/ws": {
+ "version": "8.5.13",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz",
+ "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.33",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
+ "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
+ "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.4.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/type-utils": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/experimental-utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz",
+ "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
+ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
+ "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "license": "ISC"
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/adjust-sourcemap-loader": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
+ "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==",
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "regex-parser": "^2.2.11"
+ },
+ "engines": {
+ "node": ">=8.9"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-html": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz",
+ "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==",
+ "engines": [
+ "node >= 0.8.0"
+ ],
+ "license": "Apache-2.0",
+ "bin": {
+ "ansi-html": "bin/ansi-html"
+ }
+ },
+ "node_modules/ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
+ "engines": [
+ "node >= 0.8.0"
+ ],
+ "license": "Apache-2.0",
+ "bin": {
+ "ansi-html": "bin/ansi-html"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.reduce": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz",
+ "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "license": "MIT"
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "license": "MIT"
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.20",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz",
+ "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz",
+ "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==",
+ "license": "MIT",
+ "dependencies": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^2.0.4",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ },
+ "engines": {
+ "node": ">= 8.9"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "webpack": ">=2"
+ }
+ },
+ "node_modules/babel-loader/node_modules/schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-named-asset-import": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
+ "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@babel/core": "^7.1.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.12",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
+ "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.3",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
+ "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-react-remove-prop-types": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
+ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==",
+ "license": "MIT"
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
+ "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "license": "MIT",
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-react-app": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz",
+ "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.16.0",
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
+ "@babel/plugin-proposal-decorators": "^7.16.4",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.16.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.16.0",
+ "@babel/plugin-proposal-private-methods": "^7.16.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.16.0",
+ "@babel/plugin-transform-react-display-name": "^7.16.0",
+ "@babel/plugin-transform-runtime": "^7.16.4",
+ "@babel/preset-env": "^7.16.4",
+ "@babel/preset-react": "^7.16.0",
+ "@babel/preset-typescript": "^7.16.0",
+ "@babel/runtime": "^7.16.3",
+ "babel-plugin-macros": "^3.1.0",
+ "babel-plugin-transform-react-remove-prop-types": "^0.4.24"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "license": "MIT"
+ },
+ "node_modules/bfj": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz",
+ "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==",
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.7.2",
+ "check-types": "^11.2.3",
+ "hoopy": "^0.1.4",
+ "jsonpath": "^1.1.1",
+ "tryer": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/bonjour-service": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
+ "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "multicast-dns": "^7.2.5"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
+ },
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "license": "MIT",
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001680",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
+ "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/case-sensitive-paths-webpack-plugin": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
+ "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/check-types": {
+ "version": "11.2.3",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz",
+ "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==",
+ "license": "MIT"
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
+ "license": "MIT"
+ },
+ "node_modules/clean-css": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
+ "license": "MIT",
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 10.0"
+ }
+ },
+ "node_modules/clean-css/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/coa/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/coa/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/coa/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/coa/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/coa/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/coa/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/coa/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "license": "MIT"
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "license": "MIT"
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "license": "MIT"
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "license": "MIT"
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz",
+ "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/confusing-browser-globals": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
+ "license": "MIT"
+ },
+ "node_modules/connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
+ },
+ "node_modules/core-js": {
+ "version": "3.39.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
+ "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.39.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
+ "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.24.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-pure": {
+ "version": "3.39.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz",
+ "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/css-blank-pseudo": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz",
+ "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9"
+ },
+ "bin": {
+ "css-blank-pseudo": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-declaration-sorter": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
+ "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.9"
+ }
+ },
+ "node_modules/css-has-pseudo": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz",
+ "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9"
+ },
+ "bin": {
+ "css-has-pseudo": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-loader": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
+ "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
+ "license": "MIT",
+ "dependencies": {
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.33",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz",
+ "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "cssnano": "^5.0.6",
+ "jest-worker": "^27.0.2",
+ "postcss": "^8.3.5",
+ "schema-utils": "^4.0.0",
+ "serialize-javascript": "^6.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@parcel/css": {
+ "optional": true
+ },
+ "clean-css": {
+ "optional": true
+ },
+ "csso": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-prefers-color-scheme": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
+ "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==",
+ "license": "CC0-1.0",
+ "bin": {
+ "css-prefers-color-scheme": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "license": "MIT"
+ },
+ "node_modules/css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-tree/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+ "license": "MIT"
+ },
+ "node_modules/cssdb": {
+ "version": "7.11.2",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz",
+ "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ }
+ ],
+ "license": "CC0-1.0"
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "5.1.15",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz",
+ "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==",
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-preset-default": "^5.2.14",
+ "lilconfig": "^2.0.3",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "5.2.14",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz",
+ "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==",
+ "license": "MIT",
+ "dependencies": {
+ "css-declaration-sorter": "^6.3.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-calc": "^8.2.3",
+ "postcss-colormin": "^5.3.1",
+ "postcss-convert-values": "^5.1.3",
+ "postcss-discard-comments": "^5.1.2",
+ "postcss-discard-duplicates": "^5.1.0",
+ "postcss-discard-empty": "^5.1.1",
+ "postcss-discard-overridden": "^5.1.0",
+ "postcss-merge-longhand": "^5.1.7",
+ "postcss-merge-rules": "^5.1.4",
+ "postcss-minify-font-values": "^5.1.0",
+ "postcss-minify-gradients": "^5.1.1",
+ "postcss-minify-params": "^5.1.4",
+ "postcss-minify-selectors": "^5.2.1",
+ "postcss-normalize-charset": "^5.1.0",
+ "postcss-normalize-display-values": "^5.1.0",
+ "postcss-normalize-positions": "^5.1.1",
+ "postcss-normalize-repeat-style": "^5.1.1",
+ "postcss-normalize-string": "^5.1.0",
+ "postcss-normalize-timing-functions": "^5.1.0",
+ "postcss-normalize-unicode": "^5.1.1",
+ "postcss-normalize-url": "^5.1.0",
+ "postcss-normalize-whitespace": "^5.1.1",
+ "postcss-ordered-values": "^5.1.3",
+ "postcss-reduce-initial": "^5.1.2",
+ "postcss-reduce-transforms": "^5.1.0",
+ "postcss-svgo": "^5.1.0",
+ "postcss-unique-selectors": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-utils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
+ "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/csso/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "license": "MIT"
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "license": "MIT",
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "license": "MIT"
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "license": "MIT"
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "license": "MIT"
+ },
+ "node_modules/deep-equal": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.5",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.2",
+ "is-arguments": "^1.1.1",
+ "is-array-buffer": "^3.0.2",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "side-channel": "^1.0.4",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "license": "MIT"
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "license": "MIT"
+ },
+ "node_modules/detect-port-alt": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+ "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "address": "^1.0.1",
+ "debug": "^2.6.0"
+ },
+ "bin": {
+ "detect": "bin/detect-port",
+ "detect-port": "bin/detect-port"
+ },
+ "engines": {
+ "node": ">= 4.2.1"
+ }
+ },
+ "node_modules/detect-port-alt/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/detect-port-alt/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/dns-packet": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@leichtgewicht/ip-codec": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "license": "MIT"
+ },
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "license": "MIT",
+ "dependencies": {
+ "utila": "~0.4"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "license": "MIT",
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
+ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "license": "MIT"
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/ejs": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jake": "^10.8.5"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.63",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz",
+ "integrity": "sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==",
+ "license": "ISC"
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
+ "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.3",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "license": "MIT"
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "is-arguments": "^1.1.1",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.7",
+ "isarray": "^2.0.5",
+ "stop-iteration-iterator": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz",
+ "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.3",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "iterator.prototype": "^1.1.3",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "license": "MIT"
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-react-app": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz",
+ "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.16.0",
+ "@babel/eslint-parser": "^7.16.3",
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@typescript-eslint/eslint-plugin": "^5.5.0",
+ "@typescript-eslint/parser": "^5.5.0",
+ "babel-preset-react-app": "^10.0.1",
+ "confusing-browser-globals": "^1.0.11",
+ "eslint-plugin-flowtype": "^8.0.3",
+ "eslint-plugin-import": "^2.25.3",
+ "eslint-plugin-jest": "^25.3.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-react": "^7.27.1",
+ "eslint-plugin-react-hooks": "^4.3.0",
+ "eslint-plugin-testing-library": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-flowtype": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz",
+ "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "lodash": "^4.17.21",
+ "string-natural-compare": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@babel/plugin-syntax-flow": "^7.14.5",
+ "@babel/plugin-transform-react-jsx": "^7.14.9",
+ "eslint": "^8.1.0"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.31.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
+ "license": "MIT",
+ "dependencies": {
+ "@rtsao/scc": "^1.1.0",
+ "array-includes": "^3.1.8",
+ "array.prototype.findlastindex": "^1.2.5",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.12.0",
+ "hasown": "^2.0.2",
+ "is-core-module": "^2.15.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "object.groupby": "^1.0.3",
+ "object.values": "^1.2.0",
+ "semver": "^6.3.1",
+ "string.prototype.trimend": "^1.0.8",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jest": {
+ "version": "25.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz",
+ "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/experimental-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
+ },
+ "jest": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "aria-query": "^5.3.2",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.37.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz",
+ "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==",
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.1.0",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-testing-library": {
+ "version": "5.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz",
+ "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^5.58.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "eslint": "^7.5.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint": "^7.29.0 || ^8.4.1",
+ "jest-worker": "^28.0.2",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/eslint-webpack-plugin/node_modules/jest-worker": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz",
+ "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/eslint-webpack-plugin/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/eslint/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/eslint/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/expect-utils": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
+ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.10",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/file-loader": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+ "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/file-loader/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/filelist": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.0.1"
+ }
+ },
+ "node_modules/filelist/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/filelist/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/filesize": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
+ "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "license": "MIT",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
+ "license": "ISC"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
+ "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
+ "minimatch": "^3.0.4",
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": ">=1.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 6",
+ "typescript": ">= 2.7",
+ "vue-template-compiler": "*",
+ "webpack": ">= 4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ },
+ "vue-template-compiler": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz",
+ "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs-monkey": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
+ "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==",
+ "license": "Unlicense"
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-own-enumerable-property-symbols": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+ "license": "ISC"
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "license": "MIT",
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "license": "MIT"
+ },
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+ "license": "MIT"
+ },
+ "node_modules/harmony-reflect": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
+ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
+ "license": "(Apache-2.0 OR MPL-1.1)"
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "node_modules/hpack.js/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/hpack.js/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/hpack.js/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/hpack.js/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "license": "MIT"
+ },
+ "node_modules/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
+ "license": "MIT",
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "clean-css": "^5.2.2",
+ "commander": "^8.3.0",
+ "he": "^1.2.0",
+ "param-case": "^3.0.4",
+ "relateurl": "^0.2.7",
+ "terser": "^5.10.0"
+ },
+ "bin": {
+ "html-minifier-terser": "cli.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/html-webpack-plugin": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz",
+ "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/html-minifier-terser": "^6.0.0",
+ "html-minifier-terser": "^6.0.2",
+ "lodash": "^4.17.21",
+ "pretty-error": "^4.0.0",
+ "tapable": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-webpack-plugin"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.20.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
+ "license": "MIT"
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
+ "license": "MIT"
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
+ "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/idb": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
+ "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
+ "license": "ISC"
+ },
+ "node_modules/identity-obj-proxy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
+ "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==",
+ "license": "MIT",
+ "dependencies": {
+ "harmony-reflect": "^1.4.6"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
+ "license": "MIT",
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
+ "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "license": "MIT",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+ "license": "MIT"
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-root": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
+ "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz",
+ "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jake": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "async": "^3.2.3",
+ "chalk": "^4.0.2",
+ "filelist": "^1.0.4",
+ "minimatch": "^3.1.2"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
+ "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.5.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-circus/node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-cli/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-config/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-each/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-message-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-mock/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-mock/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-runner/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-validate/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz",
+ "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^4.3.1",
+ "chalk": "^4.0.0",
+ "jest-regex-util": "^28.0.0",
+ "jest-watcher": "^28.0.0",
+ "slash": "^4.0.0",
+ "string-length": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "jest": "^27.0.0 || ^28.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@jest/console": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz",
+ "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^28.1.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^28.1.3",
+ "jest-util": "^28.1.3",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz",
+ "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==",
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.24.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz",
+ "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "^28.1.3",
+ "@jest/types": "^28.1.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@jest/types": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz",
+ "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^28.1.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": {
+ "version": "0.24.51",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
+ "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==",
+ "license": "MIT"
+ },
+ "node_modules/jest-watch-typeahead/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/emittery": {
+ "version": "0.10.2",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz",
+ "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-message-util": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz",
+ "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^28.1.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^28.1.3",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": {
+ "version": "28.0.2",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz",
+ "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-util": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz",
+ "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^28.1.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-watcher": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz",
+ "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "^28.1.3",
+ "@jest/types": "^28.1.3",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.10.2",
+ "jest-util": "^28.1.3",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "license": "MIT",
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/pretty-format": {
+ "version": "28.1.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz",
+ "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^28.1.3",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-watch-typeahead/node_modules/slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/string-length": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
+ "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
+ "license": "MIT",
+ "dependencies": {
+ "char-regex": "^2.0.0",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz",
+ "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.6",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "license": "MIT",
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "license": "MIT"
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "license": "(AFL-2.1 OR BSD-3-Clause)"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonpath": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz",
+ "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==",
+ "license": "MIT",
+ "dependencies": {
+ "esprima": "1.2.2",
+ "static-eval": "2.0.2",
+ "underscore": "1.12.1"
+ }
+ },
+ "node_modules/jsonpath/node_modules/esprima": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz",
+ "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/jsonpointer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+ "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/klona": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "license": "MIT",
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/launch-editor": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz",
+ "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==",
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.8.1"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "license": "MIT",
+ "bin": {
+ "lz-string": "bin/bin.js"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memfs": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
+ "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
+ "license": "Unlicense",
+ "dependencies": {
+ "fs-monkey": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mini-css-extract-plugin": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz",
+ "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==",
+ "license": "MIT",
+ "dependencies": {
+ "schema-utils": "^4.0.0",
+ "tapable": "^2.2.1"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "license": "ISC"
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/multicast-dns": {
+ "version": "7.2.5",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
+ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
+ "license": "MIT",
+ "dependencies": {
+ "dns-packet": "^5.2.2",
+ "thunky": "^1.0.2"
+ },
+ "bin": {
+ "multicast-dns": "cli.js"
+ }
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "license": "MIT"
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "license": "MIT"
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "license": "MIT",
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "license": "(BSD-3-Clause OR GPL-2.0)",
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "license": "MIT"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.13",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
+ "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+ "license": "MIT"
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.getownpropertydescriptors": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz",
+ "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==",
+ "license": "MIT",
+ "dependencies": {
+ "array.prototype.reduce": "^1.0.6",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "gopd": "^1.0.1",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "license": "MIT"
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-retry": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/retry": "0.12.0",
+ "retry": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "license": "MIT",
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "license": "MIT"
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-attribute-case-insensitive": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz",
+ "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-browser-comments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
+ "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==",
+ "license": "CC0-1.0",
+ "engines": {
+ "node": ">=8"
+ },
+ "peerDependencies": {
+ "browserslist": ">=4",
+ "postcss": ">=8"
+ }
+ },
+ "node_modules/postcss-calc": {
+ "version": "8.2.4",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
+ "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.2"
+ }
+ },
+ "node_modules/postcss-clamp": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+ "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=7.6.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.6"
+ }
+ },
+ "node_modules/postcss-color-functional-notation": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
+ "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-color-hex-alpha": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz",
+ "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-color-rebeccapurple": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz",
+ "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-colormin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz",
+ "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "colord": "^2.9.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
+ "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-custom-media": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz",
+ "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3"
+ }
+ },
+ "node_modules/postcss-custom-properties": {
+ "version": "12.1.11",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz",
+ "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-custom-selectors": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz",
+ "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3"
+ }
+ },
+ "node_modules/postcss-dir-pseudo-class": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz",
+ "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-discard-comments": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+ "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-duplicates": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+ "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-empty": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+ "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-discard-overridden": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+ "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-double-position-gradients": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz",
+ "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-env-function": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz",
+ "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-flexbugs-fixes": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
+ "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.1.4"
+ }
+ },
+ "node_modules/postcss-focus-visible": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz",
+ "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-within": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz",
+ "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-font-variant": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+ "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-gap-properties": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
+ "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==",
+ "license": "CC0-1.0",
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-image-set-function": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz",
+ "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-initial": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
+ "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-lab-function": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz",
+ "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
+ "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/yaml": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
+ "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/postcss-loader": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
+ "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
+ "license": "MIT",
+ "dependencies": {
+ "cosmiconfig": "^7.0.0",
+ "klona": "^2.0.5",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "postcss": "^7.0.0 || ^8.0.1",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/postcss-logical": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
+ "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==",
+ "license": "CC0-1.0",
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-media-minmax": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
+ "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
+ "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-rules": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz",
+ "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^3.1.0",
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-font-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+ "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+ "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+ "license": "MIT",
+ "dependencies": {
+ "colord": "^2.9.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
+ "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+ "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz",
+ "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
+ "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "license": "ISC",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.1"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-nesting": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz",
+ "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^2.0.0",
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-normalize": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz",
+ "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/normalize.css": "*",
+ "postcss-browser-comments": "^4",
+ "sanitize.css": "*"
+ },
+ "engines": {
+ "node": ">= 12"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4",
+ "postcss": ">= 8"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+ "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+ "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+ "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+ "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+ "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+ "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
+ "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+ "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
+ "license": "MIT",
+ "dependencies": {
+ "normalize-url": "^6.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+ "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-opacity-percentage": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz",
+ "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==",
+ "funding": [
+ {
+ "type": "kofi",
+ "url": "https://ko-fi.com/mrcgrtz"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/mrcgrtz"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+ "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-overflow-shorthand": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz",
+ "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-page-break": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+ "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8"
+ }
+ },
+ "node_modules/postcss-place": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz",
+ "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-preset-env": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz",
+ "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@csstools/postcss-cascade-layers": "^1.1.1",
+ "@csstools/postcss-color-function": "^1.1.1",
+ "@csstools/postcss-font-format-keywords": "^1.0.1",
+ "@csstools/postcss-hwb-function": "^1.0.2",
+ "@csstools/postcss-ic-unit": "^1.0.1",
+ "@csstools/postcss-is-pseudo-class": "^2.0.7",
+ "@csstools/postcss-nested-calc": "^1.0.0",
+ "@csstools/postcss-normalize-display-values": "^1.0.1",
+ "@csstools/postcss-oklab-function": "^1.1.1",
+ "@csstools/postcss-progressive-custom-properties": "^1.3.0",
+ "@csstools/postcss-stepped-value-functions": "^1.0.1",
+ "@csstools/postcss-text-decoration-shorthand": "^1.0.0",
+ "@csstools/postcss-trigonometric-functions": "^1.0.2",
+ "@csstools/postcss-unset-value": "^1.0.2",
+ "autoprefixer": "^10.4.13",
+ "browserslist": "^4.21.4",
+ "css-blank-pseudo": "^3.0.3",
+ "css-has-pseudo": "^3.0.4",
+ "css-prefers-color-scheme": "^6.0.3",
+ "cssdb": "^7.1.0",
+ "postcss-attribute-case-insensitive": "^5.0.2",
+ "postcss-clamp": "^4.1.0",
+ "postcss-color-functional-notation": "^4.2.4",
+ "postcss-color-hex-alpha": "^8.0.4",
+ "postcss-color-rebeccapurple": "^7.1.1",
+ "postcss-custom-media": "^8.0.2",
+ "postcss-custom-properties": "^12.1.10",
+ "postcss-custom-selectors": "^6.0.3",
+ "postcss-dir-pseudo-class": "^6.0.5",
+ "postcss-double-position-gradients": "^3.1.2",
+ "postcss-env-function": "^4.0.6",
+ "postcss-focus-visible": "^6.0.4",
+ "postcss-focus-within": "^5.0.4",
+ "postcss-font-variant": "^5.0.0",
+ "postcss-gap-properties": "^3.0.5",
+ "postcss-image-set-function": "^4.0.7",
+ "postcss-initial": "^4.0.1",
+ "postcss-lab-function": "^4.2.1",
+ "postcss-logical": "^5.0.4",
+ "postcss-media-minmax": "^5.0.0",
+ "postcss-nesting": "^10.2.0",
+ "postcss-opacity-percentage": "^1.1.2",
+ "postcss-overflow-shorthand": "^3.0.4",
+ "postcss-page-break": "^3.0.4",
+ "postcss-place": "^7.0.5",
+ "postcss-pseudo-class-any-link": "^7.1.6",
+ "postcss-replace-overflow-wrap": "^4.0.0",
+ "postcss-selector-not": "^6.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-pseudo-class-any-link": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz",
+ "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==",
+ "license": "CC0-1.0",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz",
+ "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+ "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-replace-overflow-wrap": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+ "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.0.3"
+ }
+ },
+ "node_modules/postcss-selector-not": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz",
+ "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+ "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "svgo": "^2.7.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/postcss-svgo/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "license": "MIT",
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+ "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pretty-error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
+ "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.17.20",
+ "renderkid": "^3.0.0"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
+ },
+ "node_modules/promise": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+ "license": "MIT",
+ "dependencies": {
+ "asap": "~2.0.6"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/prop-types/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-addr/node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz",
+ "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.0",
+ "teleport": ">=0.2.0"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "license": "MIT",
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-app-polyfill": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz",
+ "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==",
+ "license": "MIT",
+ "dependencies": {
+ "core-js": "^3.19.2",
+ "object-assign": "^4.1.1",
+ "promise": "^8.1.0",
+ "raf": "^3.4.1",
+ "regenerator-runtime": "^0.13.9",
+ "whatwg-fetch": "^3.6.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/react-app-polyfill/node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "license": "MIT"
+ },
+ "node_modules/react-dev-utils": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
+ "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "address": "^1.1.2",
+ "browserslist": "^4.18.1",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^7.0.3",
+ "detect-port-alt": "^1.1.6",
+ "escape-string-regexp": "^4.0.0",
+ "filesize": "^8.0.6",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.5.0",
+ "global-modules": "^2.0.0",
+ "globby": "^11.0.4",
+ "gzip-size": "^6.0.0",
+ "immer": "^9.0.7",
+ "is-root": "^2.1.0",
+ "loader-utils": "^3.2.0",
+ "open": "^8.4.0",
+ "pkg-up": "^3.1.0",
+ "prompts": "^2.4.2",
+ "react-error-overlay": "^6.0.11",
+ "recursive-readdir": "^2.2.2",
+ "shell-quote": "^1.7.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/loader-utils": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz",
+ "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-error-overlay": {
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
+ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==",
+ "license": "MIT"
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "license": "MIT"
+ },
+ "node_modules/react-refresh": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
+ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-scripts": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
+ "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.16.0",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
+ "@svgr/webpack": "^5.5.0",
+ "babel-jest": "^27.4.2",
+ "babel-loader": "^8.2.3",
+ "babel-plugin-named-asset-import": "^0.3.8",
+ "babel-preset-react-app": "^10.0.1",
+ "bfj": "^7.0.2",
+ "browserslist": "^4.18.1",
+ "camelcase": "^6.2.1",
+ "case-sensitive-paths-webpack-plugin": "^2.4.0",
+ "css-loader": "^6.5.1",
+ "css-minimizer-webpack-plugin": "^3.2.0",
+ "dotenv": "^10.0.0",
+ "dotenv-expand": "^5.1.0",
+ "eslint": "^8.3.0",
+ "eslint-config-react-app": "^7.0.1",
+ "eslint-webpack-plugin": "^3.1.1",
+ "file-loader": "^6.2.0",
+ "fs-extra": "^10.0.0",
+ "html-webpack-plugin": "^5.5.0",
+ "identity-obj-proxy": "^3.0.0",
+ "jest": "^27.4.3",
+ "jest-resolve": "^27.4.2",
+ "jest-watch-typeahead": "^1.0.0",
+ "mini-css-extract-plugin": "^2.4.5",
+ "postcss": "^8.4.4",
+ "postcss-flexbugs-fixes": "^5.0.2",
+ "postcss-loader": "^6.2.1",
+ "postcss-normalize": "^10.0.1",
+ "postcss-preset-env": "^7.0.1",
+ "prompts": "^2.4.2",
+ "react-app-polyfill": "^3.0.0",
+ "react-dev-utils": "^12.0.1",
+ "react-refresh": "^0.11.0",
+ "resolve": "^1.20.0",
+ "resolve-url-loader": "^4.0.0",
+ "sass-loader": "^12.3.0",
+ "semver": "^7.3.5",
+ "source-map-loader": "^3.0.0",
+ "style-loader": "^3.3.1",
+ "tailwindcss": "^3.0.2",
+ "terser-webpack-plugin": "^5.2.5",
+ "webpack": "^5.64.4",
+ "webpack-dev-server": "^4.6.0",
+ "webpack-manifest-plugin": "^4.0.2",
+ "workbox-webpack-plugin": "^6.4.1"
+ },
+ "bin": {
+ "react-scripts": "bin/react-scripts.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ },
+ "peerDependencies": {
+ "react": ">= 16",
+ "typescript": "^3.2.1 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/recursive-readdir": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
+ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
+ "license": "MIT",
+ "dependencies": {
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "license": "MIT",
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
+ "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.1",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT"
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regex-parser": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz",
+ "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==",
+ "license": "MIT"
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
+ "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.11.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "license": "MIT"
+ },
+ "node_modules/regjsparser": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz",
+ "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~3.0.2"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/renderkid": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+ "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "license": "MIT",
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-url-loader": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
+ "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
+ "license": "MIT",
+ "dependencies": {
+ "adjust-sourcemap-loader": "^4.0.0",
+ "convert-source-map": "^1.7.0",
+ "loader-utils": "^2.0.0",
+ "postcss": "^7.0.35",
+ "source-map": "0.6.1"
+ },
+ "engines": {
+ "node": ">=8.9"
+ },
+ "peerDependencies": {
+ "rework": "1.0.1",
+ "rework-visit": "1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rework": {
+ "optional": true
+ },
+ "rework-visit": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/resolve-url-loader/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "license": "MIT"
+ },
+ "node_modules/resolve-url-loader/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "license": "ISC"
+ },
+ "node_modules/resolve-url-loader/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ }
+ },
+ "node_modules/resolve-url-loader/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
+ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
+ "license": "MIT",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0"
+ }
+ },
+ "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sanitize.css": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz",
+ "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/sass-loader": {
+ "version": "12.6.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
+ "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
+ "license": "MIT",
+ "dependencies": {
+ "klona": "^2.0.4",
+ "neo-async": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "fibers": ">= 3.1.0",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
+ "sass": "^1.3.0",
+ "sass-embedded": "*",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "fibers": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "license": "ISC"
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/schema-utils/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+ "license": "MIT"
+ },
+ "node_modules/selfsigned": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node-forge": "^1.3.0",
+ "node-forge": "^1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "license": "ISC"
+ },
+ "node_modules/serve-index/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/serve-index/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "license": "ISC"
+ },
+ "node_modules/serve-index/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ }
+ },
+ "node_modules/source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "license": "MIT"
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz",
+ "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==",
+ "license": "MIT",
+ "dependencies": {
+ "abab": "^2.0.5",
+ "iconv-lite": "^0.6.3",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+ "license": "MIT"
+ },
+ "node_modules/spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+ "license": "MIT"
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "license": "MIT"
+ },
+ "node_modules/static-eval": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz",
+ "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==",
+ "license": "MIT",
+ "dependencies": {
+ "escodegen": "^1.8.1"
+ }
+ },
+ "node_modules/static-eval/node_modules/escodegen": {
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/static-eval/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/static-eval/node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/static-eval/node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/static-eval/node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/static-eval/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-eval/node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+ "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "internal-slot": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "license": "MIT",
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-natural-compare": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz",
+ "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
+ "license": "MIT"
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string.prototype.includes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "regexp.prototype.flags": "^1.5.2",
+ "set-function-name": "^2.0.2",
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
+ "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-loader": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz",
+ "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/stylehacks": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
+ "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-parser": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
+ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
+ "license": "MIT"
+ },
+ "node_modules/svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/svgo/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/svgo/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/svgo/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/svgo/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/svgo/node_modules/css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "node_modules/svgo/node_modules/css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/svgo/node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/svgo/node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/svgo/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svgo/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/svgo/node_modules/nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "node_modules/svgo/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "license": "MIT"
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz",
+ "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==",
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.6.0",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.2",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.6",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.47",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.2",
+ "postcss-nested": "^6.2.0",
+ "postcss-selector-parser": "^6.1.2",
+ "resolve": "^1.22.8",
+ "sucrase": "^3.35.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/temp-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
+ "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
+ "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-stream": "^2.0.0",
+ "temp-dir": "^2.0.0",
+ "type-fest": "^0.16.0",
+ "unique-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/type-fest": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+ "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.36.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
+ "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+ "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT"
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "license": "ISC",
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "license": "MIT"
+ },
+ "node_modules/thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "license": "MIT"
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+ "license": "MIT"
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/tsutils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/underscore": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
+ "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "license": "MIT"
+ },
+ "node_modules/upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4",
+ "yarn": "*"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "license": "MIT"
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "license": "ISC",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "license": "MIT"
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "license": "MIT",
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "license": "MIT",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "license": "MIT",
+ "dependencies": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/web-vitals": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz",
+ "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.96.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
+ "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.6",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.14.0",
+ "browserslist": "^4.24.0",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-middleware": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
+ "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "colorette": "^2.0.10",
+ "memfs": "^3.4.3",
+ "mime-types": "^2.1.31",
+ "range-parser": "^1.2.1",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/webpack-dev-server": {
+ "version": "4.15.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz",
+ "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/bonjour": "^3.5.9",
+ "@types/connect-history-api-fallback": "^1.3.5",
+ "@types/express": "^4.17.13",
+ "@types/serve-index": "^1.9.1",
+ "@types/serve-static": "^1.13.10",
+ "@types/sockjs": "^0.3.33",
+ "@types/ws": "^8.5.5",
+ "ansi-html-community": "^0.0.8",
+ "bonjour-service": "^1.0.11",
+ "chokidar": "^3.5.3",
+ "colorette": "^2.0.10",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^2.0.0",
+ "default-gateway": "^6.0.3",
+ "express": "^4.17.3",
+ "graceful-fs": "^4.2.6",
+ "html-entities": "^2.3.2",
+ "http-proxy-middleware": "^2.0.3",
+ "ipaddr.js": "^2.0.1",
+ "launch-editor": "^2.6.0",
+ "open": "^8.0.9",
+ "p-retry": "^4.5.0",
+ "rimraf": "^3.0.2",
+ "schema-utils": "^4.0.0",
+ "selfsigned": "^2.1.1",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.24",
+ "spdy": "^4.0.2",
+ "webpack-dev-middleware": "^5.3.4",
+ "ws": "^8.13.0"
+ },
+ "bin": {
+ "webpack-dev-server": "bin/webpack-dev-server.js"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.37.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ },
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-manifest-plugin": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz",
+ "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==",
+ "license": "MIT",
+ "dependencies": {
+ "tapable": "^2.0.0",
+ "webpack-sources": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.44.2 || ^5.47.0"
+ }
+ },
+ "node_modules/webpack-manifest-plugin/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz",
+ "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==",
+ "license": "MIT",
+ "dependencies": {
+ "source-list-map": "^2.0.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/webpack/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
+ "license": "MIT"
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "license": "MIT"
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz",
+ "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==",
+ "license": "MIT",
+ "dependencies": {
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/workbox-background-sync": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz",
+ "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==",
+ "license": "MIT",
+ "dependencies": {
+ "idb": "^7.0.1",
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-broadcast-update": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz",
+ "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-build": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz",
+ "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@apideck/better-ajv-errors": "^0.3.1",
+ "@babel/core": "^7.11.1",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.2",
+ "@rollup/plugin-babel": "^5.2.0",
+ "@rollup/plugin-node-resolve": "^11.2.1",
+ "@rollup/plugin-replace": "^2.4.1",
+ "@surma/rollup-plugin-off-main-thread": "^2.2.3",
+ "ajv": "^8.6.0",
+ "common-tags": "^1.8.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "lodash": "^4.17.20",
+ "pretty-bytes": "^5.3.0",
+ "rollup": "^2.43.1",
+ "rollup-plugin-terser": "^7.0.0",
+ "source-map": "^0.8.0-beta.0",
+ "stringify-object": "^3.3.0",
+ "strip-comments": "^2.0.1",
+ "tempy": "^0.6.0",
+ "upath": "^1.2.0",
+ "workbox-background-sync": "6.6.0",
+ "workbox-broadcast-update": "6.6.0",
+ "workbox-cacheable-response": "6.6.0",
+ "workbox-core": "6.6.0",
+ "workbox-expiration": "6.6.0",
+ "workbox-google-analytics": "6.6.0",
+ "workbox-navigation-preload": "6.6.0",
+ "workbox-precaching": "6.6.0",
+ "workbox-range-requests": "6.6.0",
+ "workbox-recipes": "6.6.0",
+ "workbox-routing": "6.6.0",
+ "workbox-strategies": "6.6.0",
+ "workbox-streams": "6.6.0",
+ "workbox-sw": "6.6.0",
+ "workbox-window": "6.6.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+ "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+ "license": "MIT",
+ "dependencies": {
+ "json-schema": "^0.4.0",
+ "jsonpointer": "^5.0.0",
+ "leven": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "ajv": ">=8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/workbox-build/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/workbox-build/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/workbox-build/node_modules/source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "whatwg-url": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/workbox-build/node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "node_modules/workbox-cacheable-response": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz",
+ "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==",
+ "deprecated": "workbox-background-sync@6.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-core": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz",
+ "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==",
+ "license": "MIT"
+ },
+ "node_modules/workbox-expiration": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz",
+ "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==",
+ "license": "MIT",
+ "dependencies": {
+ "idb": "^7.0.1",
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-google-analytics": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz",
+ "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==",
+ "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-background-sync": "6.6.0",
+ "workbox-core": "6.6.0",
+ "workbox-routing": "6.6.0",
+ "workbox-strategies": "6.6.0"
+ }
+ },
+ "node_modules/workbox-navigation-preload": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz",
+ "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-precaching": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz",
+ "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0",
+ "workbox-routing": "6.6.0",
+ "workbox-strategies": "6.6.0"
+ }
+ },
+ "node_modules/workbox-range-requests": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz",
+ "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-recipes": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz",
+ "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-cacheable-response": "6.6.0",
+ "workbox-core": "6.6.0",
+ "workbox-expiration": "6.6.0",
+ "workbox-precaching": "6.6.0",
+ "workbox-routing": "6.6.0",
+ "workbox-strategies": "6.6.0"
+ }
+ },
+ "node_modules/workbox-routing": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz",
+ "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-strategies": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz",
+ "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/workbox-streams": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz",
+ "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==",
+ "license": "MIT",
+ "dependencies": {
+ "workbox-core": "6.6.0",
+ "workbox-routing": "6.6.0"
+ }
+ },
+ "node_modules/workbox-sw": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz",
+ "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==",
+ "license": "MIT"
+ },
+ "node_modules/workbox-webpack-plugin": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz",
+ "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-json-stable-stringify": "^2.1.0",
+ "pretty-bytes": "^5.4.1",
+ "upath": "^1.2.0",
+ "webpack-sources": "^1.4.3",
+ "workbox-build": "6.6.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.4.0 || ^5.9.0"
+ }
+ },
+ "node_modules/workbox-webpack-plugin/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "license": "MIT",
+ "dependencies": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/workbox-window": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz",
+ "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/trusted-types": "^2.0.2",
+ "workbox-core": "6.6.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "license": "MIT"
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/v2/webui/examples/C/react/webui-react-example/package.json b/v2/webui/examples/C/react/webui-react-example/package.json
new file mode 100644
index 0000000..9b91552
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "webui-react-example",
+ "version": "0.1.0",
+ "private": true,
+ "dependencies": {
+ "@testing-library/jest-dom": "^5.17.0",
+ "@testing-library/react": "^13.4.0",
+ "@testing-library/user-event": "^13.5.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-scripts": "5.0.1",
+ "web-vitals": "^2.1.4"
+ },
+ "scripts": {
+ "start": "react-scripts start",
+ "build": "react-scripts build",
+ "test": "react-scripts test",
+ "eject": "react-scripts eject"
+ },
+ "eslintConfig": {
+ "extends": [
+ "react-app",
+ "react-app/jest"
+ ]
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ }
+}
diff --git a/v2/webui/examples/C/react/webui-react-example/public/favicon.ico b/v2/webui/examples/C/react/webui-react-example/public/favicon.ico
new file mode 100644
index 0000000..a11777c
Binary files /dev/null and b/v2/webui/examples/C/react/webui-react-example/public/favicon.ico differ
diff --git a/v2/webui/examples/C/react/webui-react-example/public/index.html b/v2/webui/examples/C/react/webui-react-example/public/index.html
new file mode 100644
index 0000000..930253b
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/public/index.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ WebUI React
+
+
+ You need to enable JavaScript to run this app.
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/react/webui-react-example/public/logo192.png b/v2/webui/examples/C/react/webui-react-example/public/logo192.png
new file mode 100644
index 0000000..fc44b0a
Binary files /dev/null and b/v2/webui/examples/C/react/webui-react-example/public/logo192.png differ
diff --git a/v2/webui/examples/C/react/webui-react-example/public/logo512.png b/v2/webui/examples/C/react/webui-react-example/public/logo512.png
new file mode 100644
index 0000000..a4e47a6
Binary files /dev/null and b/v2/webui/examples/C/react/webui-react-example/public/logo512.png differ
diff --git a/v2/webui/examples/C/react/webui-react-example/public/manifest.json b/v2/webui/examples/C/react/webui-react-example/public/manifest.json
new file mode 100644
index 0000000..080d6c7
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/public/manifest.json
@@ -0,0 +1,25 @@
+{
+ "short_name": "React App",
+ "name": "Create React App Sample",
+ "icons": [
+ {
+ "src": "favicon.ico",
+ "sizes": "64x64 32x32 24x24 16x16",
+ "type": "image/x-icon"
+ },
+ {
+ "src": "logo192.png",
+ "type": "image/png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "logo512.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#000000",
+ "background_color": "#ffffff"
+}
diff --git a/v2/webui/examples/C/react/webui-react-example/public/robots.txt b/v2/webui/examples/C/react/webui-react-example/public/robots.txt
new file mode 100644
index 0000000..e9e57dc
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/public/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/v2/webui/examples/C/react/webui-react-example/src/App.css b/v2/webui/examples/C/react/webui-react-example/src/App.css
new file mode 100644
index 0000000..74b5e05
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/App.css
@@ -0,0 +1,38 @@
+.App {
+ text-align: center;
+}
+
+.App-logo {
+ height: 40vmin;
+ pointer-events: none;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .App-logo {
+ animation: App-logo-spin infinite 20s linear;
+ }
+}
+
+.App-header {
+ background-color: #282c34;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ font-size: calc(10px + 2vmin);
+ color: white;
+}
+
+.App-link {
+ color: #61dafb;
+}
+
+@keyframes App-logo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
diff --git a/v2/webui/examples/C/react/webui-react-example/src/App.js b/v2/webui/examples/C/react/webui-react-example/src/App.js
new file mode 100644
index 0000000..cd63ea8
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/App.js
@@ -0,0 +1,75 @@
+import React, { useState } from "react";
+
+const App = () => {
+ const [value1, setValue1] = useState('');
+ const [value2, setValue2] = useState('');
+ const [result, setResult] = useState(null);
+
+ const calculateSum = () => {
+ const sum = parseFloat(value1 || 0) + parseFloat(value2 || 0);
+ setResult(sum);
+ };
+
+ return (
+
+
+
WebUI React Example
+
+
+ Input 1:
+
+ setValue1(e.target.value)}
+ style={{ marginLeft: '10px', padding: '5px', fontSize: '16px' }}
+ />
+
+
+
+ Input 2:
+
+ setValue2(e.target.value)}
+ style={{ marginLeft: '10px', padding: '5px', fontSize: '16px' }}
+ />
+
+
+ Calculate (React Frontend)
+
+
+ Exit (WebUI Backend)
+
+
+ Result: {result !== null ? result : 'N/A'}
+
+
+ );
+};
+
+export default App;
diff --git a/v2/webui/examples/C/react/webui-react-example/src/App.test.js b/v2/webui/examples/C/react/webui-react-example/src/App.test.js
new file mode 100644
index 0000000..1f03afe
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/App.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import App from './App';
+
+test('renders learn react link', () => {
+ render( );
+ const linkElement = screen.getByText(/learn react/i);
+ expect(linkElement).toBeInTheDocument();
+});
diff --git a/v2/webui/examples/C/react/webui-react-example/src/index.css b/v2/webui/examples/C/react/webui-react-example/src/index.css
new file mode 100644
index 0000000..0e03a9c
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/index.css
@@ -0,0 +1,16 @@
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ color: #5ed2f2;
+ background-color: #2a2c2e;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ monospace;
+}
diff --git a/v2/webui/examples/C/react/webui-react-example/src/index.js b/v2/webui/examples/C/react/webui-react-example/src/index.js
new file mode 100644
index 0000000..d563c0f
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/index.js
@@ -0,0 +1,17 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import App from './App';
+import reportWebVitals from './reportWebVitals';
+
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render(
+
+
+
+);
+
+// If you want to start measuring performance in your app, pass a function
+// to log results (for example: reportWebVitals(console.log))
+// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
+reportWebVitals();
diff --git a/v2/webui/examples/C/react/webui-react-example/src/logo.svg b/v2/webui/examples/C/react/webui-react-example/src/logo.svg
new file mode 100644
index 0000000..9dfc1c0
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/v2/webui/examples/C/react/webui-react-example/src/reportWebVitals.js b/v2/webui/examples/C/react/webui-react-example/src/reportWebVitals.js
new file mode 100644
index 0000000..5253d3a
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/reportWebVitals.js
@@ -0,0 +1,13 @@
+const reportWebVitals = onPerfEntry => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/v2/webui/examples/C/react/webui-react-example/src/setupTests.js b/v2/webui/examples/C/react/webui-react-example/src/setupTests.js
new file mode 100644
index 0000000..8f2609b
--- /dev/null
+++ b/v2/webui/examples/C/react/webui-react-example/src/setupTests.js
@@ -0,0 +1,5 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom';
diff --git a/v2/webui/examples/C/react/webui_react.png b/v2/webui/examples/C/react/webui_react.png
new file mode 100644
index 0000000..2f86dbe
Binary files /dev/null and b/v2/webui/examples/C/react/webui_react.png differ
diff --git a/v2/webui/examples/C/serve_a_folder/GNUmakefile b/v2/webui/examples/C/serve_a_folder/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/serve_a_folder/Makefile b/v2/webui/examples/C/serve_a_folder/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/serve_a_folder/bun_test.ts b/v2/webui/examples/C/serve_a_folder/bun_test.ts
new file mode 100644
index 0000000..b55ccf9
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/bun_test.ts
@@ -0,0 +1,26 @@
+// This file gets called like follow:
+//
+// 1. UI `Index.html` request:
+// `http://localhost:xxx/bun_test.ts?foo=123&bar=456`
+//
+// 2. WebUI runs command:
+// `bun run "bun_test.ts" "foo=123&bar=456"`
+//
+// 3. Bun parses args and prints the response
+
+// Get Query (HTTP GET)
+const args = process.argv.slice(2);
+const query = args[0];
+
+// Variables
+let foo: string = '';
+let bar: string = '';
+
+// Read Query
+const params = new URLSearchParams(query);
+for (const [key, value] of params.entries()) {
+ if (key === 'foo') foo = value; // 123
+ else if (key === 'bar') bar = value; // 456
+}
+
+console.log('Response from Bun: ' + (parseInt(foo) + parseInt(bar))); // 579
diff --git a/v2/webui/examples/C/serve_a_folder/deno_test.ts b/v2/webui/examples/C/serve_a_folder/deno_test.ts
new file mode 100644
index 0000000..7ab370d
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/deno_test.ts
@@ -0,0 +1,29 @@
+// This file gets called like follow:
+//
+// 1. UI `Index.html` request:
+// `http://localhost:xxx/deno_test.ts?foo=123&bar=456`
+//
+// 2. WebUI runs command:
+// `deno run --allow-all --unstable "deno_test.ts" "foo=123&bar=456"`
+//
+// 3. Deno parse args and print the response
+
+// Import parse()
+import { parse } from 'https://deno.land/std/flags/mod.ts';
+
+// Get Query (HTTP GET)
+const args = parse(Deno.args);
+const query = args._[0] as string;
+
+// Variables
+let foo: string = '';
+let bar: string = '';
+
+// Read Query
+const params = new URLSearchParams(query);
+for (const [key, value] of params.entries()) {
+ if (key == 'foo') foo = value; // 123
+ else if (key == 'bar') bar = value; // 456
+}
+
+console.log('Response from Deno: ' + (parseInt(foo) + parseInt(bar))); // 579
diff --git a/v2/webui/examples/C/serve_a_folder/index.html b/v2/webui/examples/C/serve_a_folder/index.html
new file mode 100644
index 0000000..c77e094
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/index.html
@@ -0,0 +1,193 @@
+
+
+
+
+ WebUI - Serve a Folder Example (C)
+
+
+
+ Serve a Folder Example (C)
+
+
+ You can edit this HTML file as you need.
+ Also, you can config WebUI to use Deno or Nodejs runtime for your JS/TS files.
+
+ Please click on the link to switch to the second page
+ Or click on the button to switch to the second page programmatically.
+
+
+ Click on [deno_test.ts] to interpret the TypeScript file (If deno is installed)
+
+ By a simple HTTP request "deno_test.ts?foo=60&bar=40"
+
+
+ Deno_test.ts (Local file)
+
+
+ Bun_test.ts (Local file)
+
+
+ Nodejs_test.ts (Local file)
+
+
+
+ Switch to The Second Page Programmatically (Local file)
+
+
+ Open The Second Window (Local file)
+
+
+
+
+ Unicode Test:
+ مرحبًا
+ 你好
+ こんにちは
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/serve_a_folder/main.c b/v2/webui/examples/C/serve_a_folder/main.c
new file mode 100644
index 0000000..01e7f08
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/main.c
@@ -0,0 +1,166 @@
+// Serve a Folder Example
+
+#include "webui.h"
+
+// Those defines is to avoid using global variables
+// you can also use `const size_t MyWindow;`.
+// A window ID can be between 1 and 512 (WEBUI_MAX_IDS)
+#define MyWindow (1)
+#define MySecondWindow (2)
+
+void exit_app(webui_event_t* e) {
+
+ // Close all opened windows
+ webui_exit();
+}
+
+void events(webui_event_t* e) {
+
+ // This function gets called every time
+ // there is an event
+
+ if (e->event_type == WEBUI_EVENT_CONNECTED)
+ printf("Connected. \n");
+ else if (e->event_type == WEBUI_EVENT_DISCONNECTED)
+ printf("Disconnected. \n");
+ else if (e->event_type == WEBUI_EVENT_MOUSE_CLICK)
+ printf("Click. \n");
+ else if (e->event_type == WEBUI_EVENT_NAVIGATION) {
+ const char* url = webui_get_string(e);
+ printf("Starting navigation to: %s \n", url);
+
+ // Because we used `webui_bind(MyWindow, "", events);`
+ // WebUI will block all `href` link clicks and sent here instead.
+ // We can then control the behaviour of links as needed.
+ webui_navigate(e->window, url);
+ }
+}
+
+void switch_to_second_page(webui_event_t* e) {
+
+ // This function gets called every
+ // time the user clicks on "SwitchToSecondPage"
+
+ // Switch to `/second.html` in the same opened window.
+ webui_show(e->window, "second.html");
+}
+
+void show_second_window(webui_event_t* e) {
+
+ // This function gets called every
+ // time the user clicks on "OpenNewWindow"
+
+ // Show a new window, and navigate to `/second.html`
+ // if it's already open, then switch in the same window
+ webui_show(MySecondWindow, "second.html");
+}
+
+const void* my_files_handler(const char* filename, int* length) {
+
+ printf("File: %s \n", filename);
+
+ if (!strcmp(filename, "/test.txt")) {
+
+ // Const static file example
+ return "HTTP/1.1 200 OK\r\n"
+ "Content-Type: text/html\r\n"
+ "Content-Length: 99\r\n\r\n"
+ ""
+ " This is a static embedded file content example."
+ " " // To keep connection with WebUI
+ "";
+ }
+ else if (!strcmp(filename, "/dynamic.html")) {
+
+ // Dynamic file example
+
+ // Allocate memory
+ char* body = webui_malloc(1024);
+ char* header_and_body = webui_malloc(1024);
+
+ // Generate body
+ static int count = 0;
+ sprintf(
+ body,
+ ""
+ " This is a dynamic file content example. "
+ " Count: %d [Refresh] "
+ " " // To keep connection with WebUI
+ "",
+ ++count
+ );
+
+ // Generate header + body
+ int body_size = strlen(body);
+ sprintf(
+ header_and_body,
+ "HTTP/1.1 200 OK\r\n"
+ "Content-Type: text/html\r\n"
+ "Content-Length: %d\r\n\r\n"
+ "%s",
+ body_size, body
+ );
+
+ // Free body buffer
+ webui_free(body);
+
+ // Set len (optional)
+ *length = strlen(header_and_body);
+
+ // By allocating resources using webui_malloc()
+ // WebUI will automaticaly free the resources.
+ return header_and_body;
+ }
+
+ // Other files:
+ // A NULL return will make WebUI
+ // looks for the file locally.
+ return NULL;
+}
+
+int main() {
+
+ // Create new windows
+ webui_new_window_id(MyWindow);
+ webui_new_window_id(MySecondWindow);
+
+ // Bind HTML element IDs with a C functions
+ webui_bind(MyWindow, "SwitchToSecondPage", switch_to_second_page);
+ webui_bind(MyWindow, "OpenNewWindow", show_second_window);
+ webui_bind(MyWindow, "Exit", exit_app);
+ webui_bind(MySecondWindow, "Exit", exit_app);
+
+ // Bind events
+ webui_bind(MyWindow, "", events);
+
+ // Set the `.ts` and `.js` runtime
+ // webui_set_runtime(MyWindow, NodeJS);
+ // webui_set_runtime(MyWindow, Bun);
+ webui_set_runtime(MyWindow, Deno);
+
+ // Set a custom files handler
+ webui_set_file_handler(MyWindow, my_files_handler);
+
+ // Set window size
+ webui_set_size(MyWindow, 800, 800);
+
+ // Set window position
+ webui_set_position(MyWindow, 200, 200);
+
+ // Show a new window
+ // webui_set_root_folder(MyWindow, "_MY_PATH_HERE_");
+ // webui_show_browser(MyWindow, "index.html", Chrome);
+ webui_show(MyWindow, "index.html");
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/serve_a_folder/node_test.js b/v2/webui/examples/C/serve_a_folder/node_test.js
new file mode 100644
index 0000000..5027a49
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/node_test.js
@@ -0,0 +1,26 @@
+// This file gets called like follow:
+//
+// 1. UI `Index.html` request:
+// `http://localhost:xxx/node_test.js?foo=123&bar=456`
+//
+// 2. WebUI runs command:
+// `node node_test.js "foo=123&bar=456"`
+//
+// 3. Node.js parses args and prints the response
+
+// Get Query (HTTP GET)
+const args = process.argv.slice(2);
+const query = args[0];
+
+// Variables
+let foo = '';
+let bar = '';
+
+// Read Query
+const params = new URLSearchParams(query);
+for (const [key, value] of params.entries()) {
+ if (key === 'foo') foo = value; // 123
+ else if (key === 'bar') bar = value; // 456
+}
+
+console.log('Response from Node.js: ' + (parseInt(foo) + parseInt(bar))); // 579
diff --git a/v2/webui/examples/C/serve_a_folder/second.html b/v2/webui/examples/C/serve_a_folder/second.html
new file mode 100644
index 0000000..343014c
--- /dev/null
+++ b/v2/webui/examples/C/serve_a_folder/second.html
@@ -0,0 +1,48 @@
+
+
+
+
+ WebUI - Second Page (C)
+
+
+
+ This is the second page !
+
+ Call Exit()
+
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/GNUmakefile b/v2/webui/examples/C/test_index_redirect/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/test_index_redirect/Makefile b/v2/webui/examples/C/test_index_redirect/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/test_index_redirect/main.c b/v2/webui/examples/C/test_index_redirect/main.c
new file mode 100644
index 0000000..7b4a114
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/main.c
@@ -0,0 +1,89 @@
+#include
+#include
+
+#include "webui.h"
+#include "vfs.h"
+
+// This example is used to verify redirect and fallback behavior for:
+// /, /sub, /sub/foo
+// in both storage modes:
+// 1) set_root_folder(...)
+// 2) set_file_handler(vfs)
+//
+// Server mode is the primary redirect test path because it exposes the raw
+// HTTP behavior (302 Location targets) without mixing in window lifecycle.
+//
+// The expected server behavior is:
+// - start_server("custom.html") prefers custom.html in every directory
+// - an explicit filename is strict; if it does not exist, the request fails
+// - webui_start_server(window, "") means "fallback mode", which probes
+// index.html, index.htm, index.ts, then index.js
+//
+// Note: index.ts and index.js can still be valid fallback targets for
+// runtime/script-first scenarios, but they are not equivalent to an HTML GUI
+// entry page. For normal GUI testing, HTML/HTM are the page-like entries.
+int main(int argc, char *argv[])
+{
+ bool serverMode = false;
+ bool vfsEnabled = false;
+
+ for (int i = 1; i < argc; ++i)
+ {
+ if (strcmp(argv[i], "--server") == 0)
+ {
+ serverMode = true;
+ }
+ else if (strcmp(argv[i], "--vfs") == 0)
+ {
+ vfsEnabled = true;
+ }
+ }
+
+ size_t window = webui_new_window();
+ webui_set_config(use_cookies, false);
+
+ if (vfsEnabled)
+ {
+ webui_set_file_handler(window, vfs);
+ }
+ else
+ {
+ webui_set_root_folder(window, "/home/gordon/Dokumenty/PlatformIO/Projects/webui/examples/C/test_index_redirect/ui/");
+
+ // Absolute paths:
+ // webui_set_root_folder(window, "/path/to/ui/");
+ // webui_set_root_folder(window, "/path/to/ui");
+
+ // Relative if ui folder is next to executable:
+ // webui_set_root_folder(window, "ui/");
+ // webui_set_root_folder(window, "ui");
+ }
+
+ if (serverMode)
+ {
+ webui_set_port(window, 8080);
+
+ // Explicit custom entry file:
+ (void)webui_start_server(window, "custom.html");
+
+ // Redirect to the hardcoded index.* fallback list:
+ // (void)webui_start_server(window, "");
+ }
+ else
+ {
+ // Explicit custom entry file:
+ webui_show(window, "custom.html");
+ // webui_show_browser(window, "custom.html", AnyBrowser);
+
+ // Redirect to the hardcoded index.* fallback list:
+ // webui_show(window, "");
+ // webui_show_browser(window, "", AnyBrowser);
+ }
+
+ webui_wait();
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(__argc, __argv); }
+#endif
diff --git a/v2/webui/examples/C/test_index_redirect/ui/custom.html b/v2/webui/examples/C/test_index_redirect/ui/custom.html
new file mode 100644
index 0000000..0abbe9c
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/custom.html
+
+
+ ui/custom.html
+ IDENTIFIER: ui/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/index.css b/v2/webui/examples/C/test_index_redirect/ui/index.css
new file mode 100644
index 0000000..6bc789d
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C/test_index_redirect/ui/index.html b/v2/webui/examples/C/test_index_redirect/ui/index.html
new file mode 100644
index 0000000..120a792
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/index.html
+
+
+ ui/index.html
+ IDENTIFIER: ui/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/index.js b/v2/webui/examples/C/test_index_redirect/ui/index.js
new file mode 100644
index 0000000..4094538
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/index.js');
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/custom.html b/v2/webui/examples/C/test_index_redirect/ui/sub/custom.html
new file mode 100644
index 0000000..e90b2d5
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/custom.html
+
+
+ ui/sub/custom.html
+ IDENTIFIER: ui/sub/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/foo/custom.html b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/custom.html
new file mode 100644
index 0000000..2b57d8b
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/custom.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/foo/custom.html
+
+
+ ui/sub/foo/custom.html
+ IDENTIFIER: ui/sub/foo/custom.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.css b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.css
new file mode 100644
index 0000000..2ce12c5
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/sub/foo/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.html b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.html
new file mode 100644
index 0000000..86026d7
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/foo/index.html
+
+
+ ui/sub/foo/index.html
+ IDENTIFIER: ui/sub/foo/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.js b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.js
new file mode 100644
index 0000000..e4cef1a
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/foo/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/sub/foo/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/sub/foo/index.js');
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/index.css b/v2/webui/examples/C/test_index_redirect/ui/sub/index.css
new file mode 100644
index 0000000..68962cd
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/index.css
@@ -0,0 +1,4 @@
+/* IDENTIFIER: ui/sub/index.css */
+/* Directory routes: / | /sub | /sub/foo */
+/* All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js */
+body { font-family: monospace; }
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/index.html b/v2/webui/examples/C/test_index_redirect/ui/sub/index.html
new file mode 100644
index 0000000..912a3a7
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ui/sub/index.html
+
+
+ ui/sub/index.html
+ IDENTIFIER: ui/sub/index.html
+ Directory routes: / | /sub | /sub/foo
+ All test files
+
+
+
+
diff --git a/v2/webui/examples/C/test_index_redirect/ui/sub/index.js b/v2/webui/examples/C/test_index_redirect/ui/sub/index.js
new file mode 100644
index 0000000..9fd0f34
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/ui/sub/index.js
@@ -0,0 +1,4 @@
+// IDENTIFIER: ui/sub/index.js
+// Directory routes: / | /sub | /sub/foo
+// All files: /custom.html /index.html /index.css /index.js /sub/custom.html /sub/index.html /sub/index.css /sub/index.js /sub/foo/custom.html /sub/foo/index.html /sub/foo/index.css /sub/foo/index.js
+console.log('IDENTIFIER: ui/sub/index.js');
diff --git a/v2/webui/examples/C/test_index_redirect/vfs.h b/v2/webui/examples/C/test_index_redirect/vfs.h
new file mode 100644
index 0000000..0f8b183
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/vfs.h
@@ -0,0 +1,131 @@
+#ifndef VIRTUAL_FILE_SYSTEM_H
+#define VIRTUAL_FILE_SYSTEM_H
+
+typedef struct {
+ const char *path;
+ const unsigned char *data;
+ int length;
+} VirtualFile;
+
+static const unsigned char FILE_0[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_1[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_2[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+static const unsigned char FILE_3[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_4[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_5[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_6[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+static const unsigned char FILE_7[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_8[] = {0x2f,0x2a,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2a,0x2f,0x0a,0x62,0x6f,0x64,0x79,0x20,0x7b,0x20,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x6d,0x6f,0x6e,0x6f,0x73,0x70,0x61,0x63,0x65,0x3b,0x20,0x7d,0x0a};
+
+static const unsigned char FILE_9[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_10[] = {0x2f,0x2f,0x20,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x2f,0x2f,0x20,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x2f,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x20,0x7c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x0a,0x2f,0x2f,0x20,0x41,0x6c,0x6c,0x20,0x66,0x69,0x6c,0x65,0x73,0x3a,0x20,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x20,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x0a,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x27,0x29,0x3b,0x0a};
+
+static const unsigned char FILE_11[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x20,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x65,0x6e,0x22,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x75,0x74,0x66,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x6d,0x65,0x74,0x61,0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22,0x77,0x69,0x64,0x74,0x68,0x3d,0x64,0x65,0x76,0x69,0x63,0x65,0x2d,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x2d,0x73,0x63,0x61,0x6c,0x65,0x3d,0x31,0x22,0x20,0x2f,0x3e,0x0a,0x20,0x20,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x31,0x3e,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x49,0x44,0x45,0x4e,0x54,0x49,0x46,0x49,0x45,0x52,0x3a,0x20,0x75,0x69,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x70,0x3e,0x44,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x72,0x6f,0x75,0x74,0x65,0x73,0x3a,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x22,0x3e,0x2f,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x20,0x7c,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x20,0x20,0x3c,0x68,0x32,0x3e,0x41,0x6c,0x6c,0x20,0x74,0x65,0x73,0x74,0x20,0x66,0x69,0x6c,0x65,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0a,0x20,0x20,0x3c,0x75,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x73,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x22,0x3e,0x2f,0x73,0x75,0x62,0x2f,0x66,0x6f,0x6f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6a,0x73,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x3c,0x2f,0x75,0x6c,0x3e,0x0a,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+
+static const VirtualFile virtual_files[] = {
+ {
+ "/index.css",
+ FILE_0,
+ 311
+ },
+ {
+ "/index.html",
+ FILE_1,
+ 1138
+ },
+ {
+ "/index.js",
+ FILE_2,
+ 308
+ },
+ {
+ "/custom.html",
+ FILE_3,
+ 1141
+ },
+ {
+ "/sub/index.css",
+ FILE_4,
+ 315
+ },
+ {
+ "/sub/index.html",
+ FILE_5,
+ 1150
+ },
+ {
+ "/sub/index.js",
+ FILE_6,
+ 316
+ },
+ {
+ "/sub/custom.html",
+ FILE_7,
+ 1153
+ },
+ {
+ "/sub/foo/index.css",
+ FILE_8,
+ 319
+ },
+ {
+ "/sub/foo/index.html",
+ FILE_9,
+ 1162
+ },
+ {
+ "/sub/foo/index.js",
+ FILE_10,
+ 324
+ },
+ {
+ "/sub/foo/custom.html",
+ FILE_11,
+ 1165
+ },
+};
+
+static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);
+
+bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
+ for (int i = 0; i < virtual_files_count; ++i) {
+ if (strcmp(virtual_files[i].path, path) == 0) {
+ *file = virtual_files[i].data;
+ *length = virtual_files[i].length;
+ return true;
+ }
+ }
+ return false;
+}
+
+const void* vfs(const char* path, int* length) {
+ const unsigned char* file_data;
+ int file_length;
+
+ if (virtual_file_system(path, &file_data, &file_length)) {
+ const char* content_type = webui_get_mime_type(path);
+ const char* http_header_template = "HTTP/1.1 200 OK\r\n"
+ "Content-Type: %s\r\n"
+ "Content-Length: %d\r\n"
+ "Cache-Control: no-cache\r\n\r\n";
+ int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
+ *length = header_length + file_length;
+ unsigned char* response = (unsigned char*) webui_malloc(*length);
+ snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
+ memcpy(response + header_length, file_data, file_length);
+ return response;
+ }
+ return NULL;
+}
+
+#endif // VIRTUAL_FILE_SYSTEM_H
diff --git a/v2/webui/examples/C/test_index_redirect/vfs.py b/v2/webui/examples/C/test_index_redirect/vfs.py
new file mode 100644
index 0000000..57e4dfd
--- /dev/null
+++ b/v2/webui/examples/C/test_index_redirect/vfs.py
@@ -0,0 +1,99 @@
+# WebUI Library
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# WebUI Virtual File System Generator
+# v2.0
+
+import os
+import sys
+
+def generate_vfs_header(directory, output_header):
+ files = []
+
+ for root, _, filenames in os.walk(directory):
+ for filename in filenames:
+ filepath = os.path.join(root, filename)
+ relative_path = os.path.relpath(filepath, directory)
+ # Ensure path starts with a slash
+ relative_path = '/' + relative_path.replace('\\', '/')
+ files.append((relative_path, filepath))
+
+ with open(output_header, 'w') as header:
+ header.write('#ifndef VIRTUAL_FILE_SYSTEM_H\n')
+ header.write('#define VIRTUAL_FILE_SYSTEM_H\n\n')
+
+ header.write('typedef struct {\n')
+ header.write(' const char *path;\n')
+ header.write(' const unsigned char *data;\n')
+ header.write(' int length;\n')
+ header.write('} VirtualFile;\n\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(f'static const unsigned char FILE_{i}[] = {{')
+ header.write(','.join(f'0x{byte:02x}' for byte in data))
+ header.write('};\n\n')
+
+ header.write('\nstatic const VirtualFile virtual_files[] = {\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(' {\n')
+ header.write(f' "{relative_path}",\n')
+ header.write(f' FILE_{i},\n')
+ header.write(f' {len(data)}\n')
+ header.write(' },\n')
+
+ header.write('};\n\n')
+
+ header.write('static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);\n\n')
+
+ header.write('bool virtual_file_system(const char* path, const unsigned char** file, int* length) {\n')
+ header.write(' for (int i = 0; i < virtual_files_count; ++i) {\n')
+ header.write(' if (strcmp(virtual_files[i].path, path) == 0) {\n')
+ header.write(' *file = virtual_files[i].data;\n')
+ header.write(' *length = virtual_files[i].length;\n')
+ header.write(' return true;\n')
+ header.write(' }\n')
+ header.write(' }\n')
+ header.write(' return false;\n')
+ header.write('}\n\n')
+
+ header.write('const void* vfs(const char* path, int* length) {\n')
+ header.write(' const unsigned char* file_data;\n')
+ header.write(' int file_length;\n\n')
+
+ header.write(' if (virtual_file_system(path, &file_data, &file_length)) {\n')
+ header.write(' const char* content_type = webui_get_mime_type(path);\n')
+ header.write(' const char* http_header_template = "HTTP/1.1 200 OK\\r\\n"\n')
+ header.write(' "Content-Type: %s\\r\\n"\n')
+ header.write(' "Content-Length: %d\\r\\n"\n')
+ header.write(' "Cache-Control: no-cache\\r\\n\\r\\n";\n')
+ header.write(' int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);\n')
+ header.write(' *length = header_length + file_length;\n')
+ header.write(' unsigned char* response = (unsigned char*) webui_malloc(*length);\n')
+ header.write(' snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);\n')
+ header.write(' memcpy(response + header_length, file_data, file_length);\n')
+ header.write(' return response;\n')
+ header.write(' }\n')
+ header.write(' return NULL;\n')
+ header.write('}\n\n')
+
+ header.write('#endif // VIRTUAL_FILE_SYSTEM_H\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print(f'Usage: {sys.argv[0]} ')
+ sys.exit(1)
+
+ directory = sys.argv[1]
+ output_header = sys.argv[2]
+ generate_vfs_header(directory, output_header)
+ print(f'Generated {output_header} from {directory}')
diff --git a/v2/webui/examples/C/text-editor/GNUmakefile b/v2/webui/examples/C/text-editor/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/text-editor/Makefile b/v2/webui/examples/C/text-editor/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/text-editor/README.md b/v2/webui/examples/C/text-editor/README.md
new file mode 100644
index 0000000..f16fc64
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/README.md
@@ -0,0 +1,29 @@
+# WebUI C - Text Editor
+
+This [text editor](https://github.com/webui-dev/webui/tree/main/examples/C/text-editor) is a lightweight and portable example written in C using WebUI as the GUI library.
+
+
+
+
+
+- **Windows**
+
+ ```sh
+ # GCC
+ mingw32-make
+ ```
+
+- **Linux**
+
+ ```sh
+ # GCC
+ make
+
+ # Clang
+ make CC=clang
+ ```
+
+- **macOS**
+ ```sh
+ make
+ ```
diff --git a/v2/webui/examples/C/text-editor/main.c b/v2/webui/examples/C/text-editor/main.c
new file mode 100644
index 0000000..7dc11b4
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/main.c
@@ -0,0 +1,38 @@
+// Text Editor in C using WebUI
+
+#include "webui.h"
+
+void close_app(webui_event_t* e) {
+ printf("Exit.\n");
+
+ // Close all opened windows
+ webui_exit();
+}
+
+int main() {
+
+ // Create a new window
+ int MainWindow = webui_new_window();
+
+ // Set the root folder for the UI
+ webui_set_root_folder(MainWindow, "ui");
+
+ // Bind HTML elements with the specified ID to C functions
+ webui_bind(MainWindow, "close_app", close_app);
+
+ // Show the window, preferably in a chromium based browser
+ if (!webui_show_browser(MainWindow, "index.html", AnyBrowser))
+ webui_show(MainWindow, "index.html");
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/text-editor/ui/css/all.min.css b/v2/webui/examples/C/text-editor/ui/css/all.min.css
new file mode 100644
index 0000000..164a7f9
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/css/all.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2024 Fonticons, Inc.
+ */
+.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}
+
+.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}
+.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/css/codemirror.min.css b/v2/webui/examples/C/text-editor/ui/css/codemirror.min.css
new file mode 100644
index 0000000..2ef25ea
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/css/codemirror.min.css
@@ -0,0 +1 @@
+.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:0;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:0}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/css/lucario.css b/v2/webui/examples/C/text-editor/ui/css/lucario.css
new file mode 100644
index 0000000..6dcdf8a
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/css/lucario.css
@@ -0,0 +1,39 @@
+/*
+ Name: lucario
+ Author: Raphael Amorim
+ Original Lucario color scheme (https://github.com/raphamorim/lucario)
+ Modified for WebUI Text Editor.
+*/
+
+.cm-s-lucario.CodeMirror, .cm-s-lucario .CodeMirror-gutters {
+ /* background-color: #2b3e50 !important; */
+ color: #f8f8f2 !important;
+ border: none;
+ background: #f8f9fa !important;
+ background-color: rgba(0, 0, 0, .0) !important;
+}
+.cm-s-lucario .CodeMirror-gutters { color: #2b3e50; }
+.cm-s-lucario .CodeMirror-cursor { border-left: solid thin #E6C845; }
+.cm-s-lucario .CodeMirror-linenumber { color: #f8f8f2; background-color: rgba(0, 0, 0, .2) !important; }
+.cm-s-lucario .CodeMirror-selected { background: #243443; }
+.cm-s-lucario .CodeMirror-line::selection, .cm-s-lucario .CodeMirror-line > span::selection, .cm-s-lucario .CodeMirror-line > span > span::selection { background: #243443; }
+.cm-s-lucario .CodeMirror-line::-moz-selection, .cm-s-lucario .CodeMirror-line > span::-moz-selection, .cm-s-lucario .CodeMirror-line > span > span::-moz-selection { background: #243443; }
+.cm-s-lucario span.cm-comment { color: #5c98cd; }
+.cm-s-lucario span.cm-string, .cm-s-lucario span.cm-string-2 { color: #E6DB74; }
+.cm-s-lucario span.cm-number { color: #ca94ff; }
+.cm-s-lucario span.cm-variable { color: #f8f8f2; }
+.cm-s-lucario span.cm-variable-2 { color: #f8f8f2; }
+.cm-s-lucario span.cm-def { color: #72C05D; }
+.cm-s-lucario span.cm-operator { color: #66D9EF; }
+.cm-s-lucario span.cm-keyword { color: #ff6541; }
+.cm-s-lucario span.cm-atom { color: #bd93f9; }
+.cm-s-lucario span.cm-meta { color: #f8f8f2; }
+.cm-s-lucario span.cm-tag { color: #ff6541; }
+.cm-s-lucario span.cm-attribute { color: #66D9EF; }
+.cm-s-lucario span.cm-qualifier { color: #72C05D; }
+.cm-s-lucario span.cm-property { color: #f8f8f2; }
+.cm-s-lucario span.cm-builtin { color: #72C05D; }
+.cm-s-lucario span.cm-variable-3, .cm-s-lucario span.cm-type { color: #ffb86c; }
+.cm-s-lucario .CodeMirror-activeline-background { background: #243443; }
+.cm-s-lucario .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
+.cm-s-lucario .CodeMirror-scroll { overflow: hidden; }
diff --git a/v2/webui/examples/C/text-editor/ui/css/style.css b/v2/webui/examples/C/text-editor/ui/css/style.css
new file mode 100644
index 0000000..f893718
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/css/style.css
@@ -0,0 +1,113 @@
+body {
+ margin: 0;
+ padding: 0;
+ height: 100vh;
+ font-family: 'Courier New', Courier, monospace;
+ background-image: linear-gradient(to right top, #8e44ad 0%, #3498db 100%);
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: cover;
+ background-attachment: fixed;
+ color: #ddecf9;
+}
+
+.topbar {
+ width: 100%;
+ height: 4px;
+ background-image: linear-gradient(to right, #4ed2e7 0%, #db57eb 50%, #f98818 100%);
+}
+
+header {
+ color: #fff;
+}
+
+/* Nav */
+
+nav {
+ background: linear-gradient(
+ 90deg,
+ rgba(255, 255, 255, 0) 0%,
+ rgba(255, 255, 255, 0.2) 25%,
+ rgba(255, 255, 255, 0.2) 75%,
+ rgba(255, 255, 255, 0) 100%
+ );
+ box-shadow:
+ 0 0 25px rgba(0, 0, 0, 0.1),
+ inset 0 0 1px rgba(255, 255, 255, 0.6);
+ text-align: center;
+}
+
+nav button {
+ background: none;
+ border: none;
+ text-shadow: 1px 1px 2px #000000;
+ font-family: 'Font Awesome 5 Free';
+ font-size: 18px;
+ color: #ddecf9;
+ cursor: pointer;
+ margin: 0 auto;
+ padding: 18px;
+}
+
+nav button:hover {
+ box-shadow:
+ 0 0 10px rgba(0, 0, 0, 0.1),
+ inset 0 0 1px rgba(255, 255, 255, 0.6);
+ background: rgba(255, 255, 255, 0.1);
+}
+
+nav #save-btn:disabled {
+ pointer-events: none;
+ color: #7ca0df;
+}
+
+nav button i {
+ /* Click through the icon in the button */
+ pointer-events: none;
+}
+
+/* Code */
+
+.main {
+ padding: 0px;
+}
+
+/* About */
+
+.about-box {
+ display: none;
+ position: fixed;
+ z-index: 1;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-image: linear-gradient(to right top, #8e44ad 0%, #3498db 100%);
+}
+
+.about-box-content {
+ background-image: linear-gradient(to right top, #8e44ad 0%, #3498db 100%);
+ position: absolute;
+ margin: 0;
+ padding: 10px;
+ width: 30%;
+ border-radius: 5px;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+.about-box-content h1 {
+ text-align: center;
+}
+
+.about-box-content a {
+ color: inherit;
+}
+
+.CodeMirror {
+ height: 100%;
+ font-family: 'Courier New', Courier, monospace;
+ font-size: 16px;
+ text-shadow: 1px 1px 2px #000000;
+}
diff --git a/v2/webui/examples/C/text-editor/ui/img/icon.png b/v2/webui/examples/C/text-editor/ui/img/icon.png
new file mode 100644
index 0000000..7ed05be
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/img/icon.png differ
diff --git a/v2/webui/examples/C/text-editor/ui/index.html b/v2/webui/examples/C/text-editor/ui/index.html
new file mode 100644
index 0000000..dd1650d
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/index.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ Text Editor in C using WebUI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
WebUI Text Editor
+ v1.1
+
Example of a text editor software in C using WebUI library.
+
webui.me | (C)2025 Hassan Draga
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/text-editor/ui/js/clike.min.js b/v2/webui/examples/C/text-editor/ui/js/clike.min.js
new file mode 100644
index 0000000..6e22a31
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/js/clike.min.js
@@ -0,0 +1 @@
+!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(M){"use strict";function L(e,t,n,r,o,a){this.indented=e,this.column=t,this.type=n,this.info=r,this.align=o,this.prev=a}function D(e,t,n,r){var o=e.indented;e.context&&"statement"==e.context.type&&"statement"!=n&&(o=e.context.indented),e.context=new L(o,t,n,r,null,e.context)}function P(e){var t=e.context.type;return")"!=t&&"]"!=t&&"}"!=t||(e.indented=e.context.indented),e.context=e.context.prev}function E(e,t,n){return"variable"==t.prevToken||"type"==t.prevToken||(!!/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||(!(!t.typeAtEndOfLine||e.column()!=e.indentation())||void 0))}function z(e){for(;;){if(!e||"top"==e.type)return 1;if("}"==e.type&&"namespace"!=e.prev.info)return;e=e.prev}}function e(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/,S=a.isIdentifierChar||/[\w\$_\xa1-\uffff]/,T=a.isReservedIdentifier||!1;function C(e,t){var a,n=e.next();if(y[n]){var r=y[n](e,t);if(!1!==r)return r}if('"'==n||"'"==n)return t.tokenize=(a=n,function(e,t){for(var n,r=!1,o=!1;null!=(n=e.next());){if(n==a&&!r){o=!0;break}r=!r&&"\\"==n}return!o&&(r||g)||(t.tokenize=null),"string"}),t.tokenize(e,t);if(v.test(n)){if(e.backUp(1),e.match(w))return"number";e.next()}if(x.test(n))return i=n,null;if("/"==n){if(e.eat("*"))return(t.tokenize=I)(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(_.test(n)){for(;!e.match(/^\/[\/*]/,!1)&&e.eat(_););return"operator"}if(e.eatWhile(S),b)for(;e.match(b);)e.eatWhile(S);r=e.current();return F(o,r)?(F(p,r)&&(i="newstatement"),F(m,r)&&(l=!0),"keyword"):F(d,r)?"type":F(f,r)||T&&T(r)?(F(p,r)&&(i="newstatement"),"builtin"):F(h,r)?"atom":"variable"}function I(e,t){for(var n,r=!1;n=e.next();){if("/"==n&&r){t.tokenize=null;break}r="*"==n}return"comment"}function N(e,t){a.typeFirstDefinitions&&e.eol()&&z(t.context)&&(t.typeAtEndOfLine=E(e,t,e.pos))}return{startState:function(e){return{tokenize:null,context:new L((e||0)-s,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(e,t){var n=t.context;if(e.sol()&&(null==n.align&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return N(e,t),null;i=l=null;var r,o=(t.tokenize||C)(e,t);if("comment"==o||"meta"==o)return o;if(null==n.align&&(n.align=!0),";"==i||":"==i||","==i&&e.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==t.context.type;)P(t);else if("{"==i)D(t,e.column(),"}");else if("["==i)D(t,e.column(),"]");else if("("==i)D(t,e.column(),")");else if("}"==i){for(;"statement"==n.type;)n=P(t);for("}"==n.type&&(n=P(t));"statement"==n.type;)n=P(t)}else i==n.type?P(t):k&&(("}"==n.type||"top"==n.type)&&";"!=i||"statement"==n.type&&"newstatement"==i)&&D(t,e.column(),"statement",e.current());return"variable"==o&&("def"==t.prevToken||a.typeFirstDefinitions&&E(e,t,e.start)&&z(t.context)&&e.match(/^\s*\(/,!1))&&(o="def"),"def"==(o=y.token&&void 0!==(r=y.token(e,t,o))?r:o)&&!1===a.styleDefs&&(o="variable"),t.startOfLine=!1,t.prevToken=l?"def":o||i,N(e,t),o},indent:function(e,t){if(e.tokenize!=C&&null!=e.tokenize||e.typeAtEndOfLine)return M.Pass;var n=e.context,r=t&&t.charAt(0),o=r==n.type;if("statement"==n.type&&"}"==r&&(n=n.prev),a.dontIndentStatements)for(;"statement"==n.type&&a.dontIndentStatements.test(n.info);)n=n.prev;if(y.indent){e=y.indent(e,n,t,s);if("number"==typeof e)return e}e=n.prev&&"switch"==n.prev.info;if(a.allmanIndentation&&/[{(]/.test(r)){for(;"top"!=n.type&&"}"!=n.type;)n=n.prev;return n.indented}return"statement"==n.type?n.indented+("{"==r?0:c):!n.align||u&&")"==n.type?")"!=n.type||o?n.indented+(o?0:s)+(o||!e||/^(?:case|default)\b/.test(t)?0:s):n.indented+c:n.column+(o?0:1)},electricInput:e?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"brace"}});var t="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile inline restrict asm fortran",n="alignas alignof and and_eq audit axiom bitand bitor catch class compl concept constexpr const_cast decltype delete dynamic_cast explicit export final friend import module mutable namespace new noexcept not not_eq operator or or_eq override private protected public reinterpret_cast requires static_assert static_cast template this thread_local throw try typeid typename using virtual xor xor_eq",r="bycopy byref in inout oneway out self super atomic nonatomic retain copy readwrite readonly strong weak assign typeof nullable nonnull null_resettable _cmd @interface @implementation @end @protocol @encode @property @synthesize @dynamic @class @public @package @private @protected @required @optional @try @catch @finally @import @selector @encode @defs @synchronized @autoreleasepool @compatibility_alias @available",o="FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS NS_REQUIRES_NIL_TERMINATION NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME NS_REFINED_FOR_SWIFT",a=e("int long char short double float unsigned signed void bool"),i=e("SEL instancetype id Class Protocol BOOL");function l(e){return F(a,e)||/.+_t$/.test(e)}function s(e){return l(e)||F(i,e)}var c="case do else for if switch while struct enum union",u="struct enum union";function d(e,t){if(!t.startOfLine)return!1;for(var n,r=null;n=e.peek();){if("\\"==n&&e.match(/^.$/)){r=d;break}if("/"==n&&e.match(/^\/[\/\*]/,!1))break;e.next()}return t.tokenize=r,"meta"}function f(e,t){return"type"==t.prevToken&&"type"}function p(e){return!(!e||e.length<2)&&("_"==e[0]&&("_"==e[1]||e[1]!==e[1].toLowerCase()))}function m(e){return e.eatWhile(/[\w\.']/),"number"}function h(e,t){var n;return e.backUp(1),e.match(/^(?:R|u8R|uR|UR|LR)/)?!!(n=e.match(/^"([^\s\\()]{0,16})\(/))&&(t.cpp11RawStringDelim=n[1],(t.tokenize=k)(e,t)):e.match(/^(?:u8|u|U|L)/)?!!e.match(/^["']/,!1)&&"string":(e.next(),!1)}function y(e){e=/(\w+)::~?(\w+)$/.exec(e);return e&&e[1]==e[2]}function g(e,t){for(var n;null!=(n=e.next());)if('"'==n&&!e.eat('"')){t.tokenize=null;break}return"string"}function k(e,t){var n=t.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");return e.match(new RegExp(".*?\\)"+n+'"'))?t.tokenize=null:e.skipToEnd(),"string"}function b(e,t){"string"==typeof e&&(e=[e]);var n=[];function r(e){if(e)for(var t in e)e.hasOwnProperty(t)&&n.push(t)}r(t.keywords),r(t.types),r(t.builtin),r(t.atoms),n.length&&(t.helperType=e[0],M.registerHelper("hintWords",e[0],n));for(var o=0;o!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return!!e.match('""')&&(t.tokenize=x,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(e,t){var n=t.context;return!("}"!=n.type||!n.align||!e.eat(">"))&&(t.context=new L(n.indented,n.column,n.type,n.info,null,n.prev),"operator")},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=v(1),t.tokenize(e,t))}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}}),b("text/x-kotlin",{name:"clike",keywords:e("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value"),types:e("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:e("catch class do else finally for if where try while enum"),defKeywords:e("class val var object interface fun"),atoms:e("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,t){return"."==t.prevToken?"variable":"operator"},'"':function(e,t){var a;return t.tokenize=(a=e.match('""'),function(e,t){for(var n,r=!1,o=!1;!e.eol();){if(!a&&!r&&e.match('"')){o=!0;break}if(a&&e.match('"""')){o=!0;break}n=e.next(),!r&&"$"==n&&e.match("{")&&e.skipTo("}"),r=!r&&"\\"==n&&!a}return!o&&a||(t.tokenize=null),"string"}),t.tokenize(e,t)},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=v(1),t.tokenize(e,t))},indent:function(e,t,n,r){var o=n&&n.charAt(0);return"}"!=e.prevToken&&")"!=e.prevToken||""!=n?"operator"==e.prevToken&&"}"!=n&&"}"!=e.context.type||"variable"==e.prevToken&&"."==o||("}"==e.prevToken||")"==e.prevToken)&&"."==o?2*r+t.indented:t.align&&"}"==t.type?t.indented+(e.context.type==(n||"").charAt(0)?0:r):void 0:e.indented}},modeProps:{closeBrackets:{triples:'"'}}}),b(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:e("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:e("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:e("for while do if else struct"),builtin:e("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:e("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":d},modeProps:{fold:["brace","include"]}}),b("text/x-nesc",{name:"clike",keywords:e(t+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:l,blockKeywords:e(c),atoms:e("null true false"),hooks:{"#":d},modeProps:{fold:["brace","include"]}}),b("text/x-objectivec",{name:"clike",keywords:e(t+" "+r),types:s,builtin:e(o),blockKeywords:e(c+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:e(u+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:e("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:p,hooks:{"#":d,"*":f},modeProps:{fold:["brace","include"]}}),b("text/x-objectivec++",{name:"clike",keywords:e(t+" "+r+" "+n),types:s,builtin:e(o),blockKeywords:e(c+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:e(u+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:e("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:p,hooks:{"#":d,"*":f,u:h,U:h,L:h,R:h,0:m,1:m,2:m,3:m,4:m,5:m,6:m,7:m,8:m,9:m,token:function(e,t,n){if("variable"==n&&"("==e.peek()&&(";"==t.prevToken||null==t.prevToken||"}"==t.prevToken)&&y(e.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),b("text/x-squirrel",{name:"clike",keywords:e("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:l,blockKeywords:e("case catch class else for foreach if switch try while"),defKeywords:e("function local class"),typeFirstDefinitions:!0,atoms:e("true false null"),hooks:{"#":d},modeProps:{fold:["brace","include"]}});var w=null;b("text/x-ceylon",{name:"clike",keywords:e("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){e=e.charAt(0);return e===e.toUpperCase()&&e!==e.toLowerCase()},blockKeywords:e("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:e("class dynamic function interface module object package value"),builtin:e("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:e("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return t.tokenize=function a(i){return function(e,t){for(var n,r=!1,o=!1;!e.eol();){if(!r&&e.match('"')&&("single"==i||e.match('""'))){o=!0;break}if(!r&&e.match("``")){w=a(i),o=!0;break}n=e.next(),r="single"==i&&!r&&"\\"==n}return o&&(t.tokenize=null),"string"}}(e.match('""')?"triple":"single"),t.tokenize(e,t)},"`":function(e,t){return!(!w||!e.match("`"))&&(t.tokenize=w,w=null,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(e,t,n){if(("variable"==n||"type"==n)&&"."==t.prevToken)return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})});
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/js/codemirror.min.js b/v2/webui/examples/C/text-editor/ui/js/codemirror.min.js
new file mode 100644
index 0000000..7ce788f
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/js/codemirror.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,l=navigator.platform,d=/gecko\/\d/i.test(e),s=/MSIE \d/.test(e),a=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),u=/Edge\/(\d+)/.exec(e),w=s||a||u,v=w&&(s?document.documentMode||6:+(u||a)[1]),x=!u&&/WebKit\//.test(e),s=x&&/Qt\/\d+\.\d+/.test(e),m=!u&&/Chrome\/(\d+)/.exec(e),V=m&&+m[1],K=/Opera\//.test(e),j=/Apple Computer/.test(navigator.vendor),c=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),X=/PhantomJS/.test(e),Y=j&&(/Mobile\/\w+/.test(e)||2t)return i;o.to==t&&(o.from!=o.to&&"before"==n?r=i:We=i),o.from==t&&(o.from!=o.to&&"before"!=n?r=i:We=i)}return null!=r?r:We}Fe=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,Pe=/[stwN]/,Ee=/[LRr]/,Ie=/[Lb1n]/,ze=/[1n]/;var Fe,Pe,Ee,Ie,ze,Re=function(e,t){var n="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!Fe.test(e))return!1;for(var r,i=e.length,o=[],l=0;l=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t=e.first&&tn?F(n,W(e,n).text.length):(e=W(e,(n=t).line).text.length,null==(t=n.ch)||e=this.string.length},g.prototype.sol=function(){return this.pos==this.lineStart},g.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},g.prototype.next=function(){if(this.post},g.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},g.prototype.skipToEnd=function(){this.pos=this.string.length},g.prototype.skipTo=function(e){e=this.string.indexOf(e,this.pos);if(-1e.options.maxHighlightLength&&ht(e.doc.mode,r.state),o=Nt(e,t,r),i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))),t.styles}function At(n,r,e){var t=n.doc,i=n.display;if(!t.mode.startState)return new Mt(t,!0,r);var o=function(e,t,n){for(var r,i,o=e.doc,l=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;lt.first&&W(t,o-1).stateAfter,s=l?Mt.fromSaved(t,l,o):new Mt(t,ft(t.mode),o);return t.iter(o,r,function(e){Dt(n,e.text,s);var t=s.line;e.stateAfter=t==r-1||t%5==0||t>=i.viewFrom&&tt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}Mt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},Mt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Mt.prototype.nextLine=function(){this.line++,0e.options.maxHighlightLength?(s=!1,l&&Dt(e,t,r,c.pos),c.pos=t.length,null):Et(Ht(n,c,r.state,h),o);if(!h||(d=h[0].name)&&(f="m-"+(f?d+" "+f:d)),!s||u!=f){for(;a=t:l.to>t),(r=r||[]).push(new Bt(s,l.from,o?null:l.to)))}return r}(n,r,o),s=function(e,t,n){var r;if(e)for(var i=0;i=t:l.to>t))&&(l.from!=t||"bookmark"!=s.type||n&&!l.marker.insertLeft)||(o=null==l.from||(s.inclusiveLeft?l.from<=t:l.frome.lastLine())return t;var n,r=W(e,t);if(!nn(e,r))return t;for(;n=Zt(r);)r=n.find(1,!0).line;return H(r)+1}function nn(e,t){var n=Rt&&t.markedSpans;if(n)for(var r,i=0;in.maxLineLength&&(n.maxLineLength=t,n.maxLine=e)})}var sn=function(e,t,n){this.text=e,jt(this,t),this.height=n?n(this):1};sn.prototype.lineNo=function(){return H(this)},Xe(sn);var an={},un={};function cn(e,t){if(!e||/^\s*$/.test(e))return null;t=t.addModeClass?un:an;return t[e]||(t[e]=e.replace(/\S+/g,"cm-$&"))}function hn(e,t){var n=ne("span",null,null,x?"padding-right: .1px":null),r={pre:ne("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0,l=(r.pos=0,r.addToken=fn,function(e){if(null!=Je)return Je;var t=y(e,document.createTextNode("AخA")),n=le(t,0,1).getBoundingClientRect(),t=le(t,1,2).getBoundingClientRect();return te(e),n&&n.left!=n.right&&(Je=t.right-n.right<3)}(e.display.measure)&&(l=Ge(o,e.doc.direction))&&(r.addToken=function(h,d){return function(e,t,n,r,i,o,l){n=n?n+" cm-force-border":"cm-force-border";for(var s=e.pos,a=s+t.length;;){for(var u=void 0,c=0;cs&&u.from<=s);c++);if(u.to>=a)return h(e,t,n,r,i,o,l);h(e,t.slice(0,u.to-s),n,r,null,o,l),r=null,t=t.slice(u.to-s),s=u.to}}}(r.addToken,l)),r.map=[],t!=e.display.externalMeasured&&H(o));!function(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var l,s,a,u,c,h,d,f=i.length,p=0,g=1,m="",v=0;;){if(v==p){a=u=c=s="",h=d=null,v=1/0;for(var y=[],b=void 0,w=0;wp||C.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&v>x.to&&(v=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==v&&(b=b||[]).push(C.endStyle,x.to),C.title&&((d=d||{}).title=C.title),C.attributes)for(var S in C.attributes)(d=d||{})[S]=C.attributes[S];C.collapsed&&(!h||$t(h.marker,C)<0)&&(h=x)}else x.from>p&&v>x.from&&(v=x.from)}if(b)for(var L=0;Ln)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function En(e,t,n,r){return Rn(e,zn(e,t),n,r)}function In(e,t){if(t>=e.display.viewFrom&&t=e.lineN&&tt)&&(i=(o=a-s)-1,a<=t&&(l="right")),null!=i){if(r=e[u+2],s==a&&n==(r.insertLeft?"left":"right")&&(l=n),"left"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],l="left";if("right"==n&&i==a-s)for(;u=i.text.length?(t=i.text.length,e="before"):t<=0&&(t=0,e="after"),!a)return s("before"==e?t-1:t,"before"==e);function u(e,t,n){return s(n?e-1:e,1==a[t].level!=n)}var c=He(a,t,e),h=We,c=u(t,c,"before"==e);return null!=h&&(c.other=u(t,h,"before"!=e)),c}function Jn(e,t){var n=0,t=(t=E(e.doc,t),e.options.lineWrapping||(n=ar(e.display)*t.ch),W(e.doc,t.line)),e=rn(t)+On(e.display);return{left:n,right:n,top:e,bottom:e+t.height}}function er(e,t,n,r,i){e=F(e,t,n);return e.xRel=i,r&&(e.outside=r),e}function tr(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return er(r.first,0,null,-1,-1);var i=vt(r,n),o=r.first+r.size-1;if(o=a.bottom?1:0)}return c=Ae(e.text,c,1),er(t,c,g,f,r-p)}(e,l,i,t,n),a=function(e,t){var n,r=Rt&&e.markedSpans;if(r)for(var i=0;it)&&(!n||$t(n,o.marker)<0)&&(n=o.marker)}return n}(l,s.ch+(0r},i,e)}}function rr(e,t,n,r){return nr(e,t,n=n||zn(e,t),_n(e,t,Rn(e,n,r),"line").top)}function ir(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function or(n,r,i,o,l,s,a){var e,t=De(function(e){var e=l[e],t=1!=e.level;return ir(Qn(n,F(i,t?e.to:e.from,t?"before":"after"),"line",r,o),s,a,!0)},0,l.length-1),u=l[t];return 0a&&(u=l[t-1])),u}function lr(e,t,n,r,i,o,l){for(var l=nr(e,t,r,l),s=l.begin,a=l.end,u=(/\s/.test(t.text.charAt(a-1))&&a--,null),c=null,h=0;h=a||f.to<=s||(d=(d=Rn(e,r,1!=f.level?Math.min(a,f.to)-1:Math.max(s,f.from)).right)a?{from:u.from,to:a,level:u.level}:u}function sr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Bn){Bn=M("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Bn.appendChild(document.createTextNode("x")),Bn.appendChild(M("br"));Bn.appendChild(document.createTextNode("x"))}y(e.measure,Bn);var n=Bn.offsetHeight/50;return 3=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;rt)&&(o.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=o.viewTo?Rt&&en(e.doc,t)o.viewFrom?mr(e):(o.viewFrom+=r,o.viewTo+=r):t<=o.viewFrom&&n>=o.viewTo?mr(e):t<=o.viewFrom?(l=vr(e,n,n+r,1))?(o.view=o.view.slice(l.index),o.viewFrom=l.lineN,o.viewTo+=r):mr(e):n>=o.viewTo?(l=vr(e,t,t,-1))?(o.view=o.view.slice(0,l.index),o.viewTo=l.lineN):mr(e):(l=vr(e,t,t,-1),i=vr(e,n,n+r,1),l&&i?(o.view=o.view.slice(0,l.index).concat(mn(e,l.lineN,i.lineN)).concat(o.view.slice(i.index)),o.viewTo+=r):mr(e)),o.externalMeasured);l&&(n=i.lineN&&t=r.viewTo||null!=(i=r.view[pr(e,t)]).node&&-1==L(r=i.changes||(i.changes=[]),n)&&r.push(n)}function mr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function vr(e,t,n,r){var i,o=pr(e,t),l=e.display.view;if(!Rt||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,a=0;a=e.display.viewTo||s.to().linet||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?"rtl":"ltr",o),i=!0)}i||r(t,n,"ltr")}(C,g||0,null==m?b:m,function(e,t,n,r){var i,o,l,s,a,u="ltr"==n,c=w(e,u?"left":"right"),h=w(t-1,u?"right":"left"),d=null==g&&0==e,f=null==m&&t==b,p=0==r,r=!C||r==C.length-1;h.top-c.top<=3?(i=(k?d:f)&&p?S:(u?c:h).left,a=(k?f:d)&&r?L:(u?h:c).right,T(i,c.top,a-i,c.bottom)):(a=u?(o=k&&d&&p?S:c.left,l=k?L:x(e,n,"before"),s=k?S:x(t,n,"after"),k&&f&&r?L:h.right):(o=k?x(e,n,"before"):S,l=!k&&d&&p?L:c.right,s=!k&&f&&r?S:h.left,k?x(t,n,"after"):L),T(o,c.top,l-o,c.bottom),c.bottome.display.sizerWidth&&((a=Math.ceil(c/ar(e.display)))>e.display.maxLineLength&&(e.display.maxLineLength=a,e.display.maxLine=s.line,e.display.maxLineChanged=!0))}}2=o&&(i=vt(t,rn(W(t,n))-e.wrapper.clientHeight),o=n)),{from:i,to:Math.max(o,i+1)}}function Dr(e,t){var n=e.display,r=sr(e.display),i=(t.top<0&&(t.top=0),(e.curOp&&null!=e.curOp.scrollTop?e.curOp:n.scroller).scrollTop),o=Fn(e),l={},s=(t.bottom-t.top>o&&(t.bottom=t.top+o),e.doc.height+An(n)),a=t.tops-r,r=(t.topi+o&&((a=Math.min(t.top,(r?s:t.bottom)-o))!=i&&(l.scrollTop=a)),e.options.fixedGutter?0:n.gutters.offsetWidth),s=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-r,o=Hn(e)-n.gutters.offsetWidth,i=t.right-t.left>o;return i&&(t.right=t.left+o),t.left<10?l.scrollLeft=0:t.lefto+s-3&&(l.scrollLeft=t.right+(i?0:10)-o),l}function Wr(e,t){null!=t&&(Pr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc:e.curOp).scrollTop+t)}function Hr(e){Pr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Fr(e,t,n){null==t&&null==n||Pr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Pr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Er(e,Jn(e,t.from),Jn(e,t.to),t.margin))}function Er(e,t,n,r){t=Dr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Fr(e,t.scrollLeft,t.scrollTop)}function Ir(e,t){Math.abs(e.doc.scrollTop-t)<2||(d||ti(e,{top:t}),zr(e,t,!0),d&&ti(e),qr(e,100))}function zr(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),e.display.scroller.scrollTop==t&&!n||(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Rr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,ii(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Br(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+An(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Wn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}function Gr(e,t,n){this.cm=n;var r=this.vert=M("div",[M("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=M("div",[M("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),k(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),k(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,w&&v<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function Ur(){}Gr.prototype.update=function(e){var t,n=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,i=e.nativeBarWidth;return r?(this.vert.style.display="block",this.vert.style.bottom=n?i+"px":"0",t=e.viewHeight-(n?i:0),this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+t)+"px"):(this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0"),n?(this.horiz.style.display="block",this.horiz.style.right=r?i+"px":"0",this.horiz.style.left=e.barLeft+"px",t=e.viewWidth-e.barLeft-(r?i:0),this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+t)+"px"):(this.horiz.style.display="",this.horiz.firstChild.style.width="0"),!this.checkedZeroWidth&&0=l.viewTo)||l.maxLineChanged&&o.options.lineWrapping,i.update=i.mustUpdate&&new Qr(o,i.mustUpdate&&{top:i.scrollTop,ensure:i.scrollToPos},i.forceUpdate)}for(var s=0;s(i.defaultView.innerHeight||i.documentElement.clientHeight)&&(r=!1),null==r||X||(o=M("div","",null,"position: absolute;\n top: "+(t.top-n.viewOffset-On(e.display))+"px;\n height: "+(t.bottom-t.top+Wn(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;"),e.display.lineSpace.appendChild(o),o.scrollIntoView(r),e.display.lineSpace.removeChild(o)))}(w,v));var S=b.maybeHiddenMarkers,L=b.maybeUnhiddenMarkers;if(S)for(var k=0;k=l.display.viewTo||(s=+new Date+l.options.workTime,a=At(l,c.highlightFrontier),u=[],c.iter(a.line,Math.min(c.first+c.size,l.display.viewTo+500),function(e){if(a.line>=l.display.viewFrom){for(var t=e.styles,n=e.text.length>l.options.maxHighlightLength?ht(c.mode,a.state):null,r=Nt(l,e,a,!0),n=(n&&(a.state=n),e.styles=r.styles,e.styleClasses),r=r.classes,i=(r?e.styleClasses=r:n&&(e.styleClasses=null),!t||t.length!=e.styles.length||n!=r&&(!n||!r||n.bgClass!=r.bgClass||n.textClass!=r.textClass)),o=0;!i&&os)return qr(l,l.options.workDelay),!0}),c.highlightFrontier=a.line,c.modeFrontier=Math.max(c.modeFrontier,a.line),u.length&&h(l,function(){for(var e=0;e=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==yr(e))return!1;oi(e)&&(mr(e),t.dims=ur(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin),r=(n.viewFroml&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),Rt&&(o=en(e.doc,o),l=tn(e.doc,l)),o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth),i=(i=o,o=l,0==(c=(l=e).display).view.length||i>=c.viewTo||o<=c.viewFrom?(c.view=mn(l,i,o),c.viewFrom=i):(c.viewFrom>i?c.view=mn(l,i,c.viewFrom).concat(c.view):c.viewFromo&&(c.view=c.view.slice(0,pr(l,o)))),c.viewTo=o,n.viewOffset=rn(W(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px",yr(e));if(!r&&0==i&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var l=function(e){if(e.hasFocus())return null;if(!(n=N(ae(e)))||!re(e.display.lineDiv,n))return null;var t,n={activeElt:n};return window.getSelection&&(t=ue(e).getSelection()).anchorNode&&t.extend&&re(e.display.lineDiv,t.anchorNode)&&(n.anchorNode=t.anchorNode,n.anchorOffset=t.anchorOffset,n.focusNode=t.focusNode,n.focusOffset=t.focusOffset),n}(e),s=(4=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!Jr(e,t))break;Nr(e);var i=Br(e);br(e),Vr(e,i),ri(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function ti(e,t){var n,t=new Qr(e,t);Jr(e,t)&&(Nr(e),ei(e,t),n=Br(e),br(e),Vr(e,n),ri(e,n),t.finish())}function ni(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",b(e,"gutterChanged",e)}function ri(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Wn(e)+"px"}function ii(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=cr(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+"px",l=0;ll.clientWidth,a=l.scrollHeight>l.clientHeight;if(r&&s||n&&a){if(n&&C&&x)e:for(var u=t.target,c=o.view;u!=l;u=u.parentNode)for(var h=0;hs-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=(o=l).lastOp==r?(Ai(o.done),z(o.done)):o.done.length&&!z(o.done).ranges?z(o.done):1l.undoDepth;)l.done.shift(),l.done[0].ranges||l.done.shift()}l.done.push(n),l.generation=++l.maxGeneration,l.lastModTime=l.lastSelTime=s,l.lastOp=l.lastSelOp=r,l.lastOrigin=l.lastSelOrigin=t.origin,i||O(e,"historyAdded")}function Wi(e,t,n,r){var i,o,l,s=e.history,a=r&&r.origin;n==s.lastSelOp||a&&s.lastSelOrigin==a&&(s.lastModTime==s.lastSelTime&&s.lastOrigin==a||(e=e,i=a,o=z(s.done),l=t,"*"==(i=i.charAt(0))||"+"==i&&o.ranges.length==l.ranges.length&&o.somethingSelected()==l.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)))?s.done[s.done.length-1]=t:Hi(t,s.done),s.lastSelTime=+new Date,s.lastSelOrigin=a,s.lastSelOp=n,r&&!1!==r.clearRedo&&Ai(s.undone)}function Hi(e,t){var n=z(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Fi(t,n,e,r){var i=n["spans_"+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,r),function(e){e.markedSpans&&((i=i||(n["spans_"+t.id]={}))[o]=e.markedSpans),++o})}function Pi(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=[],i=0;i=t.ch:s.to>t.ch))){if(i&&(O(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(a.atomic){if(n){var s=a.find(r<0?1:-1),h=void 0;if((s=(r<0?c:u)?qi(e,s,-r,s&&s.line==t.line?o:null):s)&&s.line==t.line&&(h=P(s,n))&&(r<0?h<0:0e.first?E(e,F(t.line-1)):null:0e.lastLine())){t.from.linei?{from:t.from,to:F(i,W(e,i).text.length),text:[t.text[0]],origin:t.origin}:t).removed=pt(e,t.from,t.to),n=n||bi(e,t),e.cm){var i=e.cm,o=t,l=r,s=i.doc,a=i.display,u=o.from,c=o.to,h=!1,d=u.line,f=(i.options.lineWrapping||(d=H(Jt(W(s,u.line))),s.iter(d,c.line+1,function(e){if(e==a.maxLine)return h=!0})),-1a.maxLineLength&&(a.maxLine=e,a.maxLineLength=t,a.maxLineChanged=!0,h=!1)}),h&&(i.curOp.updateMaxLine=!0)),s),p=u.line;if(f.modeFrontier=Math.min(f.modeFrontier,p),!(f.highlightFrontiert.display.maxLineLength&&(t.display.maxLine=u,t.display.maxLineLength=c,t.display.maxLineChanged=!0)}null!=r&&t&&this.collapsed&&I(t,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&Xi(t.doc)),t&&b(t,"markerCleared",t,this,r,i),n&&_r(t),this.parent&&this.parent.clear()}},po.prototype.find=function(e,t){var n,r;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(i,o,l){i=E(this,i),o=E(this,o);var s=[],a=i.line;return this.iter(i.line,o.line+1,function(e){var t=e.markedSpans;if(t)for(var n=0;n=r.to||null==r.from&&a!=i.line||null!=r.from&&a==o.line&&r.from>=o.ch||l&&!l(r.marker)||s.push(r.marker.parent||r.marker)}++a}),s},getAllMarks:function(){var r=[];return this.iter(function(e){var t=e.markedSpans;if(t)for(var n=0;nt&&(t=e.from),null!=e.to&&e.toe.text.length?null:t}function Uo(e,t,n){e=Go(e,t.ch,n);return null==e?null:new F(t.line,e,n<0?"after":"before")}function Vo(e,t,n,r,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o,l,s,a,e=Ge(n,t.doc.direction);if(e)return o=i<0==(1==(e=i<0?z(e):e[0]).level)?"after":"before",0=n.text.length?(s.ch=n.text.length,s.sticky="before"):s.ch<=0&&(s.ch=0,s.sticky="after");var r=He(a,s.ch,s.sticky),i=a[r];if("ltr"==t.doc.direction&&i.level%2==0&&(0s.ch:i.from=i.from&&d>=c.begin))return new F(s.line,d,h?"before":"after")}function f(e,t,n){for(var r=function(e,t){return t?new F(s.line,u(e,1),"before"):new F(s.line,e,"after")};0<=e&&el.doc.first&&((n=W(l.doc,e.line-1).text)&&(e=new F(e.line,1),l.replaceRange(t.charAt(0)+l.doc.lineSeparator()+n.charAt(n.length-1),F(e.line-1,n.length-1),e,"+transpose")))),i.push(new G(e,e)));l.setSelections(i)})},newlineAndIndent:function(r){return h(r,function(){for(var e=(t=r.listSelections()).length-1;0<=e;e--)r.replaceRange(r.doc.lineSeparator(),t[e].anchor,t[e].head,"+input");for(var t=r.listSelections(),n=0;nc&&t.push(new G(F(s,c),F(s,ye(u,l,n))))}t.length||t.push(new G(f,f)),U(g,gi(d,y.ranges.slice(0,v).concat(t),v),{origin:"*mouse",scroll:!1}),d.scrollIntoView(e)}else{var h,r=m,i=sl(d,e,p.unit),e=r.anchor,e=0=n.to||o.linea.bottom?20:0)&&setTimeout(R(d,function(){u==i&&(l.scroller.scrollTop+=r,e(t))}),50))}:n)(e)}),i=R(d,n);d.state.selectingText=i,k(l.wrapper.ownerDocument,"mousemove",r),k(l.wrapper.ownerDocument,"mouseup",i)})(i,s,o,a)):qe(e)==h.scroller&&D(e):2==n?(t&&Ri(c.doc,t),setTimeout(function(){return h.input.focus()},20)):3==n&&(Q?c.display.input.onContextMenu(e):kr(c)))))}function sl(e,t,n){if("char"==n)return new G(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new G(F(t.line,0),E(e.doc,F(t.line+1,0)));n=n(e,t);return new G(n.from,n.to)}function al(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&D(t);var l=e.display,r=l.lineDiv.getBoundingClientRect();if(o>r.bottom||!je(e,n))return $e(t);o-=r.top-l.viewOffset;for(var s=0;s=i)return O(e,n,e,vt(e.doc,o),e.display.gutterSpecs[s].className,t),$e(t)}}function ul(e,t){return al(e,t,"gutterClick",!0)}function cl(e,t){var n,r;Nn(e.display,t)||(r=t,je(n=e,"gutterContextMenu")&&al(n,r,"gutterContextMenu",!1))||A(e,t,"contextmenu")||Q||e.display.input.onContextMenu(t)}function hl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),jn(e)}rl.prototype.compare=function(e,t,n){return this.time+400>e&&0==P(t,this.pos)&&n==this.button};var dl={toString:function(){return"CodeMirror.Init"}},fl={},pl={};function gl(e,t,n){!t!=!(n&&n!=dl)&&(n=e.display.dragFunctions,(t=t?k:T)(e.display.scroller,"dragstart",n.start),t(e.display.scroller,"dragenter",n.enter),t(e.display.scroller,"dragover",n.over),t(e.display.scroller,"dragleave",n.leave),t(e.display.scroller,"drop",n.drop))}function ml(e){e.options.lineWrapping?(ie(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(ee(e.display.wrapper,"CodeMirror-wrap"),ln(e)),dr(e),I(e),jn(e),setTimeout(function(){return Vr(e)},100)}function p(e,t){var n=this;if(!(this instanceof p))return new p(e,t);this.options=t=t?he(t):{},he(fl,t,!1);var r,i=t.value,o=("string"==typeof i?i=new f(i,t.mode,null,t.lineSeparator,t.direction):t.mode&&(i.modeOption=t.mode),this.doc=i,new p.inputStyles[t.inputStyle](this)),e=this.display=new ui(e,i,o,t),l=(hl(e.wrapper.CodeMirror=this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Xr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new de,keySeq:null,specialChars:null},t.autofocus&&!_&&e.input.focus(),w&&v<11&&setTimeout(function(){return n.display.input.reset(!0)},20),this),s=l.display;k(s.scroller,"mousedown",R(l,ll)),k(s.scroller,"dblclick",w&&v<11?R(l,function(e){var t;A(l,e)||(!(t=fr(l,e))||ul(l,e)||Nn(l.display,e)||(D(e),e=l.findWordAt(t),Ri(l.doc,e.anchor,e.head)))}):function(e){return A(l,e)||D(e)}),k(s.scroller,"contextmenu",function(e){return cl(l,e)}),k(s.input.getField(),"contextmenu",function(e){s.scroller.contains(e.target)||cl(l,e)});var a,u={end:0};function c(){s.activeTouch&&(a=setTimeout(function(){return s.activeTouch=null},1e3),(u=s.activeTouch).end=+new Date)}function h(e,t){if(null==t.left)return 1;var n=t.left-e.left,t=t.top-e.top;return 400o.first?S(W(o,t-1).text,null,l):0:"add"==n?c=a+e.options.indentUnit:"subtract"==n?c=a-e.options.indentUnit:"number"==typeof n&&(c=a+n);var c=Math.max(0,c),h="",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(c/l);f;--f)d+=l,h+="\t";if(dl,a=tt(t),u=null;if(s&&1l?"cut":"+input")});Ji(e.doc,f),b(e,"inputRead",e,f)}t&&!s&&Sl(e,t),Hr(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Cl(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");return n&&(e.preventDefault(),t.isReadOnly()||t.options.disableInput||!t.hasFocus()||h(t,function(){return xl(t,n,0,null,"paste")}),1)}function Sl(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;0<=r;r--){var i=n.ranges[r];if(!(100=n.first+n.size||(r=new F(e,r.ch,r.sticky),!(s=W(n,e))))return;r=Vo(l,n.cm,s,r.line,a)}else r=t;return 1}if("char"==o||"codepoint"==o)u();else if("column"==o)u(!0);else if("word"==o||"group"==o)for(var c=null,h="group"==o,d=n.cm&&n.cm.getHelper(r,"wordChars"),f=!0;!(i<0)||u(!f);f=!1){var p=s.text.charAt(r.ch)||"\n",p=Te(p,d)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||f||p||(p="s"),c&&c!=p){i<0&&(i=1,u(),r.sticky="after");break}if(p&&(c=p),0=s.height){l.hitSide=!0;break}o+=5*n}return l}function r(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new de,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null}function Ol(e,t){var n=In(e,t.line);if(!n||n.hidden)return null;var r=W(e.doc,t.line),n=Pn(n,r,t.line),r=Ge(r,e.doc.direction),e="left",r=(r&&(e=He(r,t.ch)%2?"right":"left"),Un(n.map,t.ch,e));return r.offset="right"==r.collapse?r.end:r.start,r}function Al(e,t){return t&&(e.bad=!0),e}function Dl(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Al(e.clipPos(F(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i=t.display.viewTo||n.line=t.display.viewFrom&&Ol(t,r)||{node:i[0].measure.map[2],offset:0},r=n.linet.firstLine()&&(i=F(i.line-1,W(t.doc,i.line-1).length)),r.ch==W(t.doc,r.line).text.length&&r.linen.viewTo-1)return!1;var o,l=i.line==n.viewFrom||0==(l=pr(t,i.line))?(e=H(n.view[0].line),n.view[0].node):(e=H(n.view[l].line),n.view[l-1].node.nextSibling),r=pr(t,r.line),n=r==n.view.length-1?(o=n.viewTo-1,n.lineDiv.lastChild):(o=H(n.view[r+1].line)-1,n.view[r+1].node.previousSibling);if(!l)return!1;for(var s=t.doc.splitLines(function(o,e,t,l,s){var n="",a=!1,u=o.doc.lineSeparator(),c=!1;function h(){a&&(n+=u,c&&(n+=u),a=c=!1)}function d(e){e&&(h(),n+=e)}for(;!function e(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)d(n);else if(n=t.getAttribute("cm-marker"))(n=o.findMarks(F(l,0),F(s+1,0),(i=+n,function(e){return e.id==i}))).length&&(n=n[0].find(0))&&d(pt(o.doc,n.from,n.to).join(u));else if("false"!=t.getAttribute("contenteditable")&&(n=/^(pre|div|p|li|table|br)$/i.test(t.nodeName),/^br$/i.test(t.nodeName)||0!=t.textContent.length)){n&&h();for(var r=0;ri.ch&&p.charCodeAt(p.length-c-1)==g.charCodeAt(g.length-c-1);)u--,c++;s[s.length-1]=p.slice(0,p.length-c).replace(/^\u200b+/,""),s[0]=s[0].slice(u).replace(/\u200b+$/,"");r=F(e,u),l=F(o,a.length?z(a).length-c:0);return 1n&&(yl(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&Hr(this));else{for(var o=i.from(),i=i.to(),l=Math.max(n,o.line),n=Math.min(this.lastLine(),i.line-(i.ch?0:1))+1,s=l;s>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]l)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=l&&(a=e.bottom),u+t.offsetWidth>o&&(u=o-t.offsetWidth)),t.style.top=a+"px",t.style.left=t.style.right="","right"==i?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?u=0:"middle"==i&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+"px"),n&&(r=this,l={left:u,top:a,right:u+t.offsetWidth,bottom:a+t.offsetHeight},null!=(l=Dr(r,l)).scrollTop&&Ir(r,l.scrollTop),null!=l.scrollLeft&&Rr(r,l.scrollLeft))},triggerOnKeyDown:t(el),triggerOnKeyPress:t(nl),triggerOnKeyUp:tl,triggerOnMouseDown:t(ll),execCommand:function(e){if(jo.hasOwnProperty(e))return jo[e].call(null,this)},triggerElectric:t(function(e){Sl(this,e)}),findPosH:function(e,t,n,r){for(var i=1,o=(t<0&&(i=-1,t=-t),E(this.doc,e)),l=0;l*\/]/.test(r)?(a="select-op",null):"."==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?a="qualifier":/[:;{}\[\]\(\)]/.test(r)?v(null,r):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=z),a="variable","variable callee"):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),a="word","property"):a=null})(e,t);return r&&"object"==typeof r&&(a=r[1],r=r[0]),i=r,"comment"!=a&&(t.state=_[t.state](a,e,t)),i},indent:function(e,t){var e=e.context,t=t&&t.charAt(0),r=e.indent;return(e="prop"!=e.type||"}"!=t&&")"!=t?e:e.prev).prev&&("}"!=t||"block"!=e.type&&"top"!=e.type&&"interpolation"!=e.type&&"restricted_atBlock"!=e.type?(")"!=t||"parens"!=e.type&&"atBlock_parens"!=e.type)&&("{"!=t||"at"!=e.type&&"atBlock"!=e.type)||(r=Math.max(0,e.indent-n)):r=(e=e.prev).indent),r},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:k,fold:"brace"}});var t=["domain","regexp","url","url-prefix"],r=e(t),o=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],i=e(o),a=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme","dynamic-range","video-dynamic-range"],n=e(a),l=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light","standard","high"],s=e(l),c=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-content","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],d=e(c),p=["accent-color","aspect-ratio","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","content-visibility","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","overflow-anchor","overscroll-behavior","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],u=e(p),m=e(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),g=e(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),b=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],h=e(b),f=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","blur","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","brightness","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","contrast","copy","counter","counters","cover","crop","cross","crosshair","cubic-bezier","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","drop-shadow","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","grayscale","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","hue-rotate","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturate","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","sepia","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],k=e(f),t=t.concat(o).concat(a).concat(l).concat(c).concat(p).concat(b).concat(f);function y(e,t){for(var r,o=!1;null!=(r=e.next());){if(o&&"/"==r){t.tokenize=null;break}o="*"==r}return["comment","comment"]}T.registerHelper("hintWords","css",t),T.defineMIME("text/css",{documentTypes:r,mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:g,colorKeywords:h,valueKeywords:k,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=y)(e,t)}},name:"css"}),T.defineMIME("text/x-scss",{mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,colorKeywords:h,valueKeywords:k,fontProperties:m,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=y)(e,t):["operator","operator"]},":":function(e){return!!e.match(/^\s*\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return!!e.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),T.defineMIME("text/x-less",{mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,colorKeywords:h,valueKeywords:k,fontProperties:m,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=y)(e,t):["operator","operator"]},"@":function(e){return e.eat("{")?[null,"interpolation"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),T.defineMIME("text/x-gss",{documentTypes:r,mediaTypes:i,mediaFeatures:n,propertyKeywords:d,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:g,colorKeywords:h,valueKeywords:k,supportsAtComponent:!0,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=y)(e,t)}},name:"css",helperType:"gss"})});
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/js/javascript.min.js b/v2/webui/examples/C/text-editor/ui/js/javascript.min.js
new file mode 100644
index 0000000..0bf8e3c
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/js/javascript.min.js
@@ -0,0 +1 @@
+!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(rt){"use strict";rt.defineMode("javascript",function(e,l){var t,r,O,P,f=e.indentUnit,N=l.statementIndent,U=l.jsonld,o=l.json||U,W=!1!==l.trackScope,u=l.typescript,B=l.wordCharacters||/[\w$\xa1-\uffff]/,F=(e=n("keyword a"),t=n("keyword b"),r=n("keyword c"),O=n("keyword d"),P=n("operator"),{if:n("if"),while:e,with:e,else:t,do:t,try:t,finally:t,return:O,break:O,continue:O,new:n("new"),delete:r,void:r,throw:r,debugger:n("debugger"),var:n("var"),const:n("var"),let:n("var"),function:n("function"),catch:n("catch"),for:n("for"),switch:n("switch"),case:n("case"),default:n("default"),in:P,typeof:P,instanceof:P,true:e={type:"atom",style:"atom"},false:e,null:e,undefined:e,NaN:e,Infinity:e,this:n("this"),class:n("class"),super:n("atom"),yield:r,export:n("export"),import:n("import"),extends:r,await:r});function n(e){return{type:e,style:"keyword"}}var H,D,G=/[+\-*&%=<>!?|~^@]/,J=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function i(e,t,r){return H=e,D=r,t}function d(e,t){var a,r=e.next();if('"'==r||"'"==r)return t.tokenize=(a=r,function(e,t){var r,n=!1;if(U&&"@"==e.peek()&&e.match(J))return t.tokenize=d,i("jsonld-keyword","meta");for(;null!=(r=e.next())&&(r!=a||n);)n=!n&&"\\"==r;return n||(t.tokenize=d),i("string","string")}),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return i("number","number");if("."==r&&e.match(".."))return i("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return i(r);if("="==r&&e.eat(">"))return i("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return i("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),i("number","number");if("/"==r)return e.eat("*")?(t.tokenize=K)(e,t):e.eat("/")?(e.skipToEnd(),i("comment","comment")):tt(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),i("regexp","string-2")):(e.eat("="),i("operator","operator",e.current()));if("`"==r)return(t.tokenize=L)(e,t);if("#"==r&&"!"==e.peek())return e.skipToEnd(),i("meta","meta");if("#"==r&&e.eatWhile(B))return i("variable","property");if("<"==r&&e.match("!--")||"-"==r&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),i("comment","comment");if(G.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=r&&"="!=r||e.eat("="):/[<>*+\-|&?]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),"?"==r&&e.eat(".")?i("."):i("operator","operator",e.current());if(B.test(r)){e.eatWhile(B);r=e.current();if("."!=t.lastType){if(F.propertyIsEnumerable(r))return i((t=F[r]).type,t.style,r);if("async"==r&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return i("async","keyword",r)}return i("variable","variable",r)}}function K(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=d;break}n="*"==r}return i("comment","comment")}function L(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=d;break}n=!n&&"\\"==r}return i("quasi","string-2",e.current())}function Q(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){!u||(n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r)))&&(r=n.index);for(var n,a=0,i=!1,o=r-1;0<=o;--o){var c=e.string.charAt(o),s="([{}])".indexOf(c);if(0<=s&&s<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(3<=s&&s<6)++a;else if(B.test(c))i=!0;else if(/["'\/`]/.test(c))for(;;--o){if(0==o)return;if(e.string.charAt(o-1)==c&&"\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function X(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function Y(e,t,r,n,a){var i=e.cc;for(c.state=e,c.stream=a,c.marked=null,c.cc=i,c.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():o?x:b)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return c.marked?c.marked:"variable"==r&&function(e,t){if(W){for(var r=e.localVars;r;r=r.next)if(r.name==t)return 1;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return 1}}(e,n)?"variable-2":t}}var c={state:null,column:null,marked:null,cc:null};function s(){for(var e=arguments.length-1;0<=e;e--)c.cc.push(arguments[e])}function p(){return s.apply(null,arguments),!0}function Z(e,t){for(var r=t;r;r=r.next)if(r.name==e)return 1}function a(e){var t=c.state;if(c.marked="def",W){if(t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var r=function e(t,r){{var n;return r?r.block?(n=e(t,r.prev))?n==r.prev?r:new te(n,r.vars,!0):null:Z(t,r.vars)?r:new te(r.prev,new re(t,r.vars),!1):null}}(e,t.context);if(null!=r)return void(t.context=r)}else if(!Z(e,t.localVars))return void(t.localVars=new re(e,t.localVars));l.globalVars&&!Z(e,t.globalVars)&&(t.globalVars=new re(e,t.globalVars))}}function ee(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function te(e,t,r){this.prev=e,this.vars=t,this.block=r}function re(e,t){this.name=e,this.next=t}var ne=new re("this",new re("arguments",null));function m(){c.state.context=new te(c.state.context,c.state.localVars,!1),c.state.localVars=ne}function ae(){c.state.context=new te(c.state.context,c.state.localVars,!0),c.state.localVars=null}function k(){c.state.localVars=c.state.context.vars,c.state.context=c.state.context.prev}function v(n,a){function e(){var e=c.state,t=e.indented;if("stat"==e.lexical.type)t=e.lexical.indented;else for(var r=e.lexical;r&&")"==r.type&&r.align;r=r.prev)t=r.indented;e.lexical=new X(t,c.stream.column(),n,null,e.lexical,a)}return e.lex=!0,e}function y(){var e=c.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function w(r){return function e(t){return t==r?p():";"==r||"}"==t||")"==t||"]"==t?s():p(e)}}function b(e,t){return"var"==e?p(v("vardef",t),qe,w(";"),y):"keyword a"==e?p(v("form"),oe,b,y):"keyword b"==e?p(v("form"),b,y):"keyword d"==e?c.stream.match(/^\s*$/,!1)?p():p(v("stat"),g,w(";"),y):"debugger"==e?p(w(";")):"{"==e?p(v("}"),ae,be,y,k):";"==e?p():"if"==e?("else"==c.state.lexical.info&&c.state.cc[c.state.cc.length-1]==y&&c.state.cc.pop()(),p(v("form"),oe,b,y,Oe)):"function"==e?p(q):"for"==e?p(v("form"),ae,Pe,b,k,y):"class"==e||u&&"interface"==t?(c.marked="keyword",p(v("form","class"==e?e:t),Fe,y)):"variable"==e?u&&"declare"==t?(c.marked="keyword",p(b)):u&&("module"==t||"enum"==t||"type"==t)&&c.stream.match(/^\s*\w/,!1)?(c.marked="keyword","enum"==t?p(Ze):"type"==t?p(We,w("operator"),z,w(";")):p(v("form"),T,w("{"),v("}"),be,y,y)):u&&"namespace"==t?(c.marked="keyword",p(v("form"),x,b,y)):u&&"abstract"==t?(c.marked="keyword",p(b)):p(v("stat"),me):"switch"==e?p(v("form"),oe,w("{"),v("}","switch"),ae,be,y,y,k):"case"==e?p(x,w(":")):"default"==e?p(w(":")):"catch"==e?p(v("form"),m,ie,b,y,k):"export"==e?p(v("stat"),Ge,y):"import"==e?p(v("stat"),Ke,y):"async"==e?p(b):"@"==t?p(x,b):s(v("stat"),x,w(";"),y)}function ie(e){if("("==e)return p(S,w(")"))}function x(e,t){return ce(e,t,!1)}function h(e,t){return ce(e,t,!0)}function oe(e){return"("!=e?s():p(v(")"),g,w(")"),y)}function ce(e,t,r){if(c.state.fatArrowAt==c.stream.start){var n=r?fe:le;if("("==e)return p(m,v(")"),V(S,")"),y,w("=>"),n,k);if("variable"==e)return s(m,T,w("=>"),n,k)}var a,n=r?M:j;return R.hasOwnProperty(e)?p(n):"function"==e?p(q,n):"class"==e||u&&"interface"==t?(c.marked="keyword",p(v("form"),Be,y)):"keyword c"==e||"async"==e?p(r?h:x):"("==e?p(v(")"),g,w(")"),y,n):"operator"==e||"spread"==e?p(r?h:x):"["==e?p(v("]"),Ye,y,n):"{"==e?we(ve,"}",null,n):"quasi"==e?s(se,n):"new"==e?p((a=r,function(e){return"."==e?p(a?pe:de):"variable"==e&&u?p(Ie,a?M:j):s(a?h:x)})):p()}function g(e){return e.match(/[;\}\)\],]/)?s():s(x)}function j(e,t){return","==e?p(g):M(e,t,!1)}function M(e,t,r){var n=0==r?j:M,a=0==r?x:h;return"=>"==e?p(m,r?fe:le,k):"operator"==e?/\+\+|--/.test(t)||u&&"!"==t?p(n):u&&"<"==t&&c.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?p(v(">"),V(z,">"),y,n):"?"==t?p(x,w(":"),a):p(a):"quasi"==e?s(se,n):";"!=e?"("==e?we(h,")","call",n):"."==e?p(ke,n):"["==e?p(v("]"),g,w("]"),y,n):u&&"as"==t?(c.marked="keyword",p(z,n)):"regexp"==e?(c.state.lastType=c.marked="operator",c.stream.backUp(c.stream.pos-c.stream.start-1),p(a)):void 0:void 0}function se(e,t){return"quasi"!=e?s():"${"!=t.slice(t.length-2)?p(se):p(g,ue)}function ue(e){if("}"==e)return c.marked="string-2",c.state.tokenize=L,p(se)}function le(e){return Q(c.stream,c.state),s("{"==e?b:x)}function fe(e){return Q(c.stream,c.state),s("{"==e?b:h)}function de(e,t){if("target"==t)return c.marked="keyword",p(j)}function pe(e,t){if("target"==t)return c.marked="keyword",p(M)}function me(e){return":"==e?p(y,b):s(j,w(";"),y)}function ke(e){if("variable"==e)return c.marked="property",p()}function ve(e,t){return"async"==e?(c.marked="property",p(ve)):"variable"!=e&&"keyword"!=c.style?"number"==e||"string"==e?(c.marked=U?"property":c.style+" property",p(A)):"jsonld-keyword"==e?p(A):u&&ee(t)?(c.marked="keyword",p(ve)):"["==e?p(x,E,w("]"),A):"spread"==e?p(h,A):"*"==t?(c.marked="keyword",p(ve)):":"==e?s(A):void 0:(c.marked="property","get"==t||"set"==t?p(ye):(u&&c.state.fatArrowAt==c.stream.start&&(e=c.stream.match(/^\s*:\s*/,!1))&&(c.state.fatArrowAt=c.stream.pos+e[0].length),p(A)))}function ye(e){return"variable"!=e?s(A):(c.marked="property",p(q))}function A(e){return":"==e?p(h):"("==e?s(q):void 0}function V(n,a,i){function o(e,t){var r;return(i?-1"),z):"quasi"==e?s(Ve,I):void 0}function je(e){if("=>"==e)return p(z)}function Me(e){return e.match(/[\}\)\]]/)?p():","==e||";"==e?p(Me):s(Ae,Me)}function Ae(e,t){return"variable"==e||"keyword"==c.style?(c.marked="property",p(Ae)):"?"==t||"number"==e||"string"==e?p(Ae):":"==e?p(z):"["==e?p(w("variable"),xe,w("]"),Ae):"("==e?s(C,Ae):e.match(/[;\}\)\],]/)?void 0:p()}function Ve(e,t){return"quasi"!=e?s():"${"!=t.slice(t.length-2)?p(Ve):p(z,Ee)}function Ee(e){if("}"==e)return c.marked="string-2",c.state.tokenize=L,p(Ve)}function ze(e,t){return"variable"==e&&c.stream.match(/^\s*[?:]/,!1)||"?"==t?p(ze):":"==e?p(z):"spread"==e?p(ze):s(z)}function I(e,t){return"<"==t?p(v(">"),V(z,">"),y,I):"|"==t||"."==e||"&"==t?p(z):"["==e?p(z,w("]"),I):"extends"==t||"implements"==t?(c.marked="keyword",p(z)):"?"==t?p(z,w(":"),z):void 0}function Ie(e,t){if("<"==t)return p(v(">"),V(z,">"),y,I)}function Te(){return s(z,$e)}function $e(e,t){if("="==t)return p(z)}function qe(e,t){return"enum"==t?(c.marked="keyword",p(Ze)):s(T,E,$,_e)}function T(e,t){return u&&ee(t)?(c.marked="keyword",p(T)):"variable"==e?(a(t),p()):"spread"==e?p(T):"["==e?we(Se,"]"):"{"==e?we(Ce,"}"):void 0}function Ce(e,t){return"variable"!=e||c.stream.match(/^\s*:/,!1)?("variable"==e&&(c.marked="property"),"spread"==e?p(T):"}"==e?s():"["==e?p(x,w("]"),w(":"),Ce):p(w(":"),T,$)):(a(t),p($))}function Se(){return s(T,$)}function $(e,t){if("="==t)return p(h)}function _e(e){if(","==e)return p(qe)}function Oe(e,t){if("keyword b"==e&&"else"==t)return p(v("form","else"),b,y)}function Pe(e,t){return"await"==t?p(Pe):"("==e?p(v(")"),Ne,y):void 0}function Ne(e){return"var"==e?p(qe,Ue):("variable"==e?p:s)(Ue)}function Ue(e,t){return")"==e?p():";"==e?p(Ue):"in"==t||"of"==t?(c.marked="keyword",p(x,Ue)):s(x,Ue)}function q(e,t){return"*"==t?(c.marked="keyword",p(q)):"variable"==e?(a(t),p(q)):"("==e?p(m,v(")"),V(S,")"),y,he,b,k):u&&"<"==t?p(v(">"),V(Te,">"),y,q):void 0}function C(e,t){return"*"==t?(c.marked="keyword",p(C)):"variable"==e?(a(t),p(C)):"("==e?p(m,v(")"),V(S,")"),y,he,k):u&&"<"==t?p(v(">"),V(Te,">"),y,C):void 0}function We(e,t){return"keyword"==e||"variable"==e?(c.marked="type",p(We)):"<"==t?p(v(">"),V(Te,">"),y):void 0}function S(e,t){return"@"==t&&p(x,S),"spread"==e?p(S):u&&ee(t)?(c.marked="keyword",p(S)):u&&"this"==e?p(E,$):s(T,E,$)}function Be(e,t){return("variable"==e?Fe:He)(e,t)}function Fe(e,t){if("variable"==e)return a(t),p(He)}function He(e,t){return"<"==t?p(v(">"),V(Te,">"),y,He):"extends"==t||"implements"==t||u&&","==e?("implements"==t&&(c.marked="keyword"),p(u?z:x,He)):"{"==e?p(v("}"),_,y):void 0}function _(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||u&&ee(t))&&c.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(c.marked="keyword",p(_)):"variable"==e||"keyword"==c.style?(c.marked="property",p(De,_)):"number"==e||"string"==e?p(De,_):"["==e?p(x,E,w("]"),De,_):"*"==t?(c.marked="keyword",p(_)):u&&"("==e?s(C,_):";"==e||","==e?p(_):"}"==e?p():"@"==t?p(x,_):void 0}function De(e,t){if("!"==t)return p(De);if("?"==t)return p(De);if(":"==e)return p(z,$);if("="==t)return p(h);e=c.state.lexical.prev;return s(e&&"interface"==e.info?C:q)}function Ge(e,t){return"*"==t?(c.marked="keyword",p(Xe,w(";"))):"default"==t?(c.marked="keyword",p(x,w(";"))):"{"==e?p(V(Je,"}"),Xe,w(";")):s(b)}function Je(e,t){return"as"==t?(c.marked="keyword",p(w("variable"))):"variable"==e?s(h,Je):void 0}function Ke(e){return"string"==e?p():"("==e?s(x):"."==e?s(j):s(Le,Qe,Xe)}function Le(e,t){return"{"==e?we(Le,"}"):("variable"==e&&a(t),"*"==t&&(c.marked="keyword"),p(Re))}function Qe(e){if(","==e)return p(Le,Qe)}function Re(e,t){if("as"==t)return c.marked="keyword",p(Le)}function Xe(e,t){if("from"==t)return c.marked="keyword",p(x)}function Ye(e){return"]"==e?p():s(V(h,"]"))}function Ze(){return s(v("form"),T,w("{"),v("}"),V(et,"}"),y,y)}function et(){return s(T,$)}function tt(e,t,r){return t.tokenize==d&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return m.lex=ae.lex=!0,y.lex=k.lex=!0,{startState:function(e){e={tokenize:d,lastType:"sof",cc:[],lexical:new X((e||0)-f,0,"block",!1),localVars:l.localVars,context:l.localVars&&new te(null,null,!1),indented:e||0};return l.globalVars&&"object"==typeof l.globalVars&&(e.globalVars=l.globalVars),e},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),Q(e,t)),t.tokenize!=K&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==H?r:(t.lastType="operator"!=H||"++"!=D&&"--"!=D?H:"incdec",Y(t,r,H,D,e))},indent:function(e,t){if(e.tokenize==K||e.tokenize==L)return rt.Pass;if(e.tokenize!=d)return 0;var r,n=t&&t.charAt(0),a=e.lexical;if(!/^\s*else\b/.test(t))for(var i=e.cc.length-1;0<=i;--i){var o=e.cc[i];if(o==y)a=a.prev;else if(o!=Oe&&o!=k)break}for(;("stat"==a.type||"form"==a.type)&&("}"==n||(r=e.cc[e.cc.length-1])&&(r==j||r==M)&&!/^[,\.=+\-*:?[\(]/.test(t));)a=a.prev;var c,s=(a=N&&")"==a.type&&"stat"==a.prev.type?a.prev:a).type,u=n==s;return"vardef"==s?a.indented+("operator"==e.lastType||","==e.lastType?a.info.length+1:0):"form"==s&&"{"==n?a.indented:"form"==s?a.indented+f:"stat"==s?a.indented+(s=t,"operator"==(c=e).lastType||","==c.lastType||G.test(s.charAt(0))||/[,.]/.test(s.charAt(0))?N||f:0):"switch"!=a.info||u||0==l.doubleIndentSwitch?a.align?a.column+(u?0:1):a.indented+(u?0:f):a.indented+(/^(?:case|default)\b/.test(t)?f:2*f)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:o?null:"/*",blockCommentEnd:o?null:"*/",blockCommentContinue:o?null:" * ",lineComment:o?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:o?"json":"javascript",jsonldMode:U,jsonMode:o,expressionAllowed:tt,skipExpression:function(e){Y(e,"atom","atom","true",new rt.StringStream("",2,null))}}}),rt.registerHelper("wordChars","javascript",/[\w$]/),rt.defineMIME("text/javascript","javascript"),rt.defineMIME("text/ecmascript","javascript"),rt.defineMIME("application/javascript","javascript"),rt.defineMIME("application/x-javascript","javascript"),rt.defineMIME("application/ecmascript","javascript"),rt.defineMIME("application/json",{name:"javascript",json:!0}),rt.defineMIME("application/x-json",{name:"javascript",json:!0}),rt.defineMIME("application/manifest+json",{name:"javascript",json:!0}),rt.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),rt.defineMIME("text/typescript",{name:"javascript",typescript:!0}),rt.defineMIME("application/typescript",{name:"javascript",typescript:!0})});
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/js/python.min.js b/v2/webui/examples/C/text-editor/ui/js/python.min.js
new file mode 100644
index 0000000..6a64e54
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/js/python.min.js
@@ -0,0 +1 @@
+!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(x){"use strict";function k(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var _=k(["and","or","not","is"]),v=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in"],z=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function w(e){return e.scopes[e.scopes.length-1]}x.registerHelper("hintWords","python",v.concat(z)),x.defineMode("python",function(t,l){for(var s="error",o=l.delimiters||l.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,a=[l.singleOperators,l.doubleOperators,l.doubleDelimiters,l.tripleDelimiters,l.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],e=0;en;){if("py"!=w(t).type)return 1;t.scopes.pop()}return w(t).offset!=n}function g(e,t){e.sol()&&(t.beginningOfLine=!0,t.dedent=!1);var n,r,i,o=t.tokenize(e,t),a=e.current();if(t.beginningOfLine&&"@"==a)return e.match(c,!1)?"meta":p?"operator":s;if(/\S/.test(a)&&(t.beginningOfLine=!1),"variable"!=o&&"builtin"!=o||"meta"!=t.lastToken||(o="meta"),"pass"!=a&&"return"!=a||(t.dedent=!0),"lambda"==a&&(t.lambda=!0),":"==a&&!t.lambda&&"py"==w(t).type&&e.match(/^\s*(?:#|$)/,!1)&&b(t),1==a.length&&!/string|comment/.test(o)){var l="[({".indexOf(a);if(-1!=l&&(n=e,r=t,i="])}".slice(l,l+1),n=n.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:n.column()+1,r.scopes.push({offset:r.indent+f,type:i,align:n})),-1!=(l="])}".indexOf(a))){if(w(t).type!=a)return s;t.indent=t.scopes.pop().offset-f}}return t.dedent&&e.eol()&&"py"==w(t).type&&1 codeMirrorInstance.setValue(e.target.result);
+ reader.readAsText(file);
+}
+
+async function openFile() {
+ if (supportsFilePicker) {
+ [fileHandle] = await showOpenFilePicker({ multiple: false });
+ fileData = await fileHandle.getFile();
+ readFile(fileData);
+ setFile(fileData);
+ } else {
+ let input = document.createElement('input');
+ input.type = 'file';
+ input.onchange = (e) => {
+ readFile(e.target.files[0]);
+ setFile(e.target.files[0]);
+ };
+ input.click();
+ input.remove();
+ }
+}
+
+async function saveFile() {
+ const content = codeMirrorInstance.getValue();
+ if (supportsFilePicker) {
+ if (fileHandle) {
+ // Create a FileSystemWritableFileStream to write to
+ const writableStream = await fileHandle.createWritable();
+ await writableStream.write(content);
+ // Write to disk
+ await writableStream.close();
+ } else {
+ fileHandle = await showSaveFilePicker();
+ saveFile();
+ setFile(await fileHandle.getFile());
+ }
+ } else {
+ // Download the file if using filePicker with a fileHandle for saving
+ // is not supported by the browser. E.g., in Firefox.
+ const blobData = new Blob([content], { type: 'text/${currentFile.ext}' });
+ const urlToBlob = window.URL.createObjectURL(blobData);
+ const a = document.createElement('a');
+ a.style.setProperty('display', 'none');
+ a.href = urlToBlob;
+ a.download = document.title;
+ a.click();
+ window.URL.revokeObjectURL(urlToBlob);
+ a.remove();
+ }
+ saveBtn.disabled = true;
+}
+
+// Navigation Events
+// open
+document.getElementById('open-btn').onclick = openFile;
+// save
+saveBtn.onclick = saveFile;
+// about
+document.getElementById('about-btn').onclick = () => (aboutBox.style.display = 'block'); // show
+aboutBox.onclick = () => (aboutBox.style.display = 'none'); // hide
+
+// Editor Events
+// enable save on change
+codeMirrorInstance.on('change', () => {
+ saveBtn.disabled = false;
+});
+window.addEventListener('DOMContentLoaded', () => {
+ codeMirrorInstance.setSize('100%', '99%');
+});
diff --git a/v2/webui/examples/C/text-editor/ui/js/xml.min.js b/v2/webui/examples/C/text-editor/ui/js/xml.min.js
new file mode 100644
index 0000000..1b982a3
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/js/xml.min.js
@@ -0,0 +1 @@
+!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(y){"use strict";var C={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},z={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};y.defineMode("xml",function(t,e){var n,i,a,l=t.indentUnit,u={},r=e.htmlMode?C:z;for(n in r)u[n]=r[n];for(n in e)u[n]=e[n];function c(e,n){function t(t){return(n.tokenize=t)(e,n)}var r=e.next();return"<"==r?e.eat("!")?e.eat("[")?e.match("CDATA[")?t(o("atom","]]>")):null:e.match("--")?t(o("comment","--\x3e")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),t(function r(o){return function(t,e){for(var n;null!=(n=t.next());){if("<"==n)return e.tokenize=r(o+1),e.tokenize(t,e);if(">"==n){if(1!=o)return e.tokenize=r(o-1),e.tokenize(t,e);e.tokenize=c;break}}return"meta"}}(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),n.tokenize=o("meta","?>"),"meta"):(i=e.eat("/")?"closeTag":"openTag",n.tokenize=d,"tag bracket"):"&"==r?(e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"))?"atom":"error":(e.eatWhile(/[^&<]/),null)}function d(t,e){var n,r,o=t.next();return">"==o||"/"==o&&t.eat(">")?(e.tokenize=c,i=">"==o?"endTag":"selfcloseTag","tag bracket"):"="==o?(i="equals",null):"<"==o?(e.tokenize=c,e.state=p,e.tagName=e.tagStart=null,(n=e.tokenize(t,e))?n+" tag error":"tag error"):/[\'\"]/.test(o)?(e.tokenize=(r=o,a.isInAttribute=!0,a),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word");function a(t,e){for(;!t.eol();)if(t.next()==r){e.tokenize=d;break}return"string"}}function o(n,r){return function(t,e){for(;!t.eol();){if(t.match(r)){e.tokenize=c;break}t.next()}return n}}function s(t){return t&&t.toLowerCase()}function f(t,e,n){this.prev=t.context,this.tagName=e||"",this.indent=t.indented,this.startOfLine=n,(u.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function m(t){t.context&&(t.context=t.context.prev)}function g(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!u.contextGrabbers.hasOwnProperty(s(n))||!u.contextGrabbers[s(n)].hasOwnProperty(s(e)))return;m(t)}}function p(t,e,n){return"openTag"==t?(n.tagStart=e.column(),h):"closeTag"==t?x:p}function h(t,e,n){return"word"==t?(n.tagName=e.current(),a="tag",w):u.allowMissingTagName&&"endTag"==t?(a="tag bracket",w(t,0,n)):(a="error",h)}function x(t,e,n){var r;return"word"==t?(r=e.current(),n.context&&n.context.tagName!=r&&u.implicitlyClosed.hasOwnProperty(s(n.context.tagName))&&m(n),n.context&&n.context.tagName==r||!1===u.matchClosing?(a="tag",b):(a="tag error",k)):u.allowMissingTagName&&"endTag"==t?(a="tag bracket",b(t,0,n)):(a="error",k)}function b(t,e,n){return"endTag"!=t?(a="error",b):(m(n),p)}function k(t,e,n){return a="error",b(t,0,n)}function w(t,e,n){return"word"==t?(a="attribute",T):"endTag"==t||"selfcloseTag"==t?(r=n.tagName,o=n.tagStart,n.tagName=n.tagStart=null,"selfcloseTag"==t||u.autoSelfClosers.hasOwnProperty(s(r))?g(n,r):(g(n,r),n.context=new f(n,r,o==n.indented)),p):(a="error",w);var r,o}function T(t,e,n){return"equals"==t?v:(u.allowMissing||(a="error"),w(t,0,n))}function v(t,e,n){return"string"==t?N:"word"==t&&u.allowUnquoted?(a="string",w):(a="error",w(t,0,n))}function N(t,e,n){return"string"==t?N:w(t,0,n)}return c.isInText=!0,{startState:function(t){var e={tokenize:c,state:p,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;i=null;var n=e.tokenize(t,e);return(n||i)&&"comment"!=n&&(a=null,e.state=e.state(i||n,t,e),a&&(n="error"==a?n+" error":a)),n},indent:function(t,e,n){var r=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+l;if(r&&r.noIndent)return y.Pass;if(t.tokenize!=d&&t.tokenize!=c)return n?n.match(/^(\s*)/)[0].length:0;if(t.tagName)return!1!==u.multilineTagIndentPastTag?t.tagStart+t.tagName.length+2:t.tagStart+l*(u.multilineTagIndentFactor||1);if(u.alignCDATA&&/$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:u.htmlMode?"html":"xml",helperType:u.htmlMode?"html":"xml",skipAttribute:function(t){t.state==v&&(t.state=w)},xmlCurrentTag:function(t){return t.tagName?{name:t.tagName,close:"closeTag"==t.type}:null},xmlCurrentContext:function(t){for(var e=[],n=t.context;n;n=n.prev)e.push(n.tagName);return e.reverse()}}}),y.defineMIME("text/xml","xml"),y.defineMIME("application/xml","xml"),y.mimeModes.hasOwnProperty("text/html")||y.defineMIME("text/html",{name:"xml",htmlMode:!0})});
\ No newline at end of file
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.eot b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.eot
new file mode 100644
index 0000000..cba6c6c
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.eot differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.svg b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.svg
new file mode 100644
index 0000000..b9881a4
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.svg
@@ -0,0 +1,3717 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.ttf b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.ttf
new file mode 100644
index 0000000..8d75ded
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.ttf differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff
new file mode 100644
index 0000000..3375bef
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff2 b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000..402f81c
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-brands-400.woff2 differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.eot b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.eot
new file mode 100644
index 0000000..a4e5989
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.eot differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.svg b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.svg
new file mode 100644
index 0000000..463af27
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.svg
@@ -0,0 +1,801 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.ttf b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.ttf
new file mode 100644
index 0000000..7157aaf
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.ttf differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff
new file mode 100644
index 0000000..ad077c6
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff2 b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000..5632894
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-regular-400.woff2 differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.eot b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.eot
new file mode 100644
index 0000000..e994171
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.eot differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.svg b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.svg
new file mode 100644
index 0000000..00296e9
--- /dev/null
+++ b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.svg
@@ -0,0 +1,5034 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.ttf b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.ttf
new file mode 100644
index 0000000..25abf38
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.ttf differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff
new file mode 100644
index 0000000..23ee663
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff differ
diff --git a/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff2 b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..2217164
Binary files /dev/null and b/v2/webui/examples/C/text-editor/ui/webfonts/fa-solid-900.woff2 differ
diff --git a/v2/webui/examples/C/virtual_file_system/GNUmakefile b/v2/webui/examples/C/virtual_file_system/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/virtual_file_system/Makefile b/v2/webui/examples/C/virtual_file_system/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/virtual_file_system/main.c b/v2/webui/examples/C/virtual_file_system/main.c
new file mode 100644
index 0000000..c9a7669
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/main.c
@@ -0,0 +1,47 @@
+// Virtual File System Example
+
+#include "webui.h"
+#include "vfs.h"
+
+void exit_app(webui_event_t* e) {
+ webui_exit();
+}
+
+int main() {
+
+ // Create new windows
+ size_t MyWindow = webui_new_window();
+
+ // Bind HTML element IDs with a C functions
+ webui_bind(MyWindow, "Exit", exit_app);
+
+ // VSF (Virtual File System) Example
+ //
+ // 1. Run Python script to generate header file of a folder
+ // python vfs.py "/path/to/folder" "vfs.h"
+ //
+ // 2. Include header file in your C project
+ // #include "vfs.h"
+ //
+ // 3. use vfs in your custom files handler `webui_set_file_handler()`
+ // webui_set_file_handler(MyWindow, vfs);
+
+ // Set a custom files handler
+ webui_set_file_handler(MyWindow, vfs);
+
+ // Show a new window
+ // webui_show_browser(MyWindow, "index.html", Chrome);
+ webui_show(MyWindow, "index.html");
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/examples/C/virtual_file_system/ui/index.html b/v2/webui/examples/C/virtual_file_system/ui/index.html
new file mode 100644
index 0000000..8717413
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/ui/index.html
@@ -0,0 +1,135 @@
+
+
+
+
+ WebUI - Virtual File System
+
+
+
+ Virtual File System Example
+
+
+
+
+ This file is embedded in this application.
+
+
+
+ Exit
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/virtual_file_system/ui/sub/index.html b/v2/webui/examples/C/virtual_file_system/ui/sub/index.html
new file mode 100644
index 0000000..ae8e0ad
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/ui/sub/index.html
@@ -0,0 +1,64 @@
+
+
+
+
+ WebUI - Virtual File System
+
+
+
+
+ This is another file embedded in this application.
+
+
+ Exit
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/virtual_file_system/ui/svg/webui.svg b/v2/webui/examples/C/virtual_file_system/ui/svg/webui.svg
new file mode 100644
index 0000000..5cf0cf7
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/ui/svg/webui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/v2/webui/examples/C/virtual_file_system/vfs.h b/v2/webui/examples/C/virtual_file_system/vfs.h
new file mode 100644
index 0000000..a048d3f
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/vfs.h
@@ -0,0 +1,68 @@
+#ifndef VIRTUAL_FILE_SYSTEM_H
+#define VIRTUAL_FILE_SYSTEM_H
+
+typedef struct {
+ const char *path;
+ const unsigned char *data;
+ int length;
+} VirtualFile;
+
+static const unsigned char FILE_0[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x09,0x09,0x3c,0x68,0x33,0x20,0x69,0x64,0x3d,0x22,0x74,0x69,0x74,0x6c,0x65,0x22,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x3c,0x2f,0x68,0x33,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x69,0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x22,0x73,0x76,0x67,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x76,0x67,0x22,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x66,0x69,0x6c,0x65,0x20,0x69,0x73,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0a,0x09,0x09,0x3c,0x68,0x34,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x73,0x75,0x62,0x22,0x3e,0x2f,0x73,0x75,0x62,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x68,0x34,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x09,0x09,0x2f,0x2f,0x20,0x4a,0x61,0x76,0x61,0x53,0x63,0x72,0x69,0x70,0x74,0x20,0x45,0x78,0x61,0x6d,0x70,0x6c,0x65,0x0a,0x09,0x09,0x2f,0x2a,0x0a,0x09,0x09,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x61,0x64,0x64,0x45,0x76,0x65,0x6e,0x74,0x4c,0x69,0x73,0x74,0x65,0x6e,0x65,0x72,0x28,0x27,0x44,0x4f,0x4d,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x4c,0x6f,0x61,0x64,0x65,0x64,0x27,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x4f,0x4d,0x20,0x69,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2e,0x20,0x43,0x68,0x65,0x63,0x6b,0x20,0x69,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x21,0x3d,0x3d,0x20,0x27,0x75,0x6e,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x27,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x53,0x65,0x74,0x20,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x63,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x73,0x65,0x74,0x45,0x76,0x65,0x6e,0x74,0x43,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x28,0x28,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x65,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,0x68,0x65,0x64,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x65,0x20,0x3d,0x3d,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x65,0x76,0x65,0x6e,0x74,0x2e,0x44,0x49,0x53,0x43,0x4f,0x4e,0x4e,0x45,0x43,0x54,0x45,0x44,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x69,0x73,0x20,0x6c,0x6f,0x73,0x74,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2e,0x6c,0x6f,0x67,0x28,0x27,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x54,0x68,0x65,0x20,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x60,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x0a,0x09,0x09,0x09,0x09,0x61,0x6c,0x65,0x72,0x74,0x28,0x27,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x61,0x64,0x64,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x48,0x54,0x4d,0x4c,0x2e,0x27,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x0a,0x09,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x65,0x62,0x75,0x69,0x54,0x65,0x73,0x74,0x28,0x29,0x20,0x7b,0x0a,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x77,0x65,0x62,0x75,0x69,0x2e,0x69,0x73,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x28,0x29,0x29,0x20,0x7b,0x0a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x57,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x62,0x69,0x6e,0x64,0x20,0x61,0x20,0x66,0x75,0x6e,0x63,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x77,0x65,0x62,0x75,0x69,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x60,0x66,0x75,0x6e,0x63,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x69,0x6e,0x20,0x74,0x68,0x72,0x65,0x65,0x20,0x70,0x6c,0x61,0x63,0x65,0x73,0x3a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x20,0x20,0x3a,0x20,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x66,0x75,0x6e,0x63,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x4d,0x65,0x74,0x68,0x6f,0x64,0x20,0x20,0x20,0x3a,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x66,0x75,0x6e,0x63,0x27,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x5b,0x21,0x5d,0x20,0x4e,0x6f,0x74,0x65,0x3a,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x63,0x72,0x65,0x61,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x73,0x20,0x77,0x68,0x65,0x6e,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x61,0x20,0x73,0x69,0x6d,0x69,0x6c,0x61,0x72,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x61,0x6c,0x72,0x65,0x61,0x64,0x79,0x20,0x65,0x78,0x69,0x73,0x74,0x2e,0x0a,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6f,0x6f,0x20,0x3d,0x20,0x27,0x48,0x65,0x6c,0x6c,0x6f,0x27,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6e,0x73,0x74,0x20,0x62,0x61,0x72,0x20,0x3d,0x20,0x31,0x32,0x33,0x34,0x35,0x36,0x3b,0x0a,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6f,0x66,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x60,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x43,0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20,0x60,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x29,0x60,0x0a,0x09,0x09,0x09,0x09,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x2e,0x74,0x68,0x65,0x6e,0x28,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20,0x3d,0x3e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x44,0x6f,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x60,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x60,0x0a,0x09,0x09,0x09,0x09,0x7d,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x55,0x73,0x69,0x6e,0x67,0x20,0x61,0x77,0x61,0x69,0x74,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x61,0x77,0x61,0x69,0x74,0x20,0x77,0x65,0x62,0x75,0x69,0x2e,0x63,0x61,0x6c,0x6c,0x28,0x27,0x6d,0x79,0x42,0x61,0x63,0x6b,0x65,0x6e,0x64,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x27,0x2c,0x20,0x66,0x6f,0x6f,0x2c,0x20,0x62,0x61,0x72,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x2a,0x2f,0x0a,0x0a,0x09,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_1[] = {0x3c,0x21,0x64,0x6f,0x63,0x74,0x79,0x70,0x65,0x20,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x09,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x09,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x57,0x65,0x62,0x55,0x49,0x20,0x2d,0x20,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x46,0x69,0x6c,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6d,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x3c,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x09,0x09,0x62,0x6f,0x64,0x79,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d,0x69,0x6c,0x79,0x3a,0x20,0x27,0x41,0x72,0x69,0x61,0x6c,0x27,0x2c,0x20,0x73,0x61,0x6e,0x73,0x2d,0x73,0x65,0x72,0x69,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2d,0x67,0x72,0x61,0x64,0x69,0x65,0x6e,0x74,0x28,0x74,0x6f,0x20,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x23,0x35,0x30,0x37,0x64,0x39,0x31,0x2c,0x20,0x23,0x31,0x63,0x35,0x39,0x36,0x66,0x2c,0x20,0x23,0x30,0x32,0x32,0x37,0x33,0x37,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x38,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2c,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x3a,0x20,0x31,0x30,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x72,0x61,0x64,0x69,0x75,0x73,0x3a,0x20,0x33,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x3a,0x20,0x31,0x70,0x78,0x20,0x73,0x6f,0x6c,0x69,0x64,0x20,0x23,0x63,0x63,0x63,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x78,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x30,0x20,0x33,0x70,0x78,0x20,0x35,0x70,0x78,0x20,0x72,0x67,0x62,0x61,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2e,0x31,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x74,0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x30,0x2e,0x32,0x73,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x66,0x66,0x3b,0x0a,0x09,0x09,0x09,0x09,0x63,0x75,0x72,0x73,0x6f,0x72,0x3a,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65,0x3a,0x20,0x31,0x36,0x70,0x78,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x68,0x31,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x74,0x65,0x78,0x74,0x2d,0x73,0x68,0x61,0x64,0x6f,0x77,0x3a,0x20,0x2d,0x37,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x37,0x70,0x78,0x20,0x72,0x67,0x62,0x28,0x36,0x37,0x20,0x35,0x37,0x20,0x35,0x37,0x20,0x2f,0x20,0x37,0x36,0x25,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x3a,0x20,0x23,0x63,0x39,0x39,0x31,0x33,0x64,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x69,0x6e,0x70,0x75,0x74,0x3a,0x66,0x6f,0x63,0x75,0x73,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6f,0x75,0x74,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x6e,0x6f,0x6e,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x62,0x6f,0x72,0x64,0x65,0x72,0x2d,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x33,0x34,0x39,0x38,0x64,0x62,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x0a,0x09,0x09,0x09,0x61,0x3a,0x6c,0x69,0x6e,0x6b,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x64,0x35,0x37,0x32,0x33,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x61,0x3a,0x68,0x6f,0x76,0x65,0x72,0x20,0x7b,0x0a,0x09,0x09,0x09,0x09,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x23,0x66,0x30,0x62,0x63,0x61,0x63,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x3c,0x2f,0x73,0x74,0x79,0x6c,0x65,0x3e,0x0a,0x09,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0a,0x09,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x09,0x09,0x3c,0x70,0x3e,0x0a,0x09,0x09,0x09,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x66,0x69,0x6c,0x65,0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x2f,0x70,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x72,0x20,0x2f,0x3e,0x0a,0x09,0x09,0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x69,0x64,0x3d,0x22,0x45,0x78,0x69,0x74,0x22,0x3e,0x45,0x78,0x69,0x74,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e,0x0a,0x09,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x0a,0x09,0x3c,0x21,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x61,0x70,0x70,0x20,0x2d,0x2d,0x3e,0x0a,0x09,0x3c,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x77,0x65,0x62,0x75,0x69,0x2e,0x6a,0x73,0x22,0x3e,0x3c,0x2f,0x73,0x63,0x72,0x69,0x70,0x74,0x3e,0x0a,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a};
+
+static const unsigned char FILE_2[] = {0x3c,0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x70,0x78,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x62,0x78,0x3d,0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x62,0x6f,0x78,0x79,0x2d,0x73,0x76,0x67,0x2e,0x63,0x6f,0x6d,0x22,0x3e,0x20,0x3c,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x22,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0x20,0x3c,0x63,0x69,0x72,0x63,0x6c,0x65,0x20,0x63,0x78,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x63,0x79,0x3d,0x22,0x36,0x30,0x22,0x20,0x72,0x3d,0x22,0x31,0x36,0x2e,0x38,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0x20,0x3c,0x62,0x78,0x3a,0x67,0x72,0x69,0x64,0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x38,0x33,0x2e,0x33,0x36,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x39,0x36,0x2e,0x37,0x35,0x33,0x22,0x2f,0x3e,0x20,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0x20,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x31,0x32,0x30,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x32,0x61,0x36,0x36,0x39,0x39,0x22,0x20,0x6d,0x61,0x73,0x6b,0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x63,0x69,0x72,0x63,0x6c,0x65,0x2d,0x6d,0x61,0x73,0x6b,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x33,0x39,0x31,0x2e,0x30,0x37,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x38,0x36,0x2e,0x38,0x34,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x38,0x39,0x2e,0x30,0x32,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x32,0x2e,0x33,0x35,0x38,0x20,0x33,0x37,0x31,0x2e,0x35,0x38,0x34,0x20,0x4c,0x20,0x33,0x39,0x37,0x2e,0x32,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x33,0x39,0x39,0x2e,0x33,0x30,0x32,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x34,0x2e,0x31,0x34,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x4c,0x20,0x34,0x30,0x37,0x2e,0x35,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x39,0x2e,0x36,0x30,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x30,0x35,0x2e,0x33,0x37,0x38,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x30,0x33,0x2e,0x31,0x39,0x34,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x33,0x39,0x38,0x2e,0x32,0x33,0x38,0x20,0x33,0x35,0x38,0x2e,0x33,0x39,0x36,0x20,0x4c,0x20,0x33,0x39,0x33,0x2e,0x32,0x35,0x34,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x31,0x32,0x2e,0x37,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x37,0x33,0x38,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x35,0x37,0x2e,0x33,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x34,0x2e,0x31,0x36,0x34,0x20,0x4c,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x32,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x36,0x36,0x2e,0x30,0x34,0x20,0x4c,0x20,0x34,0x31,0x34,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x33,0x2e,0x30,0x39,0x36,0x20,0x4c,0x20,0x34,0x32,0x36,0x2e,0x38,0x35,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x32,0x39,0x2e,0x39,0x35,0x39,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x39,0x31,0x31,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x38,0x31,0x35,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x34,0x34,0x31,0x2e,0x32,0x30,0x31,0x20,0x33,0x35,0x36,0x2e,0x30,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x38,0x37,0x20,0x33,0x35,0x36,0x2e,0x36,0x33,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x34,0x33,0x20,0x33,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x35,0x38,0x2e,0x39,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x30,0x2e,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x30,0x39,0x39,0x20,0x33,0x36,0x31,0x2e,0x39,0x35,0x32,0x20,0x34,0x34,0x33,0x2e,0x33,0x30,0x31,0x20,0x33,0x36,0x33,0x2e,0x30,0x37,0x32,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x35,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x31,0x39,0x32,0x20,0x34,0x34,0x31,0x2e,0x31,0x30,0x33,0x20,0x33,0x36,0x34,0x2e,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x38,0x36,0x37,0x20,0x33,0x36,0x35,0x2e,0x33,0x31,0x32,0x20,0x34,0x34,0x33,0x2e,0x38,0x38,0x39,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x37,0x2e,0x37,0x37,0x36,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x36,0x39,0x2e,0x34,0x38,0x34,0x20,0x51,0x20,0x34,0x34,0x34,0x2e,0x39,0x31,0x31,0x20,0x33,0x37,0x31,0x2e,0x31,0x36,0x34,0x20,0x34,0x34,0x34,0x2e,0x30,0x38,0x35,0x20,0x33,0x37,0x32,0x2e,0x34,0x31,0x20,0x51,0x20,0x34,0x34,0x33,0x2e,0x32,0x35,0x39,0x20,0x33,0x37,0x33,0x2e,0x36,0x35,0x36,0x20,0x34,0x34,0x31,0x2e,0x37,0x36,0x31,0x20,0x33,0x37,0x34,0x2e,0x33,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x34,0x33,0x38,0x2e,0x32,0x34,0x37,0x20,0x33,0x37,0x35,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x4c,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x36,0x33,0x2e,0x39,0x34,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x36,0x33,0x2e,0x30,0x34,0x34,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x32,0x2e,0x31,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x36,0x30,0x2e,0x36,0x30,0x38,0x20,0x51,0x20,0x34,0x34,0x31,0x2e,0x39,0x37,0x31,0x20,0x33,0x35,0x39,0x2e,0x30,0x36,0x38,0x20,0x34,0x34,0x30,0x2e,0x38,0x33,0x37,0x20,0x33,0x35,0x38,0x2e,0x31,0x37,0x32,0x20,0x51,0x20,0x34,0x33,0x39,0x2e,0x37,0x30,0x33,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x34,0x33,0x37,0x2e,0x37,0x39,0x39,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x35,0x37,0x2e,0x32,0x37,0x36,0x20,0x5a,0x20,0x4d,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x4c,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x37,0x32,0x2e,0x31,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x37,0x31,0x2e,0x31,0x30,0x38,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x39,0x2e,0x34,0x32,0x38,0x20,0x51,0x20,0x34,0x34,0x32,0x2e,0x37,0x32,0x37,0x20,0x33,0x36,0x37,0x2e,0x37,0x34,0x38,0x20,0x34,0x34,0x31,0x2e,0x34,0x36,0x37,0x20,0x33,0x36,0x36,0x2e,0x37,0x34,0x20,0x51,0x20,0x34,0x34,0x30,0x2e,0x32,0x30,0x37,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x34,0x33,0x38,0x2e,0x30,0x37,0x39,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x4c,0x20,0x34,0x33,0x32,0x2e,0x31,0x31,0x35,0x20,0x33,0x36,0x35,0x2e,0x37,0x33,0x32,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x20,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x33,0x2e,0x36,0x37,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x31,0x2e,0x37,0x33,0x32,0x20,0x33,0x37,0x34,0x2e,0x32,0x31,0x36,0x20,0x51,0x20,0x34,0x34,0x39,0x2e,0x37,0x38,0x36,0x20,0x33,0x37,0x33,0x2e,0x31,0x35,0x32,0x20,0x34,0x34,0x38,0x2e,0x37,0x32,0x32,0x20,0x33,0x37,0x31,0x2e,0x31,0x37,0x38,0x20,0x51,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x39,0x2e,0x32,0x30,0x34,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x34,0x37,0x2e,0x36,0x35,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x35,0x31,0x2e,0x37,0x31,0x38,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x35,0x32,0x2e,0x32,0x39,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x35,0x32,0x2e,0x38,0x36,0x36,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x35,0x33,0x2e,0x39,0x31,0x36,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x34,0x2e,0x39,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x51,0x20,0x34,0x35,0x37,0x2e,0x37,0x36,0x36,0x20,0x33,0x37,0x31,0x2e,0x35,0x32,0x38,0x20,0x34,0x35,0x38,0x2e,0x38,0x30,0x32,0x20,0x33,0x37,0x30,0x2e,0x39,0x32,0x36,0x20,0x51,0x20,0x34,0x35,0x39,0x2e,0x38,0x33,0x38,0x20,0x33,0x37,0x30,0x2e,0x33,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x34,0x31,0x32,0x20,0x33,0x36,0x39,0x2e,0x31,0x39,0x20,0x51,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x38,0x2e,0x30,0x35,0x36,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x4c,0x20,0x34,0x36,0x30,0x2e,0x39,0x38,0x36,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x36,0x2e,0x35,0x34,0x34,0x20,0x51,0x20,0x34,0x36,0x35,0x2e,0x30,0x31,0x38,0x20,0x33,0x36,0x39,0x2e,0x31,0x37,0x36,0x20,0x34,0x36,0x33,0x2e,0x39,0x35,0x34,0x20,0x33,0x37,0x31,0x2e,0x31,0x35,0x20,0x51,0x20,0x34,0x36,0x32,0x2e,0x38,0x39,0x20,0x33,0x37,0x33,0x2e,0x31,0x32,0x34,0x20,0x34,0x36,0x30,0x2e,0x39,0x34,0x34,0x20,0x33,0x37,0x34,0x2e,0x32,0x30,0x32,0x20,0x51,0x20,0x34,0x35,0x38,0x2e,0x39,0x39,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x34,0x35,0x36,0x2e,0x33,0x33,0x38,0x20,0x33,0x37,0x35,0x2e,0x32,0x38,0x20,0x5a,0x20,0x4d,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x37,0x35,0x20,0x4c,0x20,0x34,0x36,0x38,0x2e,0x32,0x36,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x35,0x35,0x2e,0x34,0x20,0x4c,0x20,0x34,0x37,0x32,0x2e,0x33,0x32,0x33,0x20,0x33,0x37,0x35,0x20,0x5a,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x3d,0x22,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x31,0x2e,0x32,0x36,0x34,0x35,0x39,0x32,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x32,0x34,0x30,0x33,0x30,0x33,0x2c,0x20,0x2d,0x34,0x38,0x33,0x2e,0x38,0x39,0x39,0x33,0x35,0x33,0x2c,0x20,0x2d,0x33,0x35,0x35,0x2e,0x38,0x34,0x35,0x31,0x35,0x34,0x29,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x69,0x6c,0x6c,0x3a,0x20,0x72,0x67,0x62,0x28,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x2f,0x3e,0x3c,0x2f,0x73,0x76,0x67,0x3e};
+
+
+static const VirtualFile virtual_files[] = {
+ {
+ "/index.html",
+ FILE_0,
+ 3087
+ },
+ {
+ "/sub/index.html",
+ FILE_1,
+ 1152
+ },
+ {
+ "/svg/webui.svg",
+ FILE_2,
+ 2347
+ },
+};
+
+static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);
+
+bool virtual_file_system(const char* path, const unsigned char** file, int* length) {
+ for (int i = 0; i < virtual_files_count; ++i) {
+ if (strcmp(virtual_files[i].path, path) == 0) {
+ *file = virtual_files[i].data;
+ *length = virtual_files[i].length;
+ return true;
+ }
+ }
+ return false;
+}
+
+const void* vfs(const char* path, int* length) {
+ const unsigned char* file_data;
+ int file_length;
+
+ if (virtual_file_system(path, &file_data, &file_length)) {
+ const char* content_type = webui_get_mime_type(path);
+ const char* http_header_template = "HTTP/1.1 200 OK\r\n"
+ "Content-Type: %s\r\n"
+ "Content-Length: %d\r\n"
+ "Cache-Control: no-cache\r\n\r\n";
+ int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);
+ *length = header_length + file_length;
+ unsigned char* response = (unsigned char*) webui_malloc(*length);
+ snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);
+ memcpy(response + header_length, file_data, file_length);
+ return response;
+ }
+ return NULL;
+}
+
+#endif // VIRTUAL_FILE_SYSTEM_H
diff --git a/v2/webui/examples/C/virtual_file_system/vfs.py b/v2/webui/examples/C/virtual_file_system/vfs.py
new file mode 100644
index 0000000..57e4dfd
--- /dev/null
+++ b/v2/webui/examples/C/virtual_file_system/vfs.py
@@ -0,0 +1,99 @@
+# WebUI Library
+# https://webui.me
+# https://github.com/webui-dev/webui
+# Copyright (c) 2020-2026 Hassan Draga.
+# Licensed under MIT License.
+# All rights reserved.
+# Canada.
+#
+# WebUI Virtual File System Generator
+# v2.0
+
+import os
+import sys
+
+def generate_vfs_header(directory, output_header):
+ files = []
+
+ for root, _, filenames in os.walk(directory):
+ for filename in filenames:
+ filepath = os.path.join(root, filename)
+ relative_path = os.path.relpath(filepath, directory)
+ # Ensure path starts with a slash
+ relative_path = '/' + relative_path.replace('\\', '/')
+ files.append((relative_path, filepath))
+
+ with open(output_header, 'w') as header:
+ header.write('#ifndef VIRTUAL_FILE_SYSTEM_H\n')
+ header.write('#define VIRTUAL_FILE_SYSTEM_H\n\n')
+
+ header.write('typedef struct {\n')
+ header.write(' const char *path;\n')
+ header.write(' const unsigned char *data;\n')
+ header.write(' int length;\n')
+ header.write('} VirtualFile;\n\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(f'static const unsigned char FILE_{i}[] = {{')
+ header.write(','.join(f'0x{byte:02x}' for byte in data))
+ header.write('};\n\n')
+
+ header.write('\nstatic const VirtualFile virtual_files[] = {\n')
+
+ for i, (relative_path, filepath) in enumerate(files):
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ header.write(' {\n')
+ header.write(f' "{relative_path}",\n')
+ header.write(f' FILE_{i},\n')
+ header.write(f' {len(data)}\n')
+ header.write(' },\n')
+
+ header.write('};\n\n')
+
+ header.write('static const int virtual_files_count = sizeof(virtual_files) / sizeof(virtual_files[0]);\n\n')
+
+ header.write('bool virtual_file_system(const char* path, const unsigned char** file, int* length) {\n')
+ header.write(' for (int i = 0; i < virtual_files_count; ++i) {\n')
+ header.write(' if (strcmp(virtual_files[i].path, path) == 0) {\n')
+ header.write(' *file = virtual_files[i].data;\n')
+ header.write(' *length = virtual_files[i].length;\n')
+ header.write(' return true;\n')
+ header.write(' }\n')
+ header.write(' }\n')
+ header.write(' return false;\n')
+ header.write('}\n\n')
+
+ header.write('const void* vfs(const char* path, int* length) {\n')
+ header.write(' const unsigned char* file_data;\n')
+ header.write(' int file_length;\n\n')
+
+ header.write(' if (virtual_file_system(path, &file_data, &file_length)) {\n')
+ header.write(' const char* content_type = webui_get_mime_type(path);\n')
+ header.write(' const char* http_header_template = "HTTP/1.1 200 OK\\r\\n"\n')
+ header.write(' "Content-Type: %s\\r\\n"\n')
+ header.write(' "Content-Length: %d\\r\\n"\n')
+ header.write(' "Cache-Control: no-cache\\r\\n\\r\\n";\n')
+ header.write(' int header_length = snprintf(NULL, 0, http_header_template, content_type, file_length);\n')
+ header.write(' *length = header_length + file_length;\n')
+ header.write(' unsigned char* response = (unsigned char*) webui_malloc(*length);\n')
+ header.write(' snprintf((char*) response, header_length + 1, http_header_template, content_type, file_length);\n')
+ header.write(' memcpy(response + header_length, file_data, file_length);\n')
+ header.write(' return response;\n')
+ header.write(' }\n')
+ header.write(' return NULL;\n')
+ header.write('}\n\n')
+
+ header.write('#endif // VIRTUAL_FILE_SYSTEM_H\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print(f'Usage: {sys.argv[0]} ')
+ sys.exit(1)
+
+ directory = sys.argv[1]
+ output_header = sys.argv[2]
+ generate_vfs_header(directory, output_header)
+ print(f'Generated {output_header} from {directory}')
diff --git a/v2/webui/examples/C/web_app_multi_client/GNUmakefile b/v2/webui/examples/C/web_app_multi_client/GNUmakefile
new file mode 100644
index 0000000..6ba8eaa
--- /dev/null
+++ b/v2/webui/examples/C/web_app_multi_client/GNUmakefile
@@ -0,0 +1,138 @@
+# WebUI C Example
+
+# == 1. VARIABLES =============================================================
+
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+PROJECT_DIR := $(dir $(MAKEFILE_PATH))/../../../
+TARGET := $(firstword $(MAKECMDGOALS))
+LIB_DIR := $(PROJECT_DIR)/dist
+ifeq ($(TARGET), debug)
+LIB_DIR := $(LIB_DIR)/debug
+endif
+INCLUDE_DIR := $(PROJECT_DIR)/include
+WEBUI_LIB_NAME = webui-2
+ifeq ($(WEBUI_USE_TLS), 1)
+WEBUI_LIB_NAME = webui-2-secure
+endif
+
+# ARGS
+# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang`
+CC = gcc
+# Build the WebUI library if running via `make BUILD_LIB=true`
+BUILD_LIB ?=
+
+# BUILD FLAGS
+STATIC_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+DYN_BUILD_FLAGS = main.c -I"$(INCLUDE_DIR)" -L"$(LIB_DIR)"
+
+# Platform conditions
+ifeq ($(OS),Windows_NT)
+ # Windows
+ PLATFORM := windows
+ SHELL := CMD
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -lstdc++ -luuid -static
+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32 -lstdc++ -luuid
+ STATIC_OUT := main.exe
+ DYN_OUT := main-dyn.exe
+ LWS2_OPT := -lws2_32 -lole32
+ STRIP_OPT := --strip-all
+ CONSOLE_APP := -Wl,-subsystem=console
+ GUI_APP := -Wl,-subsystem=windows
+else
+ STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lpthread -lm -ldl
+ DYN_BUILD_FLAGS += -l$(WEBUI_LIB_NAME) -lpthread -lm -ldl
+ STATIC_OUT := main
+ DYN_OUT := main-dyn
+ ifeq ($(shell uname),Darwin)
+ # MacOS
+ PLATFORM := macos
+ CC = clang
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).dylib" "lib$(WEBUI_LIB_NAME).dylib"
+ WKWEBKIT_LINK_FLAGS := -framework Cocoa -framework WebKit
+ else
+ # Linux
+ PLATFORM := linux
+ COPY_LIB_CMD := @cp "$(LIB_DIR)/lib$(WEBUI_LIB_NAME).so" "lib$(WEBUI_LIB_NAME).so"
+ STRIP_OPT := --strip-all
+ ifeq ($(CC),clang)
+ LLVM_OPT := llvm-
+ endif
+ endif
+endif
+
+# == 2.TARGETS ================================================================
+
+all: release
+
+debug: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE) debug
+endif
+# Static with Debug info
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) debug static)..."
+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+endif
+# Dynamic with Debug info
+ @echo "Build C Example ($(CC) debug dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+release: --validate-args
+ifeq ($(BUILD_LIB),true)
+ @cd "$(PROJECT_DIR)" && $(MAKE)
+endif
+# Static Release
+ifneq ($(WEBUI_USE_TLS), 1)
+ @echo "Build C Example ($(CC) release static)..."
+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(STATIC_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
+endif
+# Dynamic Release
+ @echo "Build C Example ($(CC) release dynamic)..."
+ $(COPY_LIB_CMD)
+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) $(WKWEBKIT_LINK_FLAGS) -o $(DYN_OUT)
+ @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
+# Clean
+ifeq ($(PLATFORM),windows)
+ @- del *.o >nul 2>&1
+else
+ @- rm -f *.o
+ @- rm -rf *.dSYM # macOS
+endif
+ @echo "Done."
+
+clean: --clean-$(PLATFORM)
+
+# INTERNAL TARGETS
+
+--validate-args:
+ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC))
+$(error Invalid compiler specified: `$(CC)`)
+endif
+
+--clean-linux: --clean-unix
+
+--clean-macos: --clean-unix
+
+--clean-unix:
+ - rm -f *.o
+ - rm -f *.a
+ - rm -f *.so
+ - rm -f *.dylib
+ - rm -rf *.dSYM
+
+--clean-windows:
+ - del *.o >nul 2>&1
+ - del *.dll >nul 2>&1
+ - del *.a >nul 2>&1
+ - del *.exe >nul 2>&1
diff --git a/v2/webui/examples/C/web_app_multi_client/Makefile b/v2/webui/examples/C/web_app_multi_client/Makefile
new file mode 100644
index 0000000..7e72c60
--- /dev/null
+++ b/v2/webui/examples/C/web_app_multi_client/Makefile
@@ -0,0 +1,64 @@
+# WebUI C Example
+# Windows - Microsoft Visual C
+
+SHELL = CMD
+LIB_DIR = ../../../dist
+INCLUDE_DIR = ../../../include
+WEBUI_LIB_NAME = webui-2
+!IF "$(WEBUI_USE_TLS)" == "1"
+WEBUI_LIB_NAME = webui-2-secure
+!ENDIF
+
+# Build the WebUI library if running `nmake BUILD_LIB=true`
+BUILD_LIB =
+
+all: release
+
+debug:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE) debug
+!ENDIF
+# Static with Debug info
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Debug)...
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic with Debug info
+ @echo Build C Example (Dynamic Debug)...
+ @copy "$(LIB_DIR)\debug\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl /Zi main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)\debug" /SUBSYSTEM:CONSOLE $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @echo Done.
+
+release:
+!IF "$(BUILD_LIB)" == "true"
+ @cd "$(LIB_DIR)" && cd .. && $(MAKE)
+!ENDIF
+# Static Release
+!IF "$(WEBUI_USE_TLS)" != "1"
+ @echo Build C Example (Static Release)...
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME)-static.lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main.exe 1>NUL 2>&1
+!ENDIF
+# Dynamic Release
+ @echo Build C Example (Dynamic Release)...
+ @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
+ @cl main.c /I"$(INCLUDE_DIR)" /link /LIBPATH:"$(LIB_DIR)" /SUBSYSTEM:WINDOWS $(WEBUI_LIB_NAME).lib user32.lib Advapi32.lib Shell32.lib Ole32.lib /OUT:main-dyn.exe 1>NUL 2>&1
+# Clean
+ @- del *.exp >nul 2>&1
+ @- del *.ilk >nul 2>&1
+ @- del *.lib >nul 2>&1
+ @- del *.obj >nul 2>&1
+ @- del *.pdb >nul 2>&1
+ @echo Done.
+
+clean:
+ - del *.obj >nul 2>&1
+ - del *.ilk >nul 2>&1
+ - del *.pdb >nul 2>&1
+ - del *.exp >nul 2>&1
+ - del *.exe >nul 2>&1
+ - del *.lib >nul 2>&1
diff --git a/v2/webui/examples/C/web_app_multi_client/index.html b/v2/webui/examples/C/web_app_multi_client/index.html
new file mode 100644
index 0000000..662b229
--- /dev/null
+++ b/v2/webui/examples/C/web_app_multi_client/index.html
@@ -0,0 +1,155 @@
+
+
+
+
+ WebUI - Web App Multi-Client Example
+
+
+
+ Web App Multi-Client Example
+
+ Connecting...
+
+
+ You are user numer 0
+
+
+ Your connection numer is 0
+
+
+ There is 0 users connected, and 0 tab opened.
+
+
+ Current user input: Save Reload This Page
+
+
+ All users input: Update All Users
+
+
+ Open New Tab
+
+
+ Exit
+
+
+
+ Note: Copy URL, and open it in a private window, or another web browser to create new users.
+
+
+
+
+
+
+
diff --git a/v2/webui/examples/C/web_app_multi_client/main.c b/v2/webui/examples/C/web_app_multi_client/main.c
new file mode 100644
index 0000000..bc2567f
--- /dev/null
+++ b/v2/webui/examples/C/web_app_multi_client/main.c
@@ -0,0 +1,132 @@
+// Web App Multi-Client Example
+
+#include "webui.h"
+
+// Arrays to hold permanent data
+char privateInput_arr[256][1024] = {0}; // One for each user
+char publicInput_arr[1024] = {0}; // One for all users
+int users_count = 0;
+int tab_count = 0;
+
+void exit_app(webui_event_t* e) {
+ // Close all opened windows
+ webui_exit();
+}
+
+void save(webui_event_t* e) {
+ // Get input value
+ const char* privateInput = webui_get_string(e);
+ // Save it in the array
+ snprintf(privateInput_arr[e->client_id], 1024, "%s", privateInput);
+}
+
+void saveAll(webui_event_t* e) {
+ // Get input value
+ const char* publicInput = webui_get_string(e);
+ // Save it in the array
+ snprintf(publicInput_arr, 1024, "%s", publicInput);
+ // Update all users
+ char buffer[512] = {0};
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"publicInput\").value = \"%s\";", publicInput);
+ webui_run(e->window, buffer);
+}
+
+void events(webui_event_t* e) {
+
+ // This function gets called every time
+ // there is an event
+
+ // Full web browser cookies
+ const char* cookies = e->cookies;
+
+ // Static client (Based on web browser cookies)
+ size_t client_id = e->client_id;
+
+ // Dynamic client connection ID (Changes on connect/disconnect events)
+ size_t connection_id = e->connection_id;
+
+ if (e->event_type == WEBUI_EVENT_CONNECTED) {
+ // New connection
+ if (users_count < (client_id + 1)) { // +1 because it start from 0
+ users_count = (client_id + 1);
+ }
+ tab_count++;
+ }
+ else if (e->event_type == WEBUI_EVENT_DISCONNECTED) {
+ // Disconnection
+ if (tab_count > 0)
+ tab_count--;
+ }
+
+ // Buffer
+ char buffer[512] = {0};
+
+ // Update this current user only
+
+ // status
+ webui_run_client(e, "document.getElementById(\"status\").innerText = \"Connected!\";");
+
+ // userNumber
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"userNumber\").innerText = \"%zu\";", client_id);
+ webui_run_client(e, buffer);
+
+ // connectionNumber
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"connectionNumber\").innerText = \"%zu\";", connection_id);
+ webui_run_client(e, buffer);
+
+ // privateInput
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"privateInput\").value = \"%s\";", privateInput_arr[client_id]);
+ webui_run_client(e, buffer);
+
+ // publicInput
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"publicInput\").value = \"%s\";", publicInput_arr);
+ webui_run_client(e, buffer);
+
+ // Update all connected users
+
+ // userCount
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"userCount\").innerText = \"%d\";", users_count);
+ webui_run(e->window, buffer);
+
+ // tabCount
+ snprintf(buffer, sizeof(buffer), "document.getElementById(\"tabCount\").innerText = \"%d\";", tab_count);
+ webui_run(e->window, buffer);
+}
+
+int main() {
+
+ // Allow multi-user connection
+ webui_set_config(multi_client, true);
+
+ // Allow cookies
+ webui_set_config(use_cookies, true);
+
+ // Create new window
+ size_t win = webui_new_window();
+
+ // Bind HTML with a C functions
+ webui_bind(win, "save", save);
+ webui_bind(win, "saveAll", saveAll);
+ webui_bind(win, "exit_app", exit_app);
+
+ // Bind all events
+ webui_bind(win, "", events);
+
+ // Start server only
+ const char* url = webui_start_server(win, "index.html");
+
+ // Open a new page in the default native web browser
+ webui_open_url(url);
+
+ // Wait until all windows get closed
+ webui_wait();
+
+ // Free all memory resources (Optional)
+ webui_clean();
+
+ return 0;
+}
+
+#if defined(_MSC_VER)
+int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return main(); }
+#endif
diff --git a/v2/webui/include/webui.h b/v2/webui/include/webui.h
new file mode 100644
index 0000000..4b63361
--- /dev/null
+++ b/v2/webui/include/webui.h
@@ -0,0 +1,1489 @@
+/*
+ WebUI Library
+ https://webui.me
+ https://github.com/webui-dev/webui
+ Copyright (c) 2020-2026 Hassan Draga.
+ Licensed under MIT License.
+ All rights reserved.
+ Canada.
+*/
+
+#ifndef _WEBUI_H
+#define _WEBUI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WEBUI_VERSION "2.5.0-beta.4"
+
+// Max windows, servers and threads
+#define WEBUI_MAX_IDS UINT16_MAX // 65535
+
+// Max allowed argument's index
+#define WEBUI_MAX_ARG (16)
+
+// Dynamic Library Exports
+#if defined(_WIN32) && (defined(_MSC_VER) || defined(__TINYC__))
+ #ifndef WEBUI_EXPORT
+ #define WEBUI_EXPORT __declspec(dllexport)
+ #endif
+#else
+ #ifndef WEBUI_EXPORT
+ #define WEBUI_EXPORT extern
+ #endif
+#endif
+
+#if defined(_MSC_VER)
+ #define strdup _strdup
+#endif
+
+// -- C STD ---------------------------
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+// -- Windows -------------------------
+#ifdef _WIN32
+ #include
+ #include
+ #ifndef WIN32_LEAN_AND_MEAN
+ #define WIN32_LEAN_AND_MEAN
+ #endif
+ #ifndef CGO
+ #if defined(__GNUC__) || defined(__TINYC__)
+ #include
+ #endif
+ #endif
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #define WEBUI_GET_CURRENT_DIR _getcwd
+ #define WEBUI_FILE_EXIST _access
+ #define WEBUI_POPEN _popen
+ #define WEBUI_PCLOSE _pclose
+ #define WEBUI_MAX_PATH MAX_PATH
+#endif
+
+// -- Linux ---------------------------
+#ifdef __linux__
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #define WEBUI_GET_CURRENT_DIR getcwd
+ #define WEBUI_FILE_EXIST access
+ #define WEBUI_POPEN popen
+ #define WEBUI_PCLOSE pclose
+ #define WEBUI_MAX_PATH PATH_MAX
+#endif
+
+// -- Apple ---------------------------
+#ifdef __APPLE__
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+ #define WEBUI_GET_CURRENT_DIR getcwd
+ #define WEBUI_FILE_EXIST access
+ #define WEBUI_POPEN popen
+ #define WEBUI_PCLOSE pclose
+ #define WEBUI_MAX_PATH PATH_MAX
+#endif
+
+// -- Enums ---------------------------
+enum webui_browser {
+ NoBrowser = 0, // 0. No web browser
+ AnyBrowser = 1, // 1. Default recommended web browser
+ Chrome, // 2. Google Chrome
+ Firefox, // 3. Mozilla Firefox
+ Edge, // 4. Microsoft Edge
+ Safari, // 5. Apple Safari
+ Chromium, // 6. The Chromium Project
+ Opera, // 7. Opera Browser
+ Brave, // 8. The Brave Browser
+ Vivaldi, // 9. The Vivaldi Browser
+ Epic, // 10. The Epic Browser
+ Yandex, // 11. The Yandex Browser
+ ChromiumBased, // 12. Any Chromium based browser
+ Webview, // 13. WebView (Non-web-browser)
+};
+
+enum webui_runtime {
+ None = 0, // 0. Prevent WebUI from using any runtime for .js and .ts files
+ Deno, // 1. Use Deno runtime for .js and .ts files
+ NodeJS, // 2. Use Nodejs runtime for .js files
+ Bun, // 3. Use Bun runtime for .js and .ts files
+};
+
+enum webui_event {
+ WEBUI_EVENT_DISCONNECTED = 0, // 0. Window disconnection event
+ WEBUI_EVENT_CONNECTED, // 1. Window connection event
+ WEBUI_EVENT_MOUSE_CLICK, // 2. Mouse click event
+ WEBUI_EVENT_NAVIGATION, // 3. Window navigation event
+ WEBUI_EVENT_CALLBACK, // 4. Function call event
+};
+
+typedef enum {
+ // Control if `webui_show()`, `webui_show_browser()` and
+ // `webui_show_wv()` should wait for the window to connect
+ // before returns or not.
+ //
+ // Default: True
+ show_wait_connection = 0,
+ // Control if WebUI should block and process the UI events
+ // one a time in a single thread `True`, or process every
+ // event in a new non-blocking thread `False`. This updates
+ // all windows. You can use `webui_set_event_blocking()` for
+ // a specific single window update.
+ //
+ // Default: False
+ ui_event_blocking,
+ // Automatically refresh the window UI when any file in the
+ // root folder gets changed.
+ //
+ // Default: False
+ folder_monitor,
+ // Allow multiple clients to connect to the same window,
+ // This is helpful for web apps (non-desktop software),
+ // Please see the documentation for more details.
+ //
+ // Default: False
+ multi_client,
+ // Allow or prevent WebUI from adding `webui_auth` cookies.
+ // WebUI uses these cookies to identify clients and block
+ // unauthorized access to the window content using a URL.
+ // Please keep this option to `True` if you want only a single
+ // client to access the window content.
+ //
+ // Default: True
+ use_cookies,
+ // If the backend uses asynchronous operations, set this
+ // option to `True`. This will make webui wait until the
+ // backend sets a response using `webui_return_x()`.
+ asynchronous_response
+} webui_config;
+
+// -- Structs -------------------------
+typedef struct webui_event_t {
+ size_t window; // The window object number
+ size_t event_type; // Event type
+ char* element; // HTML element ID
+ size_t event_number; // Internal WebUI
+ size_t bind_id; // Bind ID
+ size_t client_id; // Client's unique ID
+ size_t connection_id; // Client's connection ID
+ char* cookies; // Client's full cookies
+} webui_event_t;
+
+enum webui_logger_level {
+ WEBUI_LOGGER_LEVEL_DEBUG = 0, // 0. All logs with all details
+ WEBUI_LOGGER_LEVEL_INFO, // 1. Only general logs
+ WEBUI_LOGGER_LEVEL_ERROR, // 2. Only fatal error logs
+};
+
+// -- Definitions ---------------------
+
+/**
+ * @brief Create a new WebUI window object.
+ *
+ * @return Returns the window number.
+ *
+ * @example size_t myWindow = webui_new_window();
+ */
+WEBUI_EXPORT size_t webui_new_window(void);
+
+/**
+ * @brief Create a new webui window object using a specified window number.
+ *
+ * @param window_number The window number (should be > 0, and < WEBUI_MAX_IDS)
+ *
+ * @return Returns the same window number if success.
+ *
+ * @example size_t myWindow = webui_new_window_id(123);
+ */
+WEBUI_EXPORT size_t webui_new_window_id(size_t window_number);
+
+/**
+ * @brief Get a free window number that can be used with
+ * `webui_new_window_id()`.
+ *
+ * @return Returns the first available free window number. Starting from 1.
+ *
+ * @example size_t myWindowNumber = webui_get_new_window_id();
+ */
+WEBUI_EXPORT size_t webui_get_new_window_id(void);
+
+/**
+ * @brief Bind an HTML element and a JavaScript object with a backend function. Empty
+ * element name means all events.
+ *
+ * @param window The window number
+ * @param element The HTML element / JavaScript object
+ * @param func The callback function
+ *
+ * @return Returns a unique bind ID.
+ *
+ * @example webui_bind(myWindow, "myFunction", myFunction);
+ */
+WEBUI_EXPORT size_t webui_bind(size_t window, const char* element, void (*func)(webui_event_t* e));
+
+/**
+ * @brief Use this API after using `webui_bind()` to add any user data to it that can be
+ * read later using `webui_get_context()`.
+ *
+ * @param window The window number
+ * @param element The HTML element / JavaScript object
+ * @param context Any user data
+ *
+ * @example
+ * webui_bind(myWindow, "myFunction", myFunction);
+ *
+ * webui_set_context(myWindow, "myFunction", myData);
+ *
+ * void myFunction(webui_event_t* e) {
+ * void* myData = webui_get_context(e);
+ * }
+ */
+WEBUI_EXPORT void webui_set_context(size_t window, const char* element, void* context);
+
+/**
+ * @brief Get user data that is set using `webui_set_context()`.
+ *
+ * @param e The event struct
+ *
+ * @return Returns user data pointer.
+ *
+ * @example
+ * webui_bind(myWindow, "myFunction", myFunction);
+ *
+ * webui_set_context(myWindow, "myFunction", myData);
+ *
+ * void myFunction(webui_event_t* e) {
+ * void* myData = webui_get_context(e);
+ * }
+ */
+WEBUI_EXPORT void* webui_get_context(webui_event_t* e);
+
+/**
+ * @brief Get the recommended web browser ID to use. If you
+ * are already using one, this function will return the same ID.
+ *
+ * @param window The window number
+ *
+ * @return Returns a web browser ID.
+ *
+ * @example size_t browserID = webui_get_best_browser(myWindow);
+ */
+WEBUI_EXPORT size_t webui_get_best_browser(size_t window);
+
+/**
+ * @brief Show a window using embedded HTML, or a file. If the window is already
+ * open, it will be refreshed. This will refresh all windows in multi-client mode.
+ *
+ * @param window The window number
+ * @param content The HTML, URL, local file, or local folder.
+ * Pass `NULL` or an empty string to start in folder mode using the
+ * current root folder and index fallback logic.
+ *
+ * @return Returns True if showing the window is successed.
+ *
+ * @example webui_show(myWindow, "..."); |
+ * webui_show(myWindow, "index.html"); | webui_show(myWindow, "http://...");
+ */
+WEBUI_EXPORT bool webui_show(size_t window, const char* content);
+
+/**
+ * @brief Show a window using embedded HTML, or a file. If the window is already
+ * open, it will be refreshed. Single client.
+ *
+ * @param e The event struct
+ * @param content The HTML, URL, Or a local file
+ *
+ * @return Returns True if showing the window is successed.
+ *
+ * @example webui_show_client(e, "..."); |
+ * webui_show_client(e, "index.html"); | webui_show_client(e, "http://...");
+ */
+WEBUI_EXPORT bool webui_show_client(webui_event_t* e, const char* content);
+
+/**
+ * @brief Same as `webui_show()`. But using a specific web browser.
+ *
+ * @param window The window number
+ * @param content The HTML, URL, local file, or local folder.
+ * Pass `NULL` or an empty string to start in folder mode using the
+ * current root folder and index fallback logic.
+ * @param browser The web browser to be used
+ *
+ * @return Returns True if showing the window is successed.
+ *
+ * @example webui_show_browser(myWindow, "...", Chrome); |
+ * webui_show(myWindow, "index.html", Firefox);
+ */
+WEBUI_EXPORT bool webui_show_browser(size_t window, const char* content, size_t browser);
+
+/**
+ * @brief Start only the local web server and return the URL.
+ * No window will be shown.
+ *
+ * @param window The window number
+ * @param content The local file or local folder to serve.
+ * Pass `NULL` or an empty string to start in folder mode using the
+ * current root folder and index fallback logic.
+ *
+ * @return Returns the url of this window server.
+ *
+ * @example const char* url = webui_start_server(myWindow, "/full/root/path");
+ */
+WEBUI_EXPORT const char* webui_start_server(size_t window, const char* content);
+
+/**
+ * @brief Show a WebView window using embedded HTML, or a file. If the window is already
+ * open, it will be refreshed. Note: Win32 need `WebView2Loader.dll`.
+ *
+ * @param window The window number
+ * @param content The HTML, URL, Or a local file
+ *
+ * @return Returns True if showing the WebView window is successed.
+ *
+ * @example webui_show_wv(myWindow, "..."); | webui_show_wv(myWindow,
+ * "index.html"); | webui_show_wv(myWindow, "http://...");
+ */
+WEBUI_EXPORT bool webui_show_wv(size_t window, const char* content);
+
+/**
+ * @brief Set the window in Kiosk mode (Full screen).
+ *
+ * @param window The window number
+ * @param status True or False
+ *
+ * @example webui_set_kiosk(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_kiosk(size_t window, bool status);
+
+/**
+ * @brief Bring a window to the front and focus it.
+ *
+ * @param window The window number
+ *
+ * @example webui_focus(myWindow);
+ */
+WEBUI_EXPORT void webui_focus(size_t window);
+
+/**
+ * @brief Add a user-defined web browser's CLI parameters.
+ *
+ * @param window The window number
+ * @param params Command line parameters
+ *
+ * @example webui_set_custom_parameters(myWindow, "--remote-debugging-port=9222");
+ */
+WEBUI_EXPORT void webui_set_custom_parameters(size_t window, char *params);
+
+/**
+ * @brief Set the window with high-contrast support. Useful when you want to
+ * build a better high-contrast theme with CSS.
+ *
+ * @param window The window number
+ * @param status True or False
+ *
+ * @example webui_set_high_contrast(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_high_contrast(size_t window, bool status);
+
+/**
+ * @brief Sets whether the window frame is resizable or fixed.
+ * Works only on WebView window.
+ *
+ * @param window The window number
+ * @param status True or False
+ *
+ * @example webui_set_resizable(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_resizable(size_t window, bool status);
+
+/**
+ * @brief Get OS high contrast preference.
+ *
+ * @return Returns True if OS is using high contrast theme
+ *
+ * @example bool hc = webui_is_high_contrast();
+ */
+WEBUI_EXPORT bool webui_is_high_contrast(void);
+
+/**
+ * @brief Check if a web browser is installed.
+ *
+ * @return Returns True if the specified browser is available
+ *
+ * @example bool status = webui_browser_exist(Chrome);
+ */
+WEBUI_EXPORT bool webui_browser_exist(size_t browser);
+
+/**
+ * @brief Wait until all opened windows get closed.
+ *
+ * @example webui_wait();
+ */
+WEBUI_EXPORT void webui_wait(void);
+
+/**
+ * @brief Wait asynchronously until all opened windows get closed.
+ * Note: In WebView mode, you need to call this from the main thread.
+ *
+ * @return Returns True if more windows are still opened, False otherwise.
+ *
+ * @example while (webui_wait_async()) {
+ * // Your main thread code here
+ * }
+ */
+WEBUI_EXPORT bool webui_wait_async(void);
+
+/**
+ * @brief Close a specific window only. The window object will still exist.
+ * All clients.
+ *
+ * @param window The window number
+ *
+ * @example webui_close(myWindow);
+ */
+WEBUI_EXPORT void webui_close(size_t window);
+
+/**
+ * @brief Minimize a WebView window.
+ *
+ * @param window The window number
+ *
+ * @example webui_minimize(myWindow);
+ */
+WEBUI_EXPORT void webui_minimize(size_t window);
+
+/**
+ * @brief Maximize a WebView window.
+ *
+ * @param window The window number
+ *
+ * @example webui_maximize(myWindow);
+ */
+WEBUI_EXPORT void webui_maximize(size_t window);
+
+/**
+ * @brief Close a specific client.
+ *
+ * @param e The event struct
+ *
+ * @example webui_close_client(e);
+ */
+WEBUI_EXPORT void webui_close_client(webui_event_t* e);
+
+/**
+ * @brief Close a specific window and free all memory resources.
+ *
+ * @param window The window number
+ *
+ * @example webui_destroy(myWindow);
+ */
+WEBUI_EXPORT void webui_destroy(size_t window);
+
+/**
+ * @brief Close all open windows. `webui_wait()` will return (Break).
+ *
+ * @example webui_exit();
+ */
+WEBUI_EXPORT void webui_exit(void);
+
+/**
+ * @brief Set the web-server root folder path for a specific window.
+ *
+ * @param window The window number
+ * @param path The local folder full path
+ *
+ * @example webui_set_root_folder(myWindow, "/home/Foo/Bar/");
+ */
+WEBUI_EXPORT bool webui_set_root_folder(size_t window, const char* path);
+
+/**
+ * @brief Set custom browser folder path.
+ *
+ * @param path The browser folder path
+ *
+ * @example webui_set_browser_folder("/home/Foo/Bar/");
+ */
+WEBUI_EXPORT void webui_set_browser_folder(const char* path);
+
+/**
+ * @brief Set the web-server root folder path for all windows. Should be used
+ * before `webui_show()`.
+ *
+ * @param path The local folder full path
+ *
+ * @example webui_set_default_root_folder("/home/Foo/Bar/");
+ */
+WEBUI_EXPORT bool webui_set_default_root_folder(const char* path);
+
+/**
+ * @brief Set a callback to catch the close event of the WebView window.
+ * Must return `false` to prevent the close event, `true` otherwise.
+ *
+ * @example
+ * bool myCloseEvent(size_t window) {
+ * // Prevent WebView window close event
+ * return false;
+ * }
+ * webui_set_close_handler(myWindow, myCloseEvent);
+ */
+WEBUI_EXPORT void webui_set_close_handler_wv(size_t window, bool (*close_handler)(size_t window));
+
+/**
+ * @brief Set a custom handler to serve files. This custom handler should
+ * return full HTTP header and body.
+ * This deactivates any previous handler set with `webui_set_file_handler_window`
+ *
+ * @param window The window number
+ * @param handler The handler function: `void myHandler(const char* filename,
+ * int* length)`
+ *
+ * @example webui_set_file_handler(myWindow, myHandlerFunction);
+ */
+WEBUI_EXPORT void webui_set_file_handler(size_t window, const void* (*handler)(const char* filename, int* length));
+
+/**
+ * @brief Set a custom handler to serve files. This custom handler should
+ * return full HTTP header and body.
+ * This deactivates any previous handler set with `webui_set_file_handler`
+ *
+ * @param window The window number
+ * @param handler The handler function: `void myHandler(size_t window, const char* filename,
+ * int* length)`
+ *
+ * @example webui_set_file_handler_window(myWindow, myHandlerFunction);
+ */
+WEBUI_EXPORT void webui_set_file_handler_window(size_t window, const void* (*handler)(size_t window, const char* filename, int* length));
+
+/**
+ * @brief Use this API to set a file handler response if your backend need async
+ * response for `webui_set_file_handler()`.
+ *
+ * @param window The window number
+ * @param response The response buffer
+ * @param length The response size
+ *
+ * @example webui_interface_set_response_file_handler(myWindow, buffer, 1024);
+ */
+WEBUI_EXPORT void webui_interface_set_response_file_handler(size_t window, const void* response, int length);
+
+/**
+ * @brief Check if the specified window is still running.
+ *
+ * @param window The window number
+ *
+ * @example webui_is_shown(myWindow);
+ */
+WEBUI_EXPORT bool webui_is_shown(size_t window);
+
+/**
+ * @brief Set the maximum time in seconds to wait for the window to connect.
+ * This effect `show()` and `wait()`. Value of `0` means wait forever.
+ *
+ * @param second The timeout in seconds
+ *
+ * @example webui_set_timeout(30);
+ */
+WEBUI_EXPORT void webui_set_timeout(size_t second);
+
+/**
+ * @brief Set the default embedded HTML favicon.
+ *
+ * @param window The window number
+ * @param icon The icon as string: `... `
+ * @param icon_type The icon type: `image/svg+xml`
+ *
+ * @example webui_set_icon(myWindow, "... ", "image/svg+xml");
+ */
+WEBUI_EXPORT void webui_set_icon(size_t window, const char* icon, const char* icon_type);
+
+/**
+ * @brief Encode text to Base64. The returned buffer need to be freed.
+ *
+ * @param str The string to encode (Should be null terminated)
+ *
+ * @return Returns the base64 encoded string
+ *
+ * @example char* base64 = webui_encode("Foo Bar");
+ */
+WEBUI_EXPORT char* webui_encode(const char* str);
+
+/**
+ * @brief Decode a Base64 encoded text. The returned buffer need to be freed.
+ *
+ * @param str The string to decode (Should be null terminated)
+ *
+ * @return Returns the base64 decoded string
+ *
+ * @example char* str = webui_decode("SGVsbG8=");
+ */
+WEBUI_EXPORT char* webui_decode(const char* str);
+
+/**
+ * @brief Safely free a buffer allocated by WebUI using `webui_malloc()`.
+ *
+ * @param ptr The buffer to be freed
+ *
+ * @example webui_free(myBuffer);
+ */
+WEBUI_EXPORT void webui_free(void* ptr);
+
+/**
+ * @brief Safely allocate memory using the WebUI memory management system. It
+ * can be safely freed using `webui_free()` at any time.
+ *
+ * @param size The size of memory in bytes
+ *
+ * @example char* myBuffer = (char*)webui_malloc(1024);
+ */
+WEBUI_EXPORT void* webui_malloc(size_t size);
+
+/**
+ * @brief Copy raw data.
+ *
+ * @param dest Destination memory pointer
+ * @param src Source memory pointer
+ * @param count Bytes to copy
+ *
+ * @example webui_memcpy(myBuffer, myData, 64);
+ */
+WEBUI_EXPORT void webui_memcpy(void* dest, void* src, size_t count);
+
+/**
+ * @brief Safely send raw data to the UI. All clients.
+ *
+ * @param window The window number
+ * @param function The JavaScript function to receive raw data: `function
+ * myFunc(myData){}`
+ * @param raw The raw data buffer
+ * @param size The raw data size in bytes
+ *
+ * @example webui_send_raw(myWindow, "myJavaScriptFunc", myBuffer, 64);
+ */
+WEBUI_EXPORT void webui_send_raw(size_t window, const char* function, const void* raw, size_t size);
+
+/**
+ * @brief Safely send raw data to the UI. Single client.
+ *
+ * @param e The event struct
+ * @param function The JavaScript function to receive raw data: `function
+ * myFunc(myData){}`
+ * @param raw The raw data buffer
+ * @param size The raw data size in bytes
+ *
+ * @example webui_send_raw_client(e, "myJavaScriptFunc", myBuffer, 64);
+ */
+WEBUI_EXPORT void webui_send_raw_client(webui_event_t* e, const char* function,
+ const void* raw, size_t size);
+
+/**
+ * @brief Set a window in hidden mode. Should be called before `webui_show()`.
+ *
+ * @param window The window number
+ * @param status The status: True or False
+ *
+ * @example webui_set_hide(myWindow, True);
+ */
+WEBUI_EXPORT void webui_set_hide(size_t window, bool status);
+
+/**
+ * @brief Set the window size.
+ *
+ * @param window The window number
+ * @param width The window width
+ * @param height The window height
+ *
+ * @example webui_set_size(myWindow, 800, 600);
+ */
+WEBUI_EXPORT void webui_set_size(size_t window, unsigned int width, unsigned int height);
+
+/**
+ * @brief Set the window minimum size.
+ *
+ * @param window The window number
+ * @param width The window width
+ * @param height The window height
+ *
+ * @example webui_set_minimum_size(myWindow, 800, 600);
+ */
+WEBUI_EXPORT void webui_set_minimum_size(size_t window, unsigned int width, unsigned int height);
+
+/**
+ * @brief Set the window position.
+ *
+ * @param window The window number
+ * @param x The window X
+ * @param y The window Y
+ *
+ * @example webui_set_position(myWindow, 100, 100);
+ */
+WEBUI_EXPORT void webui_set_position(size_t window, unsigned int x, unsigned int y);
+
+/**
+ * @brief Centers the window on the screen. Works better with
+ * WebView. Call this function before `webui_show()` for better results.
+ *
+ * @param window The window number
+ *
+ * @example webui_set_center(myWindow);
+ */
+WEBUI_EXPORT void webui_set_center(size_t window);
+
+/**
+ * @brief Set the web browser profile to use. An empty `name` and `path` means
+ * the default user profile. Need to be called before `webui_show()`.
+ *
+ * @param window The window number
+ * @param name The web browser profile name
+ * @param path The web browser profile full path
+ *
+ * @example webui_set_profile(myWindow, "Bar", "/Home/Foo/Bar"); |
+ * webui_set_profile(myWindow, "", "");
+ */
+WEBUI_EXPORT void webui_set_profile(size_t window, const char* name, const char* path);
+
+/**
+ * @brief Set the web browser proxy server to use. Need to be called before `webui_show()`.
+ *
+ * @param window The window number
+ * @param proxy_server The web browser proxy_server
+ *
+ * @example webui_set_proxy(myWindow, "http://127.0.0.1:8888");
+ */
+WEBUI_EXPORT void webui_set_proxy(size_t window, const char* proxy_server);
+
+/**
+ * @brief Get current URL of a running window.
+ *
+ * @param window The window number
+ *
+ * @return Returns the full URL string
+ *
+ * @example const char* url = webui_get_url(myWindow);
+ */
+WEBUI_EXPORT const char* webui_get_url(size_t window);
+
+/**
+ * @brief Open an URL in the native default web browser.
+ *
+ * @param url The URL to open
+ *
+ * @example webui_open_url("https://webui.me");
+ */
+WEBUI_EXPORT void webui_open_url(const char* url);
+
+/**
+ * @brief Allow a specific window address to be accessible from a public network.
+ *
+ * @param window The window number
+ * @param status True or False
+ *
+ * @example webui_set_public(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_public(size_t window, bool status);
+
+/**
+ * @brief Navigate to a specific URL. All clients.
+ *
+ * @param window The window number
+ * @param url Full HTTP URL
+ *
+ * @example webui_navigate(myWindow, "http://domain.com");
+ */
+WEBUI_EXPORT void webui_navigate(size_t window, const char* url);
+
+/**
+ * @brief Navigate to a specific URL. Single client.
+ *
+ * @param e The event struct
+ * @param url Full HTTP URL
+ *
+ * @example webui_navigate_client(e, "http://domain.com");
+ */
+WEBUI_EXPORT void webui_navigate_client(webui_event_t* e, const char* url);
+
+/**
+ * @brief Free all memory resources. Should be called only at the end.
+ *
+ * @example
+ * webui_wait();
+ * webui_clean();
+ */
+WEBUI_EXPORT void webui_clean(void);
+
+/**
+ * @brief Delete all local web-browser profiles folder. It should be called at the
+ * end.
+ *
+ * @example
+ * webui_wait();
+ * webui_delete_all_profiles();
+ * webui_clean();
+ */
+WEBUI_EXPORT void webui_delete_all_profiles(void);
+
+/**
+ * @brief Delete a specific window web-browser local folder profile.
+ *
+ * @param window The window number
+ *
+ * @example
+ * webui_wait();
+ * webui_delete_profile(myWindow);
+ * webui_clean();
+ *
+ * @note This can break functionality of other windows if using the same
+ * web-browser.
+ */
+WEBUI_EXPORT void webui_delete_profile(size_t window);
+
+/**
+ * @brief Get the parent process ID, which refers to the current backend application process.
+ *
+ * @param window The window number
+ *
+ * @return Returns the the parent process id as integer
+ *
+ * @example size_t id = webui_get_parent_process_id(myWindow);
+ */
+WEBUI_EXPORT size_t webui_get_parent_process_id(size_t window);
+
+/**
+ * @brief Get the child process ID created by the parent, which refers to the web browser window.
+ *
+ * Note: In WebView mode, this will return the parent process ID because the backend and the
+ * WebView window run in the same process.
+ *
+ * @param window The window number
+ *
+ * @return Returns the the child process id as integer
+ *
+ * @example size_t id = webui_get_child_process_id(myWindow);
+ */
+WEBUI_EXPORT size_t webui_get_child_process_id(size_t window);
+
+/**
+ * @brief Gets Win32 window `HWND`. More reliable with WebView
+ * than web browser window, as browser PIDs may change on launch.
+ *
+ * @param window The window number
+ *
+ * @return Returns the window `hwnd` as `void*`
+ *
+ * @example HWND hwnd = webui_win32_get_hwnd(myWindow);
+ */
+WEBUI_EXPORT void* webui_win32_get_hwnd(size_t window);
+
+/**
+ * @brief Get window `HWND`. More reliable with WebView
+ * than web browser window, as browser PIDs may change on launch.
+ *
+ * @param window The window number
+ *
+ * @return Returns the window `hwnd` in Win32, `GtkWindow` in Linux.
+ *
+ * @example
+ * HWND hwnd = webui_get_hwnd(myWindow); // Win32 (Work with WebView and web browser)
+ * GtkWindow* window = webui_get_hwnd(myWindow); // Linux (Work with WebView only)
+ */
+WEBUI_EXPORT void* webui_get_hwnd(size_t window);
+
+/**
+ * @brief Get the network port of a running window.
+ * This can be useful to determine the HTTP link of `webui.js`
+ *
+ * @param window The window number
+ *
+ * @return Returns the network port of the window
+ *
+ * @example size_t port = webui_get_port(myWindow);
+ */
+WEBUI_EXPORT size_t webui_get_port(size_t window);
+
+/**
+ * @brief Set a custom web-server/websocket network port to be used by WebUI.
+ * This can be useful to determine the HTTP link of `webui.js` in case
+ * you are trying to use WebUI with an external web-server like NGNIX.
+ *
+ * @param window The window number
+ * @param port The web-server network port WebUI should use
+ *
+ * @return Returns True if the port is free and usable by WebUI
+ *
+ * @example bool ret = webui_set_port(myWindow, 8080);
+ */
+WEBUI_EXPORT bool webui_set_port(size_t window, size_t port);
+
+/**
+ * @brief Get an available usable free network port.
+ *
+ * @return Returns a free port
+ *
+ * @example size_t port = webui_get_free_port();
+ */
+WEBUI_EXPORT size_t webui_get_free_port(void);
+
+/**
+ * @brief Set a custom logger function.
+ *
+ * @example
+ * void myLogger(size_t level, const char* log, void* user_data) {
+ * printf("myLogger (%d): %s", level, log);
+ * }
+ * webui_set_logger(myLogger, NULL);
+ */
+WEBUI_EXPORT void webui_set_logger(void (*func)(size_t level, const char* log, void* user_data), void *user_data);
+
+/**
+ * @brief Control the WebUI behaviour. It's recommended to be called at the beginning.
+ *
+ * @param option The desired option from `webui_config` enum
+ * @param status The status of the option, `true` or `false`
+ *
+ * @example webui_set_config(show_wait_connection, false);
+ */
+WEBUI_EXPORT void webui_set_config(webui_config option, bool status);
+
+/**
+ * @brief Control if UI events comming from this window should be processed
+ * one a time in a single blocking thread `True`, or process every event in
+ * a new non-blocking thread `False`. This update single window. You can use
+ * `webui_set_config(ui_event_blocking, ...)` to update all windows.
+ *
+ * @param window The window number
+ * @param status The blocking status `true` or `false`
+ *
+ * @example webui_set_event_blocking(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_event_blocking(size_t window, bool status);
+
+/**
+ * @brief Make a WebView window frameless.
+ *
+ * @param window The window number
+ * @param status The frameless status `true` or `false`
+ *
+ * @example webui_set_frameless(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_frameless(size_t window, bool status);
+
+/**
+ * @brief Make a WebView window transparent.
+ *
+ * @param window The window number
+ * @param status The transparency status `true` or `false`
+ *
+ * @example webui_set_transparent(myWindow, true);
+ */
+WEBUI_EXPORT void webui_set_transparent(size_t window, bool status);
+
+/**
+ * @brief Get the HTTP mime type of a file.
+ *
+ * @return Returns the HTTP mime string
+ *
+ * @example const char* mime = webui_get_mime_type("foo.png");
+ */
+WEBUI_EXPORT const char* webui_get_mime_type(const char* file);
+
+// -- SSL/TLS -------------------------
+
+/**
+ * @brief Set the SSL/TLS certificate and the private key content, both in PEM
+ * format. This works only with `webui-2-secure` library. If set empty WebUI
+ * will generate a self-signed certificate.
+ *
+ * @param certificate_pem The SSL/TLS certificate content in PEM format
+ * @param private_key_pem The private key content in PEM format
+ *
+ * @return Returns True if the certificate and the key are valid.
+ *
+ * @example bool ret = webui_set_tls_certificate("-----BEGIN
+ * CERTIFICATE-----\n...", "-----BEGIN PRIVATE KEY-----\n...");
+ */
+WEBUI_EXPORT bool webui_set_tls_certificate(const char* certificate_pem, const char* private_key_pem);
+
+// -- JavaScript ----------------------
+
+/**
+ * @brief Run JavaScript without waiting for the response. All clients.
+ *
+ * @param window The window number
+ * @param script The JavaScript to be run
+ *
+ * @example webui_run(myWindow, "alert('Hello');");
+ */
+WEBUI_EXPORT void webui_run(size_t window, const char* script);
+
+/**
+ * @brief Run JavaScript without waiting for the response. Single client.
+ *
+ * @param e The event struct
+ * @param script The JavaScript to be run
+ *
+ * @example webui_run_client(e, "alert('Hello');");
+ */
+WEBUI_EXPORT void webui_run_client(webui_event_t* e, const char* script);
+
+/**
+ * @brief Run JavaScript and get the response back. Work only in single client mode.
+ * Make sure your local buffer can hold the response.
+ *
+ * @param window The window number
+ * @param script The JavaScript to be run
+ * @param timeout The execution timeout in seconds
+ * @param buffer The local buffer to hold the response
+ * @param buffer_length The local buffer size
+ *
+ * @return Returns True if there is no execution error
+ *
+ * @example bool err = webui_script(myWindow, "return 4 + 6;", 0, myBuffer, myBufferSize);
+ */
+WEBUI_EXPORT bool webui_script(size_t window, const char* script, size_t timeout,
+ char* buffer, size_t buffer_length);
+
+/**
+ * @brief Run JavaScript and get the response back. Single client.
+ * Make sure your local buffer can hold the response.
+ *
+ * @param e The event struct
+ * @param script The JavaScript to be run
+ * @param timeout The execution timeout in seconds
+ * @param buffer The local buffer to hold the response
+ * @param buffer_length The local buffer size
+ *
+ * @return Returns True if there is no execution error
+ *
+ * @example bool err = webui_script_client(e, "return 4 + 6;", 0, myBuffer, myBufferSize);
+ */
+WEBUI_EXPORT bool webui_script_client(webui_event_t* e, const char* script, size_t timeout,
+ char* buffer, size_t buffer_length);
+
+/**
+ * @brief Chose between Deno and Nodejs as runtime for .js and .ts files.
+ *
+ * @param window The window number
+ * @param runtime Deno | Bun | Nodejs | None
+ *
+ * @example webui_set_runtime(myWindow, Deno);
+ */
+WEBUI_EXPORT void webui_set_runtime(size_t window, size_t runtime);
+
+/**
+ * @brief Get how many arguments there are in an event.
+ *
+ * @param e The event struct
+ *
+ * @return Returns the arguments count.
+ *
+ * @example size_t count = webui_get_count(e);
+ */
+WEBUI_EXPORT size_t webui_get_count(webui_event_t* e);
+
+/**
+ * @brief Get an argument as integer at a specific index.
+ *
+ * @param e The event struct
+ * @param index The argument position starting from 0
+ *
+ * @return Returns argument as integer
+ *
+ * @example long long int myNum = webui_get_int_at(e, 0);
+ */
+WEBUI_EXPORT long long int webui_get_int_at(webui_event_t* e, size_t index);
+
+/**
+ * @brief Get the first argument as integer.
+ *
+ * @param e The event struct
+ *
+ * @return Returns argument as integer
+ *
+ * @example long long int myNum = webui_get_int(e);
+ */
+WEBUI_EXPORT long long int webui_get_int(webui_event_t* e);
+
+/**
+ * @brief Get an argument as float at a specific index.
+ *
+ * @param e The event struct
+ * @param index The argument position starting from 0
+ *
+ * @return Returns argument as float
+ *
+ * @example double myNum = webui_get_float_at(e, 0);
+ */
+WEBUI_EXPORT double webui_get_float_at(webui_event_t* e, size_t index);
+
+/**
+ * @brief Get the first argument as float.
+ *
+ * @param e The event struct
+ *
+ * @return Returns argument as float
+ *
+ * @example double myNum = webui_get_float(e);
+ */
+WEBUI_EXPORT double webui_get_float(webui_event_t* e);
+
+/**
+ * @brief Get an argument as string at a specific index.
+ *
+ * @param e The event struct
+ * @param index The argument position starting from 0
+ *
+ * @return Returns argument as string
+ *
+ * @example const char* myStr = webui_get_string_at(e, 0);
+ */
+WEBUI_EXPORT const char* webui_get_string_at(webui_event_t* e, size_t index);
+
+/**
+ * @brief Get the first argument as string.
+ *
+ * @param e The event struct
+ *
+ * @return Returns argument as string
+ *
+ * @example const char* myStr = webui_get_string(e);
+ */
+WEBUI_EXPORT const char* webui_get_string(webui_event_t* e);
+
+/**
+ * @brief Get an argument as boolean at a specific index.
+ *
+ * @param e The event struct
+ * @param index The argument position starting from 0
+ *
+ * @return Returns argument as boolean
+ *
+ * @example bool myBool = webui_get_bool_at(e, 0);
+ */
+WEBUI_EXPORT bool webui_get_bool_at(webui_event_t* e, size_t index);
+
+/**
+ * @brief Get the first argument as boolean.
+ *
+ * @param e The event struct
+ *
+ * @return Returns argument as boolean
+ *
+ * @example bool myBool = webui_get_bool(e);
+ */
+WEBUI_EXPORT bool webui_get_bool(webui_event_t* e);
+
+/**
+ * @brief Get the size in bytes of an argument at a specific index.
+ *
+ * @param e The event struct
+ * @param index The argument position starting from 0
+ *
+ * @return Returns size in bytes
+ *
+ * @example size_t argLen = webui_get_size_at(e, 0);
+ */
+WEBUI_EXPORT size_t webui_get_size_at(webui_event_t* e, size_t index);
+
+/**
+ * @brief Get size in bytes of the first argument.
+ *
+ * @param e The event struct
+ *
+ * @return Returns size in bytes
+ *
+ * @example size_t argLen = webui_get_size(e);
+ */
+WEBUI_EXPORT size_t webui_get_size(webui_event_t* e);
+
+/**
+ * @brief Return the response to JavaScript as integer.
+ *
+ * @param e The event struct
+ * @param n The integer to be send to JavaScript
+ *
+ * @example webui_return_int(e, 123);
+ */
+WEBUI_EXPORT void webui_return_int(webui_event_t* e, long long int n);
+
+/**
+ * @brief Return the response to JavaScript as float.
+ *
+ * @param e The event struct
+ * @param f The float number to be send to JavaScript
+ *
+ * @example webui_return_float(e, 123.456);
+ */
+WEBUI_EXPORT void webui_return_float(webui_event_t* e, double f);
+
+/**
+ * @brief Return the response to JavaScript as string.
+ *
+ * @param e The event struct
+ * @param n The string to be send to JavaScript
+ *
+ * @example webui_return_string(e, "Response...");
+ */
+WEBUI_EXPORT void webui_return_string(webui_event_t* e, const char* s);
+
+/**
+ * @brief Return the response to JavaScript as boolean.
+ *
+ * @param e The event struct
+ * @param n The boolean to be send to JavaScript
+ *
+ * @example webui_return_bool(e, true);
+ */
+WEBUI_EXPORT void webui_return_bool(webui_event_t* e, bool b);
+
+/**
+ * @brief Get the last WebUI error code.
+ *
+ * @example int error_num = webui_get_last_error_number();
+ */
+WEBUI_EXPORT size_t webui_get_last_error_number();
+
+/**
+ * @brief Get the last WebUI error message.
+ *
+ * @example const char* error_msg = webui_get_last_error_message();
+ */
+WEBUI_EXPORT const char* webui_get_last_error_message();
+
+// -- Wrapper's Interface -------------
+
+/**
+ * @brief Bind a specific HTML element click event with a function. Empty element means all events.
+ *
+ * @param window The window number
+ * @param element The element ID
+ * @param func The callback as myFunc(Window, EventType, Element, EventNumber, BindID)
+ *
+ * @return Returns unique bind ID
+ *
+ * @example size_t id = webui_interface_bind(myWindow, "myID", myCallback);
+ */
+WEBUI_EXPORT size_t webui_interface_bind(size_t window, const char* element,
+ void (*func)(size_t, size_t, char*, size_t, size_t));
+
+/**
+ * @brief When using `webui_interface_bind()`, you may need this function to easily set a response.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param response The response as string to be send to JavaScript
+ *
+ * @example webui_interface_set_response(myWindow, e->event_number, "Response...");
+ */
+WEBUI_EXPORT void webui_interface_set_response(size_t window, size_t event_number, const char* response);
+
+/**
+ * @brief Check if the app still running.
+ *
+ * @return Returns True if app is running
+ *
+ * @example bool status = webui_interface_is_app_running();
+ */
+WEBUI_EXPORT bool webui_interface_is_app_running(void);
+
+/**
+ * @brief Get a unique window ID.
+ *
+ * @param window The window number
+ *
+ * @return Returns the unique window ID as integer
+ *
+ * @example size_t id = webui_interface_get_window_id(myWindow);
+ */
+WEBUI_EXPORT size_t webui_interface_get_window_id(size_t window);
+
+/**
+ * @brief Get an argument as string at a specific index.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param index The argument position
+ *
+ * @return Returns argument as string
+ *
+ * @example const char* myStr = webui_interface_get_string_at(myWindow, e->event_number, 0);
+ */
+WEBUI_EXPORT const char* webui_interface_get_string_at(size_t window, size_t event_number, size_t index);
+
+/**
+ * @brief Get an argument as integer at a specific index.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param index The argument position
+ *
+ * @return Returns argument as integer
+ *
+ * @example long long int myNum = webui_interface_get_int_at(myWindow, e->event_number, 0);
+ */
+WEBUI_EXPORT long long int webui_interface_get_int_at(size_t window, size_t event_number, size_t index);
+
+/**
+ * @brief Get an argument as float at a specific index.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param index The argument position
+ *
+ * @return Returns argument as float
+ *
+ * @example double myFloat = webui_interface_get_int_at(myWindow, e->event_number, 0);
+ */
+WEBUI_EXPORT double webui_interface_get_float_at(size_t window, size_t event_number, size_t index);
+
+/**
+ * @brief Get an argument as boolean at a specific index.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param index The argument position
+ *
+ * @return Returns argument as boolean
+ *
+ * @example bool myBool = webui_interface_get_bool_at(myWindow, e->event_number, 0);
+ */
+WEBUI_EXPORT bool webui_interface_get_bool_at(size_t window, size_t event_number, size_t index);
+
+/**
+ * @brief Get the size in bytes of an argument at a specific index.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param index The argument position
+ *
+ * @return Returns size in bytes
+ *
+ * @example size_t argLen = webui_interface_get_size_at(myWindow, e->event_number, 0);
+ */
+WEBUI_EXPORT size_t webui_interface_get_size_at(size_t window, size_t event_number, size_t index);
+
+/**
+ * @brief Show a window using embedded HTML, or a file. If the window is already
+ * open, it will be refreshed. Single client.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param content The HTML, URL, Or a local file
+ *
+ * @return Returns True if showing the window is successed.
+ *
+ * @example webui_show_client(e, "..."); |
+ * webui_show_client(e, "index.html"); | webui_show_client(e, "http://...");
+ */
+WEBUI_EXPORT bool webui_interface_show_client(size_t window, size_t event_number, const char* content);
+
+/**
+ * @brief Close a specific client.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ *
+ * @example webui_close_client(e);
+ */
+WEBUI_EXPORT void webui_interface_close_client(size_t window, size_t event_number);
+
+/**
+ * @brief Safely send raw data to the UI. Single client.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param function The JavaScript function to receive raw data: `function
+ * myFunc(myData){}`
+ * @param raw The raw data buffer
+ * @param size The raw data size in bytes
+ *
+ * @example webui_send_raw_client(e, "myJavaScriptFunc", myBuffer, 64);
+ */
+WEBUI_EXPORT void webui_interface_send_raw_client(size_t window, size_t event_number, const char* function, const void* raw, size_t size);
+
+/**
+ * @brief Navigate to a specific URL. Single client.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param url Full HTTP URL
+ *
+ * @example webui_navigate_client(e, "http://domain.com");
+ */
+WEBUI_EXPORT void webui_interface_navigate_client(size_t window, size_t event_number, const char* url);
+
+/**
+ * @brief Run JavaScript without waiting for the response. Single client.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param script The JavaScript to be run
+ *
+ * @example webui_run_client(e, "alert('Hello');");
+ */
+WEBUI_EXPORT void webui_interface_run_client(size_t window, size_t event_number, const char* script);
+
+/**
+ * @brief Run JavaScript and get the response back. Single client.
+ * Make sure your local buffer can hold the response.
+ *
+ * @param window The window number
+ * @param event_number The event number
+ * @param script The JavaScript to be run
+ * @param timeout The execution timeout in seconds
+ * @param buffer The local buffer to hold the response
+ * @param buffer_length The local buffer size
+ *
+ * @return Returns True if there is no execution error
+ *
+ * @example bool err = webui_script_client(e, "return 4 + 6;", 0, myBuffer, myBufferSize);
+ */
+WEBUI_EXPORT bool webui_interface_script_client(size_t window, size_t event_number, const char* script, size_t timeout, char* buffer, size_t buffer_length);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WEBUI_H */
diff --git a/v2/webui/include/webui.hpp b/v2/webui/include/webui.hpp
new file mode 100644
index 0000000..f45dc3b
--- /dev/null
+++ b/v2/webui/include/webui.hpp
@@ -0,0 +1,619 @@
+/*
+ WebUI Library
+ https://webui.me
+ https://github.com/webui-dev/webui
+ Copyright (c) 2020-2026 Hassan Draga.
+ Licensed under MIT License.
+ All rights reserved.
+ Canada.
+*/
+
+#ifndef _WEBUI_HPP
+#define _WEBUI_HPP
+
+// C++ STD
+#include
+#include
+#include
+#include
+#include
+
+// WebUI C Header
+extern "C" {
+ #include "webui.h"
+}
+
+namespace webui {
+
+ enum : int {
+ DISCONNECTED = 0, // 0. Window disconnection event
+ CONNECTED = 1, // 1. Window connection event
+ MOUSE_CLICK = 2, // 2. Mouse click event
+ NAVIGATION = 3, // 3. Window navigation event
+ CALLBACKS = 4 // 4. Function call event
+ };
+
+ class window {
+ private:
+ size_t webui_window{webui_new_window()};
+
+ public:
+ // Event Struct
+ class event : public webui_event_t {
+ // Window object constructor that
+ // initializes the reference, This
+ // is to avoid creating copies.
+ event(webui::window& window_obj, webui_event_t c_e) : webui_event_t(c_e) {
+ reinterpret_cast(this)->window = window_obj.webui_window;
+ }
+
+ public:
+ class handler {
+
+ public:
+ using callback_t = std::function;
+
+ private:
+ static inline std::unordered_map callback_list{};
+
+ // List of window objects: webui::window
+ static inline std::unordered_map window_list{};
+ static inline std::mutex callback_mutex{};
+
+ public:
+ handler() = delete;
+ handler(const handler&) = delete;
+ handler(handler&&) = delete;
+ handler& operator=(const handler&) = delete;
+ handler& operator=(handler&&) = delete;
+ ~handler() = delete;
+
+ static void add(size_t id, webui::window* win, callback_t func) {
+ if ((id == 0) || (win == nullptr) || !func)
+ return;
+
+ std::lock_guard lock(callback_mutex);
+ // Save window object
+ window_list[id] = win;
+ // Save callback
+ callback_list[id] = func;
+ }
+
+ static void handle(webui_event_t* c_e) {
+ if (c_e == nullptr)
+ return;
+
+ // Get the binded unique ID
+ const size_t id = c_e->bind_id;
+ if (id == 0)
+ return;
+
+ webui::window* win = nullptr;
+ callback_t callback;
+
+ {
+ std::lock_guard lock(callback_mutex);
+ const auto win_it = window_list.find(id);
+ const auto cb_it = callback_list.find(id);
+ if ((win_it != window_list.end()) && (cb_it != callback_list.end())) {
+ win = win_it->second;
+ callback = cb_it->second;
+ }
+ }
+
+ if ((win != nullptr) && callback) {
+ // Create a new event struct
+ event e(*win, *c_e);
+ // Call the user callback
+ callback(&e);
+ }
+ }
+
+ static webui::window& get_window(const size_t index) { return *window_list.at(index); }
+ };
+
+ // ------ Event methods `e->xxx()` ------
+
+ // Get how many arguments there are in an event.
+ size_t get_count() {
+ return webui_get_count(this);
+ }
+
+ // Get an argument as integer at a specific index.
+ long long int get_int(size_t index = 0) {
+ return webui_get_int_at(this, index);
+ }
+
+ // Get an argument as string at a specific index.
+ double get_float(size_t index = 0) {
+ return webui_get_float_at(this, index);
+ }
+
+ // Get the size in bytes of an argument at a specific index.
+ size_t get_size(size_t index = 0) {
+ return webui_get_size_at(this, index);
+ }
+
+ // Get an argument as string at a specific index.
+ std::string get_string(size_t index = 0) {
+ return std::string{webui_get_string_at(this, index)};
+ }
+
+ // Get an argument as string_view at a specific index.
+ std::string_view get_string_view(size_t index = 0) {
+ return std::string_view{webui_get_string_at(this, index)};
+ }
+
+ // Get an argument as boolean at a specific index.
+ bool get_bool(size_t index = 0) {
+ return webui_get_bool_at(this, index);
+ }
+
+ // Run JavaScript without waiting for the response. Single client.
+ bool script_client(const std::string_view script, unsigned int timeout,
+ char* buffer, size_t buffer_length) {
+ return webui_script_client(this, script.data(), timeout, buffer, buffer_length);
+ }
+
+ // Run JavaScript without waiting for the response. Single client.
+ void run_client(const std::string_view script) {
+ webui_run_client(this, script.data());
+ }
+
+ // Return the response to JavaScript as integer.
+ void return_int(long long int n) {
+ webui_return_int(this, n);
+ }
+
+ // Return the response to JavaScript as integer.
+ void return_float(double f) {
+ webui_return_float(this, f);
+ }
+
+ // Safely send raw data to the UI. Single client.
+ void send_raw_client(const std::string_view function, const void* raw, size_t size) {
+ webui_send_raw_client(this, function.data(), raw, size);
+ }
+
+ // Return the response to JavaScript as string.
+ void return_string(const std::string_view s) {
+ webui_return_string(this, s.data());
+ }
+
+ // Return the response to JavaScript as boolean.
+ void return_bool(bool b) {
+ webui_return_bool(this, b);
+ }
+
+ // Close a specific client.
+ void close_client() {
+ webui_close_client(this);
+ }
+
+ // Navigate to a specific URL. Single client.
+ void navigate_client(const std::string_view url) {
+ webui_navigate_client(this, url.data());
+ }
+
+ // Same as `show()` but for a specific single client
+ bool show_client(const std::string_view s) {
+ return webui_show_client(this, s.data());
+ }
+
+ // Get user data that is set using `set_context()`
+ void* get_context() {
+ return webui_get_context(this);
+ }
+
+ // Extras
+
+ // Get current window object pointer
+ webui::window& get_window() {
+ return event::handler::get_window(bind_id);
+ }
+
+ // Get event type
+ size_t get_type() const {
+ return event_type;
+ }
+
+ // Get event element name
+ std::string_view get_element() const {
+ return std::string_view{element};
+ }
+
+ // Get event number
+ size_t get_number() const {
+ return event_number;
+ }
+ };
+
+ // ------ Window methods `window.xxx()` ------
+
+ // Bind a specific html element click event with a function. Empty element means all events.
+ void bind(const std::string_view element, event::handler::callback_t func) {
+ // Get unique ID
+ const size_t id = webui_bind(webui_window, element.data(), event::handler::handle);
+ event::handler::add(id, this, func);
+ }
+
+ // Bind a class member function.
+ template
+ void bind(const std::string_view element, T* instance, void (T::*method)(event*)) {
+ bind(element, [instance, method](event* e) {
+ (instance->*method)(e);
+ });
+ }
+
+ // Show a window (WebView/Browser) using embedded HTML, URL, file, or folder.
+ // Empty content means: use current root folder + index fallback.
+ bool show(const std::string_view content = "") const {
+ return webui_show(webui_window, content.data());
+ }
+
+ // Same as show(). But with a specific web browser.
+ bool show_browser(const std::string_view content = "", unsigned int browser = AnyBrowser) const {
+ return webui_show_browser(webui_window, content.data(), browser);
+ }
+
+ // Set the window in Kiosk mode (Full screen)
+ void set_kiosk(bool status) const {
+ webui_set_kiosk(webui_window, status);
+ }
+
+ // Add user-defined command line parameters
+ void set_custom_parameters(char *params) const {
+ webui_set_custom_parameters(webui_window, params);
+ }
+
+ // Set the window with high-contrast support. Useful when you want to build a better high-contrast theme with CSS.
+ void set_high_contrast(bool status) const {
+ webui_set_high_contrast(webui_window, status);
+ }
+
+ // Maximize the window
+ void maximize() {
+ webui_maximize(webui_window);
+ }
+
+ // Minimize the window
+ void minimize() {
+ webui_minimize(webui_window);
+ }
+
+ // Close a specific window only. The window object will still exist.
+ void close() const {
+ webui_close(webui_window);
+ }
+
+ // Close a specific window and free all memory resources.
+ void destroy() const {
+ webui_destroy(webui_window);
+ }
+
+ // Check a specific window if it's still running
+ bool is_shown() const {
+ return webui_is_shown(webui_window);
+ }
+
+ // Set the default embedded HTML favicon
+ void set_icon(const std::string_view icon, const std::string_view icon_type) const {
+ webui_set_icon(webui_window, icon.data(), icon_type.data());
+ }
+
+ // Safely send raw data to the UI
+ void send_raw(const std::string_view function, const void* raw, size_t size) const {
+ webui_send_raw(webui_window, function.data(), raw, size);
+ }
+
+ // Run the window in hidden mode
+ void set_hide(bool status) const {
+ webui_set_hide(webui_window, status);
+ }
+
+ // Set window size
+ void set_size(unsigned int width, unsigned int height) const {
+ webui_set_size(webui_window, width, height);
+ }
+
+ // Set window minimum size (currently windows only.)
+ void set_minimum_size(unsigned int width, unsigned int height) const {
+ webui_set_minimum_size(webui_window, width, height);
+ }
+
+ // Get the network port of a running window. This can be useful to determine the HTTP link of `webui.js`
+ size_t get_port() const {
+ return webui_get_port(webui_window);
+ }
+
+ // Set a custom web-server network port to be used by WebUI. This can be useful to determine the HTTP
+ // link of `webui.js` in case you are trying to use WebUI with an external web-server like NGNIX
+ bool set_port(size_t port) const {
+ return webui_set_port(webui_window, port);
+ }
+
+ // Set window position
+ void set_position(unsigned int x, unsigned int y) const {
+ webui_set_position(webui_window, x, y);
+ }
+
+ // Delete a specific window web-browser local folder profile.
+ void delete_profile() const {
+ webui_delete_profile(webui_window);
+ }
+
+ // Get the ID of the parent process (The web browser may create another process for the window).
+ size_t get_parent_process_id() const {
+ return webui_get_parent_process_id(webui_window);
+ }
+
+ // Get the ID of the last child process spawned by the browser.
+ size_t get_child_process_id() const {
+ return webui_get_child_process_id(webui_window);
+ }
+
+ size_t get_best_browser() const {
+ return webui_get_best_browser(webui_window);
+ }
+
+ // Set the web-server root folder path for this specific window.
+ bool set_root_folder(const std::string_view path) const {
+ return webui_set_root_folder(webui_window, path.data());
+ }
+
+ // Set a custom handler to serve files. This custom handler should return full HTTP header and body.
+ // Resets previous handler set with `set_file_handler_window`.
+ void set_file_handler(const void* (*handler)(const char* filename, int* length)) const {
+ webui_set_file_handler(webui_window, handler);
+ }
+
+ // Set a custom handler to serve files. This custom handler should return full HTTP header and body.
+ // Resets previous handler set with `set_file_handler`
+ void set_file_handler_window(const void* (*handler)(size_t window, const char* filename, int* length)) const {
+ webui_set_file_handler_window(webui_window, handler);
+ }
+
+ // Set the web browser profile to use. An empty `name` and `path` means the default user profile. Need
+ // to be called before `webui_show()`.
+ void set_profile(const std::string_view name = {""}, const std::string_view path = {""}) const {
+ webui_set_profile(webui_window, name.data(), path.data());
+ }
+
+ // Set the web browser proxy to use. Need to be called before `webui_show()`.
+ void set_proxy(const std::string_view proxy_server = {""}) const {
+ webui_set_proxy(webui_window, proxy_server.data());
+ }
+
+ // Get the full current URL
+ std::string_view get_url() const {
+ return std::string_view{webui_get_url(webui_window)};
+ }
+
+ // Navigate to a specific URL.
+ void navigate(const std::string_view url) const {
+ webui_navigate(webui_window, url.data());
+ }
+
+ // Control if UI events coming from this window should be processed one at a time in a
+ // single blocking thread `True`, or process every event in a new non-blocking thread `False`.
+ void set_event_blocking(bool status) const {
+ webui_set_event_blocking(webui_window, status);
+ }
+
+ // Show a WebView window using embedded HTML, or a file. If the window is already open, it will be refreshed.
+ bool show_wv(const std::string_view content) const {
+ return webui_show_wv(webui_window, content.data());
+ }
+
+ // Allow a specific window address to be accessible from a public network.
+ void set_public(bool status) const {
+ webui_set_public(webui_window, status);
+ }
+
+ // Enable or disable the window frame.
+ void set_frameless(bool status) const {
+ webui_set_frameless(webui_window, status);
+ }
+
+ // Enable or disable window background transparency.
+ // When enabled, the window background will be transparent (if supported).
+ void set_transparent(bool status) const {
+ webui_set_transparent(webui_window, status);
+ }
+
+ // Enable or disable window resizing by user.
+ void set_resizable(bool status) const {
+ webui_set_resizable(webui_window, status);
+ }
+
+ // Set window position to the center of the screen.
+ void set_center() const {
+ webui_set_center(webui_window);
+ }
+
+ // Start only the local web server and return the URL.
+ // Empty content means: use current root folder + index fallback.
+ std::string_view start_server(const std::string_view content = "") const {
+ return std::string_view{webui_start_server(webui_window, content.data())};
+ }
+
+ // Quickly run a JavaScript (no response waiting).
+ void run(const std::string_view script) const {
+ webui_run(webui_window, script.data());
+ }
+
+ // Run a JavaScript, and get the response back (Make sure your local buffer can hold the response).
+ bool script(const std::string_view script, unsigned int timeout,
+ char* buffer, size_t buffer_length) const {
+ return webui_script(webui_window, script.data(), timeout, buffer, buffer_length);
+ }
+
+ // Chose between Deno and Nodejs runtime for .js and .ts files.
+ void set_runtime(unsigned int runtime) const {
+ webui_set_runtime(webui_window, runtime);
+ }
+
+ // Use this API after using `bind()` to add any user data to it that can be
+ // read later using `get_context()`.
+ void set_context(const std::string_view element, void* context) const {
+ webui_set_context(webui_window, element.data(), context);
+ }
+
+ // Gets Win32 window `HWND`. More reliable with WebView than web browser
+ // window, as browser PIDs may change on launch.
+ void* win32_get_hwnd() const {
+ return webui_win32_get_hwnd(webui_window);
+ }
+
+ // Get the native window handle. On Windows returns HWND (works with WebView
+ // and web browser). On Linux returns GtkWindow* (WebView only).
+ void* get_hwnd() const {
+ return webui_get_hwnd(webui_window);
+ }
+
+ // Bring the window to the front and give it keyboard focus.
+ void focus() const {
+ webui_focus(webui_window);
+ }
+
+ // Set a callback to intercept the close event of a WebView window.
+ // The handler must return false to prevent closing, true to allow it.
+ void set_close_handler_wv(bool (*close_handler)(size_t window)) const {
+ webui_set_close_handler_wv(webui_window, close_handler);
+ }
+ };
+
+ // ------ Namespace members `webui::xxx()` ------
+
+ // Wait until all opened windows get closed.
+ inline void wait() {
+ webui_wait();
+ }
+
+ // Close all opened windows. wait() will break.
+ inline void exit() {
+ webui_exit();
+ }
+
+ // Get an available usable free network port.
+ inline size_t get_free_port() {
+ return webui_get_free_port();
+ }
+
+ // Open an URL in the native default web browser.
+ inline void open_url(const std::string_view url) {
+ webui_open_url(url.data());
+ }
+
+ // Set the web-server root folder path for all windows.
+ inline bool set_default_root_folder(const std::string_view path) {
+ return webui_set_default_root_folder(path.data());
+ }
+
+ // Set custom browser folder path.
+ inline void set_browser_folder(const std::string_view path) {
+ webui_set_browser_folder(path.data());
+ }
+
+ // Get OS high contrast preference.
+ inline bool is_high_contrast() {
+ return webui_is_high_contrast();
+ }
+
+ // Check if a web browser is installed.
+ inline bool browser_exist(unsigned int browser) {
+ return webui_browser_exist(browser);
+ }
+
+ // Set the maximum time in seconds to wait for browser to start
+ inline void set_timeout(unsigned int second) {
+ webui_set_timeout(second);
+ }
+
+ // Get the HTTP mime type of a file.
+ inline std::string get_mime_type(const std::string_view file) {
+ return std::string{webui_get_mime_type(file.data())};
+ }
+
+ // Base64 encoding. Use this to safely send text based data to the UI. If it fails it will return NULL.
+ inline std::string encode(const std::string_view str) {
+ return std::string{webui_encode(str.data())};
+ }
+
+ // Base64 decoding. Use this to safely decode received Base64 text from the UI. If it fails it will return NULL.
+ inline std::string decode(const std::string_view str) {
+ return std::string{webui_decode(str.data())};
+ }
+
+ // Set the SSL/TLS certificate and the private key content, both in PEM format.
+ // This works only with `webui-2-secure` library. If set empty WebUI will generate a self-signed certificate.
+ inline bool set_tls_certificate(const std::string_view certificate_pem,
+ const std::string_view private_key_pem) {
+ return webui_set_tls_certificate(certificate_pem.data(), private_key_pem.data());
+ }
+
+ // Safely free a buffer allocated by WebUI, for example when using webui_encode().
+ inline void free(void* ptr) {
+ webui_free(ptr);
+ }
+
+ // Safely free a buffer allocated by WebUI, for example when using webui_encode().
+ inline void* malloc(size_t size) {
+ return webui_malloc(size);
+ }
+
+ // Free all memory resources. Should be called only at the end.
+ inline void clean() {
+ webui_clean();
+ }
+
+ // Delete all local web-browser profiles folder. It should called at the end.
+ inline void delete_all_profiles() {
+ webui_delete_all_profiles();
+ }
+
+ // Get a free window number that can be used with `webui_new_window_id()`.
+ inline size_t get_new_window_id() {
+ return webui_get_new_window_id();
+ }
+
+ // Control the WebUI behaviour. Should be called at the beginning.
+ inline void set_config(webui_config option, bool status) {
+ webui_set_config(option, status);
+ }
+
+ // Check if the app is still running.
+ inline bool is_app_running() {
+ return webui_interface_is_app_running();
+ }
+
+ // Copy raw data.
+ inline void memcpy(void* dest, const void* src, size_t count) {
+ webui_memcpy(dest, const_cast(src), count);
+ }
+
+ // Wait asynchronously until all opened windows get closed.
+ // Returns true if more windows are still open, false when all are closed.
+ // Must be called from the main thread in WebView mode.
+ inline bool wait_async() {
+ return webui_wait_async();
+ }
+
+ // Set a custom logger function to receive WebUI's internal log messages.
+ inline void set_logger(void (*func)(size_t level, const char* log, void* user_data), void* user_data = nullptr) {
+ webui_set_logger(func, user_data);
+ }
+
+ // Get the error code from the most recent WebUI operation that failed.
+ inline size_t get_last_error_number() {
+ return webui_get_last_error_number();
+ }
+
+ // Get the human-readable error message from the most recent failed WebUI operation.
+ inline std::string_view get_last_error_message() {
+ return std::string_view{webui_get_last_error_message()};
+ }
+
+} // namespace webui
+
+#endif /* _WEBUI_HPP */
diff --git a/v2/webui/include/webui_extensions.h b/v2/webui/include/webui_extensions.h
new file mode 100644
index 0000000..af13e96
--- /dev/null
+++ b/v2/webui/include/webui_extensions.h
@@ -0,0 +1,121 @@
+/*
+ WebUI Library
+ https://webui.me
+ https://github.com/webui-dev/webui
+ Copyright (c) 2020-2026 Hassan Draga.
+ Licensed under MIT License.
+ All rights reserved.
+ Canada.
+*/
+
+#ifndef _WEBUI_EXTENSIONS_H
+#define _WEBUI_EXTENSIONS_H
+
+#include "webui.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Construct a JavaScript string from a format string,
+ * then execute it without waiting for the response. All clients.
+ *
+ * @param window The window number
+ * @param fmt The JavaScript format string to be run
+ *
+ * @warning This function DOES NOT handle escape characters, proceed with caution.
+ * For example, when passing string arguments that contain quotes or backslashes,
+ * it may lead to unexpected behavior
+ *
+ * @note This function internally uses vsnprintf
+ *
+ * @example webui_run_fmt(myWindow, "alert('Hello %s');", "World");
+ */
+void webui_run_fmt(size_t window, const char* fmt, ...) {
+
+ int len;
+ char* buf;
+
+ // Precalculate actual string length
+ va_list args;
+ va_start(args, fmt);
+ len = vsnprintf(NULL, 0, fmt, args);
+ va_end(args);
+
+ if (len < 1) return;
+
+ buf = (char*)webui_malloc(len + 1);
+ if (buf == NULL) return;
+
+ // Format and execute
+ va_start(args, fmt);
+ vsnprintf(buf, len + 1, fmt, args);
+ va_end(args);
+
+ webui_run(window, buf);
+
+ webui_free((void*)buf);
+}
+
+/**
+ * @brief Construct a JavaScript string from a format string,
+ * then execute it and get the response back. Work only in single client mode.
+ * Make sure your local buffer can hold the response.
+ *
+ * @param window The window number
+ * @param timeout The execution timeout in seconds
+ * @param buffer The local buffer to hold the response
+ * @param buffer_length The local buffer size
+ * @param fmt The JavaScript format string to be run
+ *
+ * @return Returns True if there is no execution error
+ *
+ * @warning This function DOES NOT handle escape characters, proceed with caution.
+ * For example, when passing string arguments that contain quotes or backslashes,
+ * it may lead to unexpected behavior
+ *
+ * @note This function internally uses vsnprintf
+ *
+ * @example bool err = webui_script_fmt(myWindow, 0, myBuffer, myBufferSize,
+ * "return %d + %d;", 4, 6);
+ */
+bool webui_script_fmt(
+ size_t window,
+ size_t timeout,
+ char* buffer,
+ size_t buffer_length,
+ const char* fmt, ...) {
+
+ int len;
+ char* buf;
+ bool status;
+
+ // Precalculate actual string length
+ va_list args;
+ va_start(args, fmt);
+ len = vsnprintf(NULL, 0, fmt, args);
+ va_end(args);
+
+ if (len < 1) return false;
+
+ buf = (char*)webui_malloc(len + 1);
+ if (buf == NULL) return false;
+
+ // Format and execute
+ va_start(args, fmt);
+ vsnprintf(buf, len + 1, fmt, args);
+ va_end(args);
+
+ status = webui_script(window, buf, timeout, buffer, buffer_length);
+
+ webui_free((void*)buf);
+
+ return status;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WEBUI_EXTENSIONS_H */
diff --git a/v2/webui/src/civetweb/CMakeLists.txt b/v2/webui/src/civetweb/CMakeLists.txt
new file mode 100644
index 0000000..b4ec891
--- /dev/null
+++ b/v2/webui/src/civetweb/CMakeLists.txt
@@ -0,0 +1,29 @@
+cmake_minimum_required(VERSION 3.10)
+project(civetweb)
+
+# Source files
+set(SOURCE_FILES
+ civetweb.c
+ civetweb.h
+ handle_form.inl
+ match.inl
+ md5.inl
+ response.inl
+ sha1.inl
+ sort.inl
+)
+
+# The C API library
+add_library(civetweb ${SOURCE_FILES})
+
+# Include directories
+target_include_directories(civetweb PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+# Link libraries
+find_package(Threads REQUIRED)
+target_link_libraries(civetweb Threads::Threads)
+
+# If on Windows, link with WinSock
+if(WIN32)
+ target_link_libraries(civetweb ws2_32)
+endif()
diff --git a/v2/webui/src/civetweb/README.md b/v2/webui/src/civetweb/README.md
new file mode 100644
index 0000000..13b8abd
--- /dev/null
+++ b/v2/webui/src/civetweb/README.md
@@ -0,0 +1,17 @@
+Changes currently required when updating the submodule to ensure full direct interoperability for wrappers:
+
+- Prevent warnings for e.g. `malloc` and `snprintf` usage outside civetweb.
+
+ ```diff
+ + // Disable All Warnings
+ + #ifdef _MSC_VER
+ + #pragma warning(push, 0)
+ + #pragma warning(disable: 4996)
+ + #elif defined(__clang__)
+ + #pragma clang system_header
+ + #elif defined(__GNUC__)
+ + #pragma GCC system_header
+ + #endif
+
+ /* Copyright (c) 2013-2024 the Civetweb developers
+ ```
\ No newline at end of file
diff --git a/v2/webui/src/civetweb/civetweb.c b/v2/webui/src/civetweb/civetweb.c
new file mode 100644
index 0000000..a399ce4
--- /dev/null
+++ b/v2/webui/src/civetweb/civetweb.c
@@ -0,0 +1,23274 @@
+/* Copyright (c) 2013-2025 the Civetweb developers
+ * Copyright (c) 2004-2013 Sergey Lyubka
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#if defined(__GNUC__) || defined(__MINGW32__)
+#ifndef GCC_VERSION
+#define GCC_VERSION \
+ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+#if GCC_VERSION >= 40500
+/* gcc diagnostic pragmas available */
+#define GCC_DIAGNOSTIC
+#endif
+#endif
+
+#if defined(GCC_DIAGNOSTIC)
+/* Disable unused macros warnings - not all defines are required
+ * for all systems and all compilers. */
+#pragma GCC diagnostic ignored "-Wunused-macros"
+/* A padding warning is just plain useless */
+#pragma GCC diagnostic ignored "-Wpadded"
+#endif
+
+#if defined(__clang__) /* GCC does not (yet) support this pragma */
+/* We must set some flags for the headers we include. These flags
+ * are reserved ids according to C99, so we need to disable a
+ * warning for that. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wreserved-id-macro"
+#endif
+
+#if defined(_WIN32)
+#if !defined(_CRT_SECURE_NO_WARNINGS)
+#define _CRT_SECURE_NO_WARNINGS /* Disable deprecation warning in VS2005 */
+#endif
+#if !defined(_WIN32_WINNT) /* Minimum API version */
+#define _WIN32_WINNT 0x0601
+#endif
+#else
+#if !defined(_GNU_SOURCE)
+#define _GNU_SOURCE /* for setgroups(), pthread_setname_np() */
+#endif
+#if defined(__linux__) && !defined(_XOPEN_SOURCE)
+#define _XOPEN_SOURCE 600 /* For flockfile() on Linux */
+#endif
+#if defined(__LSB_VERSION__) || defined(__sun)
+#define NEED_TIMEGM
+#define NO_THREAD_NAME
+#endif
+#if !defined(_LARGEFILE_SOURCE)
+#define _LARGEFILE_SOURCE /* For fseeko(), ftello() */
+#endif
+#if !defined(_FILE_OFFSET_BITS)
+#define _FILE_OFFSET_BITS 64 /* Use 64-bit file offsets by default */
+#endif
+#if !defined(__STDC_FORMAT_MACROS)
+#define __STDC_FORMAT_MACROS /* wants this for C++ */
+#endif
+#if !defined(__STDC_LIMIT_MACROS)
+#define __STDC_LIMIT_MACROS /* C++ wants that for INT64_MAX */
+#endif
+#if !defined(_DARWIN_UNLIMITED_SELECT)
+#define _DARWIN_UNLIMITED_SELECT
+#endif
+#if defined(__sun)
+#define __EXTENSIONS__ /* to expose flockfile and friends in stdio.h */
+#define __inline inline /* not recognized on older compiler versions */
+#endif
+#endif
+
+#if defined(__clang__)
+/* Enable reserved-id-macro warning again. */
+#pragma GCC diagnostic pop
+#endif
+
+
+#if defined(USE_LUA)
+#define USE_TIMERS
+#endif
+
+#if defined(_MSC_VER)
+/* 'type cast' : conversion from 'int' to 'HANDLE' of greater size */
+#pragma warning(disable : 4306)
+/* conditional expression is constant: introduced by FD_SET(..) */
+#pragma warning(disable : 4127)
+/* non-constant aggregate initializer: issued due to missing C99 support */
+#pragma warning(disable : 4204)
+/* padding added after data member */
+#pragma warning(disable : 4820)
+/* not defined as a preprocessor macro, replacing with '0' for '#if/#elif' */
+#pragma warning(disable : 4668)
+/* no function prototype given: converting '()' to '(void)' */
+#pragma warning(disable : 4255)
+/* function has been selected for automatic inline expansion */
+#pragma warning(disable : 4711)
+#endif
+
+
+/* This code uses static_assert to check some conditions.
+ * Unfortunately some compilers still do not support it, so we have a
+ * replacement function here. */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201100L
+#define mg_static_assert _Static_assert
+#elif defined(__cplusplus) && __cplusplus >= 201103L
+#define mg_static_assert static_assert
+#else
+char static_assert_replacement[1];
+#define mg_static_assert(cond, txt) \
+ extern char static_assert_replacement[(cond) ? 1 : -1]
+#endif
+
+mg_static_assert(sizeof(int) == 4 || sizeof(int) == 8,
+ "int data type size check");
+mg_static_assert(sizeof(void *) == 4 || sizeof(void *) == 8,
+ "pointer data type size check");
+mg_static_assert(sizeof(void *) >= sizeof(int), "data type size check");
+
+
+/* Select queue implementation. Diagnosis features originally only implemented
+ * for the "ALTERNATIVE_QUEUE" have been ported to the previous queue
+ * implementation (NO_ALTERNATIVE_QUEUE) as well. The new configuration value
+ * "CONNECTION_QUEUE_SIZE" is only available for the previous queue
+ * implementation, since the queue length is independent from the number of
+ * worker threads there, while the new queue is one element per worker thread.
+ *
+ */
+#if defined(NO_ALTERNATIVE_QUEUE) && defined(ALTERNATIVE_QUEUE)
+/* The queues are exclusive or - only one can be used. */
+#error \
+ "Define ALTERNATIVE_QUEUE or NO_ALTERNATIVE_QUEUE (or none of them), but not both"
+#endif
+#if !defined(NO_ALTERNATIVE_QUEUE) && !defined(ALTERNATIVE_QUEUE)
+/* Use a default implementation */
+#define NO_ALTERNATIVE_QUEUE
+#endif
+
+#if defined(NO_FILESYSTEMS) && !defined(NO_FILES)
+/* File system access:
+ * NO_FILES = do not serve any files from the file system automatically.
+ * However, with NO_FILES CivetWeb may still write log files, read access
+ * control files, default error page files or use API functions like
+ * mg_send_file in callbacks to send files from the server local
+ * file system.
+ * NO_FILES only disables the automatic mapping between URLs and local
+ * file names.
+ * NO_FILESYSTEMS = do not access any file at all. Useful for embedded
+ * devices without file system. Logging to files in not available
+ * (use callbacks instead) and API functions like mg_send_file are not
+ * available.
+ * If NO_FILESYSTEM is set, NO_FILES must be set as well.
+ */
+#error "Inconsistent build flags, NO_FILESYSTEMS requires NO_FILES"
+#endif
+
+/* DTL -- including winsock2.h works better if lean and mean */
+#if !defined(WIN32_LEAN_AND_MEAN)
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#if defined(__SYMBIAN32__)
+/* According to https://en.wikipedia.org/wiki/Symbian#History,
+ * Symbian is no longer maintained since 2014-01-01.
+ * Support for Symbian has been removed from CivetWeb
+ */
+#error "Symbian is no longer maintained. CivetWeb no longer supports Symbian."
+#endif /* __SYMBIAN32__ */
+
+#if defined(__rtems__)
+#include
+#endif
+
+#if defined(__ZEPHYR__)
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+/* Max worker threads is the max of pthreads minus the main application thread
+ * and minus the main civetweb thread, thus -2
+ */
+#define MAX_WORKER_THREADS (CONFIG_MAX_PTHREAD_COUNT - 2)
+
+#if defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1)
+#define ZEPHYR_STACK_SIZE USE_STACK_SIZE
+#else
+#define ZEPHYR_STACK_SIZE (1024 * 16)
+#endif
+
+K_THREAD_STACK_DEFINE(civetweb_main_stack, ZEPHYR_STACK_SIZE);
+K_THREAD_STACK_ARRAY_DEFINE(civetweb_worker_stacks,
+ MAX_WORKER_THREADS,
+ ZEPHYR_STACK_SIZE);
+
+static int zephyr_worker_stack_index;
+
+#endif
+
+#if !defined(CIVETWEB_HEADER_INCLUDED)
+/* Include the header file here, so the CivetWeb interface is defined for the
+ * entire implementation, including the following forward definitions. */
+#include "civetweb.h"
+#endif
+
+#if !defined(DEBUG_TRACE)
+#if defined(DEBUG)
+static void DEBUG_TRACE_FUNC(const char *func,
+ unsigned line,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(3, 4);
+
+#define DEBUG_TRACE(fmt, ...) \
+ DEBUG_TRACE_FUNC(__func__, __LINE__, fmt, __VA_ARGS__)
+
+#define NEED_DEBUG_TRACE_FUNC
+#if !defined(DEBUG_TRACE_STREAM)
+#define DEBUG_TRACE_STREAM stderr
+#endif
+
+#else
+#define DEBUG_TRACE(fmt, ...) \
+ do { \
+ } while (0)
+#endif /* DEBUG */
+#endif /* DEBUG_TRACE */
+
+
+#if !defined(DEBUG_ASSERT)
+#if defined(DEBUG)
+#include
+#define DEBUG_ASSERT(cond) \
+ do { \
+ if (!(cond)) { \
+ DEBUG_TRACE("ASSERTION FAILED: %s", #cond); \
+ exit(2); /* Exit with error */ \
+ } \
+ } while (0)
+#else
+#define DEBUG_ASSERT(cond)
+#endif /* DEBUG */
+#endif
+
+
+#if defined(__GNUC__) && defined(GCC_INSTRUMENTATION)
+void __cyg_profile_func_enter(void *this_fn, void *call_site)
+ __attribute__((no_instrument_function));
+
+void __cyg_profile_func_exit(void *this_fn, void *call_site)
+ __attribute__((no_instrument_function));
+
+void
+__cyg_profile_func_enter(void *this_fn, void *call_site)
+{
+ if ((void *)this_fn != (void *)printf) {
+ printf("E %p %p\n", this_fn, call_site);
+ }
+}
+
+void
+__cyg_profile_func_exit(void *this_fn, void *call_site)
+{
+ if ((void *)this_fn != (void *)printf) {
+ printf("X %p %p\n", this_fn, call_site);
+ }
+}
+#endif
+
+
+#if !defined(IGNORE_UNUSED_RESULT)
+#define IGNORE_UNUSED_RESULT(a) ((void)((a) && 1))
+#endif
+
+
+#if defined(__GNUC__) || defined(__MINGW32__)
+
+/* GCC unused function attribute seems fundamentally broken.
+ * Several attempts to tell the compiler "THIS FUNCTION MAY BE USED
+ * OR UNUSED" for individual functions failed.
+ * Either the compiler creates an "unused-function" warning if a
+ * function is not marked with __attribute__((unused)).
+ * On the other hand, if the function is marked with this attribute,
+ * but is used, the compiler raises a completely idiotic
+ * "used-but-marked-unused" warning - and
+ * #pragma GCC diagnostic ignored "-Wused-but-marked-unused"
+ * raises error: unknown option after "#pragma GCC diagnostic".
+ * Disable this warning completely, until the GCC guys sober up
+ * again.
+ */
+
+#pragma GCC diagnostic ignored "-Wunused-function"
+
+#define FUNCTION_MAY_BE_UNUSED /* __attribute__((unused)) */
+
+#else
+#define FUNCTION_MAY_BE_UNUSED
+#endif
+
+
+/* Some ANSI #includes are not available on Windows CE and Zephyr */
+#if !defined(_WIN32_WCE) && !defined(__ZEPHYR__)
+#include
+#include
+#include
+#include
+#include
+#include
+#endif /* !_WIN32_WCE */
+
+
+#if defined(__clang__)
+/* When using -Weverything, clang does not accept it's own headers
+ * in a release build configuration. Disable what is too much in
+ * -Weverything. */
+#pragma clang diagnostic ignored "-Wdisabled-macro-expansion"
+#endif
+
+#if defined(__GNUC__) || defined(__MINGW32__)
+/* Who on earth came to the conclusion, using __DATE__ should rise
+ * an "expansion of date or time macro is not reproducible"
+ * warning. That's exactly what was intended by using this macro.
+ * Just disable this nonsense warning. */
+
+/* And disabling them does not work either:
+ * #pragma clang diagnostic ignored "-Wno-error=date-time"
+ * #pragma clang diagnostic ignored "-Wdate-time"
+ * So we just have to disable ALL warnings for some lines
+ * of code.
+ * This seems to be a known GCC bug, not resolved since 2012:
+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
+ */
+#endif
+
+
+#if defined(__MACH__) && defined(__APPLE__) /* Apple OSX section */
+
+#if defined(__clang__)
+#if (__clang_major__ == 3) && ((__clang_minor__ == 7) || (__clang_minor__ == 8))
+/* Avoid warnings for Xcode 7. It seems it does no longer exist in Xcode 8 */
+#pragma clang diagnostic ignored "-Wno-reserved-id-macro"
+#pragma clang diagnostic ignored "-Wno-keyword-macro"
+#endif
+#endif
+
+#ifndef CLOCK_MONOTONIC
+#define CLOCK_MONOTONIC (1)
+#endif
+#ifndef CLOCK_REALTIME
+#define CLOCK_REALTIME (2)
+#endif
+
+#include
+#include
+#include
+#include
+#include
+
+/* clock_gettime is not implemented on OSX prior to 10.12 */
+static int
+_civet_clock_gettime(int clk_id, struct timespec *t)
+{
+ memset(t, 0, sizeof(*t));
+ if (clk_id == CLOCK_REALTIME) {
+ struct timeval now;
+ int rv = gettimeofday(&now, NULL);
+ if (rv) {
+ return rv;
+ }
+ t->tv_sec = now.tv_sec;
+ t->tv_nsec = now.tv_usec * 1000;
+ return 0;
+
+ } else if (clk_id == CLOCK_MONOTONIC) {
+ static uint64_t clock_start_time = 0;
+ static mach_timebase_info_data_t timebase_ifo = {0, 0};
+
+ uint64_t now = mach_absolute_time();
+
+ if (clock_start_time == 0) {
+ kern_return_t mach_status = mach_timebase_info(&timebase_ifo);
+ DEBUG_ASSERT(mach_status == KERN_SUCCESS);
+
+ /* appease "unused variable" warning for release builds */
+ (void)mach_status;
+
+ clock_start_time = now;
+ }
+
+ now = (uint64_t)((double)(now - clock_start_time)
+ * (double)timebase_ifo.numer
+ / (double)timebase_ifo.denom);
+
+ t->tv_sec = now / 1000000000;
+ t->tv_nsec = now % 1000000000;
+ return 0;
+ }
+ return -1; /* EINVAL - Clock ID is unknown */
+}
+
+/* if clock_gettime is declared, then __CLOCK_AVAILABILITY will be defined */
+#if defined(__CLOCK_AVAILABILITY)
+/* If we compiled with Mac OSX 10.12 or later, then clock_gettime will be
+ * declared but it may be NULL at runtime. So we need to check before using
+ * it. */
+static int
+_civet_safe_clock_gettime(int clk_id, struct timespec *t)
+{
+ if (clock_gettime) {
+ return clock_gettime(clk_id, t);
+ }
+ return _civet_clock_gettime(clk_id, t);
+}
+#define clock_gettime _civet_safe_clock_gettime
+#else
+#define clock_gettime _civet_clock_gettime
+#endif
+
+#endif
+
+
+#if defined(_WIN32)
+#define ERROR_TRY_AGAIN(err) ((err) == WSAEWOULDBLOCK)
+#else
+/* Unix might return different error codes indicating to try again.
+ * For Linux EAGAIN==EWOULDBLOCK, maybe EAGAIN!=EWOULDBLOCK is history from
+ * decades ago, but better check both and let the compiler optimize it. */
+#define ERROR_TRY_AGAIN(err) \
+ (((err) == EAGAIN) || ((err) == EWOULDBLOCK) || ((err) == EINTR))
+#endif
+
+#if defined(USE_ZLIB)
+#include "zconf.h"
+#include "zlib.h"
+#endif
+
+
+/********************************************************************/
+/* CivetWeb configuration defines */
+/********************************************************************/
+
+/* Maximum number of threads that can be configured.
+ * The number of threads actually created depends on the "num_threads"
+ * configuration parameter, but this is the upper limit. */
+#if !defined(MAX_WORKER_THREADS)
+#define MAX_WORKER_THREADS (1024 * 64) /* in threads (count) */
+#endif
+
+/* Timeout interval for select/poll calls.
+ * The timeouts depend on "*_timeout_ms" configuration values, but long
+ * timeouts are split into timouts as small as SOCKET_TIMEOUT_QUANTUM.
+ * This reduces the time required to stop the server. */
+#if !defined(SOCKET_TIMEOUT_QUANTUM)
+#define SOCKET_TIMEOUT_QUANTUM (2000) /* in ms */
+#endif
+
+/* Do not try to compress files smaller than this limit. */
+#if !defined(MG_FILE_COMPRESSION_SIZE_LIMIT)
+#define MG_FILE_COMPRESSION_SIZE_LIMIT (1024) /* in bytes */
+#endif
+
+#if !defined(PASSWORDS_FILE_NAME)
+#define PASSWORDS_FILE_NAME ".htpasswd"
+#endif
+
+/* Initial buffer size for all CGI environment variables. In case there is
+ * not enough space, another block is allocated. */
+#if !defined(CGI_ENVIRONMENT_SIZE)
+#define CGI_ENVIRONMENT_SIZE (4096) /* in bytes */
+#endif
+
+/* Maximum number of environment variables. */
+#if !defined(MAX_CGI_ENVIR_VARS)
+#define MAX_CGI_ENVIR_VARS (256) /* in variables (count) */
+#endif
+
+/* General purpose buffer size. */
+#if !defined(MG_BUF_LEN) /* in bytes */
+#define MG_BUF_LEN (1024 * 8)
+#endif
+
+
+/********************************************************************/
+
+/* Helper macros */
+#if !defined(ARRAY_SIZE)
+#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
+#endif
+
+#include
+
+/* Standard defines */
+#if !defined(INT64_MAX)
+#define INT64_MAX (9223372036854775807)
+#endif
+
+#define SHUTDOWN_RD (0)
+#define SHUTDOWN_WR (1)
+#define SHUTDOWN_BOTH (2)
+
+mg_static_assert(MAX_WORKER_THREADS >= 1,
+ "worker threads must be a positive number");
+
+mg_static_assert(sizeof(size_t) == 4 || sizeof(size_t) == 8,
+ "size_t data type size check");
+
+
+#if defined(_WIN32) /* WINDOWS include block */
+#include /* *alloc( */
+#include /* *alloc( */
+#include /* struct timespec */
+#include
+#include /* DTL add for SO_EXCLUSIVE */
+#include
+
+typedef const char *SOCK_OPT_TYPE;
+
+/* For a detailed description of these *_PATH_MAX defines, see
+ * https://github.com/civetweb/civetweb/issues/937. */
+
+/* UTF8_PATH_MAX is a char buffer size for 259 BMP characters in UTF-8 plus
+ * null termination, rounded up to the next 4 bytes boundary */
+#define UTF8_PATH_MAX (3 * 260)
+/* UTF16_PATH_MAX is the 16-bit wchar_t buffer size required for 259 BMP
+ * characters plus termination. (Note: wchar_t is 16 bit on Windows) */
+#define UTF16_PATH_MAX (260)
+
+#if !defined(_IN_PORT_T)
+#if !defined(in_port_t)
+#define in_port_t u_short
+#endif
+#endif
+
+#if defined(_WIN32_WCE)
+#error "WinCE support has ended"
+#endif
+
+#include
+#include
+#include
+
+
+#define MAKEUQUAD(lo, hi) \
+ ((uint64_t)(((uint32_t)(lo)) | ((uint64_t)((uint32_t)(hi))) << 32))
+#define RATE_DIFF (10000000) /* 100 nsecs */
+#define EPOCH_DIFF (MAKEUQUAD(0xd53e8000, 0x019db1de))
+#define SYS2UNIX_TIME(lo, hi) \
+ ((time_t)((MAKEUQUAD((lo), (hi)) - EPOCH_DIFF) / RATE_DIFF))
+
+/* Visual Studio 6 does not know __func__ or __FUNCTION__
+ * The rest of MS compilers use __FUNCTION__, not C99 __func__
+ * Also use _strtoui64 on modern M$ compilers */
+#if defined(_MSC_VER)
+#if (_MSC_VER < 1300)
+#define STRX(x) #x
+#define STR(x) STRX(x)
+#define __func__ __FILE__ ":" STR(__LINE__)
+#define strtoull(x, y, z) ((unsigned __int64)_atoi64(x))
+#define strtoll(x, y, z) (_atoi64(x))
+#else
+#define __func__ __FUNCTION__
+#define strtoull(x, y, z) (_strtoui64(x, y, z))
+#define strtoll(x, y, z) (_strtoi64(x, y, z))
+#endif
+#endif /* _MSC_VER */
+
+
+#define ERRNO ((int)(GetLastError()))
+#define NO_SOCKLEN_T
+
+
+#if defined(_WIN64) || defined(__MINGW64__)
+#if !defined(SSL_LIB)
+
+#if defined(OPENSSL_API_3_0)
+#define SSL_LIB "libssl-3-x64.dll"
+#define CRYPTO_LIB "libcrypto-3-x64.dll"
+#endif
+
+#if defined(OPENSSL_API_1_1)
+#define SSL_LIB "libssl-1_1-x64.dll"
+#define CRYPTO_LIB "libcrypto-1_1-x64.dll"
+#endif /* OPENSSL_API_1_1 */
+
+#if defined(OPENSSL_API_1_0)
+#define SSL_LIB "ssleay64.dll"
+#define CRYPTO_LIB "libeay64.dll"
+#endif /* OPENSSL_API_1_0 */
+
+#endif
+#else /* defined(_WIN64) || defined(__MINGW64__) */
+#if !defined(SSL_LIB)
+
+#if defined(OPENSSL_API_3_0)
+#define SSL_LIB "libssl-3.dll"
+#define CRYPTO_LIB "libcrypto-3.dll"
+#endif
+
+#if defined(OPENSSL_API_1_1)
+#define SSL_LIB "libssl-1_1.dll"
+#define CRYPTO_LIB "libcrypto-1_1.dll"
+#endif /* OPENSSL_API_1_1 */
+
+#if defined(OPENSSL_API_1_0)
+#define SSL_LIB "ssleay32.dll"
+#define CRYPTO_LIB "libeay32.dll"
+#endif /* OPENSSL_API_1_0 */
+
+#endif /* SSL_LIB */
+#endif /* defined(_WIN64) || defined(__MINGW64__) */
+
+
+#define O_NONBLOCK (0)
+#if !defined(W_OK)
+#define W_OK (2) /* http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx */
+#endif
+#define _POSIX_
+#define INT64_FMT "I64d"
+#define UINT64_FMT "I64u"
+
+#define WINCDECL __cdecl
+#define vsnprintf_impl _vsnprintf
+#define access _access
+#define mg_sleep(x) (Sleep(x))
+
+#define pipe(x) _pipe(x, MG_BUF_LEN, _O_BINARY)
+#if !defined(popen)
+#define popen(x, y) (_popen(x, y))
+#endif
+#if !defined(pclose)
+#define pclose(x) (_pclose(x))
+#endif
+#define close(x) (_close(x))
+#define dlsym(x, y) (GetProcAddress((HINSTANCE)(x), (y)))
+#define RTLD_LAZY (0)
+#define fseeko(x, y, z) ((_lseeki64(_fileno(x), (y), (z)) == -1) ? -1 : 0)
+#define fdopen(x, y) (_fdopen((x), (y)))
+#define write(x, y, z) (_write((x), (y), (unsigned)z))
+#define read(x, y, z) (_read((x), (y), (unsigned)z))
+#define flockfile(x) ((void)pthread_mutex_lock(&global_log_file_lock))
+#define funlockfile(x) ((void)pthread_mutex_unlock(&global_log_file_lock))
+#define sleep(x) (Sleep((x)*1000))
+#define rmdir(x) (_rmdir(x))
+#if defined(_WIN64) || !defined(__MINGW32__)
+/* Only MinGW 32 bit is missing this function */
+#define timegm(x) (_mkgmtime(x))
+#else
+time_t timegm(struct tm *tm);
+#define NEED_TIMEGM
+#endif
+
+
+#if !defined(fileno)
+#define fileno(x) (_fileno(x))
+#endif /* !fileno MINGW #defines fileno */
+
+typedef struct {
+ CRITICAL_SECTION sec; /* Immovable */
+} pthread_mutex_t;
+typedef DWORD pthread_key_t;
+typedef HANDLE pthread_t;
+typedef struct {
+ pthread_mutex_t threadIdSec;
+ struct mg_workerTLS *waiting_thread; /* The chain of threads */
+} pthread_cond_t;
+
+#if !defined(__clockid_t_defined)
+typedef DWORD clockid_t;
+#endif
+#if !defined(CLOCK_MONOTONIC)
+#define CLOCK_MONOTONIC (1)
+#endif
+#if !defined(CLOCK_REALTIME)
+#define CLOCK_REALTIME (2)
+#endif
+#if !defined(CLOCK_THREAD)
+#define CLOCK_THREAD (3)
+#endif
+#if !defined(CLOCK_PROCESS)
+#define CLOCK_PROCESS (4)
+#endif
+
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1900)
+#define _TIMESPEC_DEFINED
+#endif
+#if !defined(_TIMESPEC_DEFINED)
+struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+};
+#endif
+
+#if !defined(WIN_PTHREADS_TIME_H)
+#define MUST_IMPLEMENT_CLOCK_GETTIME
+#endif
+
+#if defined(MUST_IMPLEMENT_CLOCK_GETTIME)
+#define clock_gettime mg_clock_gettime
+static int
+clock_gettime(clockid_t clk_id, struct timespec *tp)
+{
+ FILETIME ft;
+ ULARGE_INTEGER li, li2;
+ BOOL ok = FALSE;
+ double d;
+ static double perfcnt_per_sec = 0.0;
+ static BOOL initialized = FALSE;
+
+ if (!initialized) {
+ QueryPerformanceFrequency((LARGE_INTEGER *)&li);
+ perfcnt_per_sec = 1.0 / li.QuadPart;
+ initialized = TRUE;
+ }
+
+ if (tp) {
+ memset(tp, 0, sizeof(*tp));
+
+ if (clk_id == CLOCK_REALTIME) {
+
+ /* BEGIN: CLOCK_REALTIME = wall clock (date and time) */
+ GetSystemTimeAsFileTime(&ft);
+ li.LowPart = ft.dwLowDateTime;
+ li.HighPart = ft.dwHighDateTime;
+ li.QuadPart -= 116444736000000000; /* 1.1.1970 in filedate */
+ tp->tv_sec = (time_t)(li.QuadPart / 10000000);
+ tp->tv_nsec = (long)(li.QuadPart % 10000000) * 100;
+ ok = TRUE;
+ /* END: CLOCK_REALTIME */
+
+ } else if (clk_id == CLOCK_MONOTONIC) {
+
+ /* BEGIN: CLOCK_MONOTONIC = stopwatch (time differences) */
+ QueryPerformanceCounter((LARGE_INTEGER *)&li);
+ d = li.QuadPart * perfcnt_per_sec;
+ tp->tv_sec = (time_t)d;
+ d -= (double)tp->tv_sec;
+ tp->tv_nsec = (long)(d * 1.0E9);
+ ok = TRUE;
+ /* END: CLOCK_MONOTONIC */
+
+ } else if (clk_id == CLOCK_THREAD) {
+
+ /* BEGIN: CLOCK_THREAD = CPU usage of thread */
+ FILETIME t_create, t_exit, t_kernel, t_user;
+ if (GetThreadTimes(GetCurrentThread(),
+ &t_create,
+ &t_exit,
+ &t_kernel,
+ &t_user)) {
+ li.LowPart = t_user.dwLowDateTime;
+ li.HighPart = t_user.dwHighDateTime;
+ li2.LowPart = t_kernel.dwLowDateTime;
+ li2.HighPart = t_kernel.dwHighDateTime;
+ li.QuadPart += li2.QuadPart;
+ tp->tv_sec = (time_t)(li.QuadPart / 10000000);
+ tp->tv_nsec = (long)(li.QuadPart % 10000000) * 100;
+ ok = TRUE;
+ }
+ /* END: CLOCK_THREAD */
+
+ } else if (clk_id == CLOCK_PROCESS) {
+
+ /* BEGIN: CLOCK_PROCESS = CPU usage of process */
+ FILETIME t_create, t_exit, t_kernel, t_user;
+ if (GetProcessTimes(GetCurrentProcess(),
+ &t_create,
+ &t_exit,
+ &t_kernel,
+ &t_user)) {
+ li.LowPart = t_user.dwLowDateTime;
+ li.HighPart = t_user.dwHighDateTime;
+ li2.LowPart = t_kernel.dwLowDateTime;
+ li2.HighPart = t_kernel.dwHighDateTime;
+ li.QuadPart += li2.QuadPart;
+ tp->tv_sec = (time_t)(li.QuadPart / 10000000);
+ tp->tv_nsec = (long)(li.QuadPart % 10000000) * 100;
+ ok = TRUE;
+ }
+ /* END: CLOCK_PROCESS */
+
+ } else {
+
+ /* BEGIN: unknown clock */
+ /* ok = FALSE; already set by init */
+ /* END: unknown clock */
+ }
+ }
+
+ return ok ? 0 : -1;
+}
+#endif
+
+
+#define pid_t HANDLE /* MINGW typedefs pid_t to int. Using #define here. */
+
+static int pthread_mutex_lock(pthread_mutex_t *);
+static int pthread_mutex_unlock(pthread_mutex_t *);
+static void path_to_unicode(const struct mg_connection *conn,
+ const char *path,
+ wchar_t *wbuf,
+ size_t wbuf_len);
+
+/* All file operations need to be rewritten to solve #246. */
+
+struct mg_file;
+
+static const char *mg_fgets(char *buf, size_t size, struct mg_file *filep);
+
+
+/* POSIX dirent interface */
+struct dirent {
+ char d_name[UTF8_PATH_MAX];
+};
+
+typedef struct DIR {
+ HANDLE handle;
+ WIN32_FIND_DATAW info;
+ struct dirent result;
+} DIR;
+
+#if defined(HAVE_POLL)
+#define mg_pollfd pollfd
+#else
+struct mg_pollfd {
+ SOCKET fd;
+ short events;
+ short revents;
+};
+#endif
+
+/* Mark required libraries */
+#if defined(_MSC_VER)
+#pragma comment(lib, "Ws2_32.lib")
+#endif
+
+#else /* defined(_WIN32) - WINDOWS vs UNIX include block */
+
+#include
+
+/* Linux & co. internally use UTF8 */
+#define UTF8_PATH_MAX (PATH_MAX)
+
+typedef const void *SOCK_OPT_TYPE;
+
+#if defined(ANDROID)
+typedef unsigned short int in_port_t;
+#endif
+
+#if !defined(__ZEPHYR__)
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#if !defined(__rtems__)
+#include
+#endif
+#include
+#include
+#include
+#if defined(USE_X_DOM_SOCKET)
+#include
+#endif
+#endif
+
+#define vsnprintf_impl vsnprintf
+
+#if !defined(NO_SSL_DL) && !defined(NO_SSL)
+#include
+#endif
+
+#if defined(__MACH__) && defined(__APPLE__)
+
+#if defined(OPENSSL_API_3_0)
+#define SSL_LIB "libssl.3.dylib"
+#define CRYPTO_LIB "libcrypto.3.dylib"
+#endif
+
+#if defined(OPENSSL_API_1_1)
+#define SSL_LIB "libssl.1.1.dylib"
+#define CRYPTO_LIB "libcrypto.1.1.dylib"
+#endif /* OPENSSL_API_1_1 */
+
+#if defined(OPENSSL_API_1_0)
+#define SSL_LIB "libssl.1.0.dylib"
+#define CRYPTO_LIB "libcrypto.1.0.dylib"
+#endif /* OPENSSL_API_1_0 */
+
+#else
+#if !defined(SSL_LIB)
+#define SSL_LIB "libssl.so"
+#endif
+#if !defined(CRYPTO_LIB)
+#define CRYPTO_LIB "libcrypto.so"
+#endif
+#endif
+#if !defined(O_BINARY)
+#define O_BINARY (0)
+#endif /* O_BINARY */
+#define closesocket(a) (close(a))
+#define mg_mkdir(conn, path, mode) (mkdir(path, mode))
+#define mg_remove(conn, x) (remove(x))
+#define mg_sleep(x) (usleep((x)*1000))
+#define mg_opendir(conn, x) (opendir(x))
+#define mg_closedir(x) (closedir(x))
+#define mg_readdir(x) (readdir(x))
+#define ERRNO (errno)
+#define INVALID_SOCKET (-1)
+#define INT64_FMT PRId64
+#define UINT64_FMT PRIu64
+typedef int SOCKET;
+#define WINCDECL
+
+#if defined(__hpux)
+/* HPUX 11 does not have monotonic, fall back to realtime */
+#if !defined(CLOCK_MONOTONIC)
+#define CLOCK_MONOTONIC CLOCK_REALTIME
+#endif
+
+/* HPUX defines socklen_t incorrectly as size_t which is 64bit on
+ * Itanium. Without defining _XOPEN_SOURCE or _XOPEN_SOURCE_EXTENDED
+ * the prototypes use int* rather than socklen_t* which matches the
+ * actual library expectation. When called with the wrong size arg
+ * accept() returns a zero client inet addr and check_acl() always
+ * fails. Since socklen_t is widely used below, just force replace
+ * their typedef with int. - DTL
+ */
+#define socklen_t int
+#endif /* hpux */
+
+#define mg_pollfd pollfd
+
+#endif /* defined(_WIN32) - WINDOWS vs UNIX include block */
+
+/* In case our C library is missing "timegm", provide an implementation */
+#if defined(NEED_TIMEGM)
+static inline int
+is_leap(int y)
+{
+ return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
+}
+
+static inline int
+count_leap(int y)
+{
+ return (y - 1969) / 4 - (y - 1901) / 100 + (y - 1601) / 400;
+}
+
+static time_t
+timegm(struct tm *tm)
+{
+ static const unsigned short ydays[] = {
+ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
+ int year = tm->tm_year + 1900;
+ int mon = tm->tm_mon;
+ int mday = tm->tm_mday - 1;
+ int hour = tm->tm_hour;
+ int min = tm->tm_min;
+ int sec = tm->tm_sec;
+
+ if (year < 1970 || mon < 0 || mon > 11 || mday < 0
+ || (mday >= ydays[mon + 1] - ydays[mon]
+ + (mon == 1 && is_leap(year) ? 1 : 0))
+ || hour < 0 || hour > 23 || min < 0 || min > 59 || sec < 0 || sec > 60)
+ return -1;
+
+ time_t res = year - 1970;
+ res *= 365;
+ res += mday;
+ res += ydays[mon] + (mon > 1 && is_leap(year) ? 1 : 0);
+ res += count_leap(year);
+
+ res *= 24;
+ res += hour;
+ res *= 60;
+ res += min;
+ res *= 60;
+ res += sec;
+ return res;
+}
+#endif /* NEED_TIMEGM */
+
+
+/* va_copy should always be a macro, C99 and C++11 - DTL */
+#if !defined(va_copy)
+#define va_copy(x, y) ((x) = (y))
+#endif
+
+
+#if defined(_WIN32)
+/* Create substitutes for POSIX functions in Win32. */
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif
+
+
+static pthread_mutex_t global_log_file_lock;
+
+FUNCTION_MAY_BE_UNUSED
+static DWORD
+pthread_self(void)
+{
+ return GetCurrentThreadId();
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_key_create(
+ pthread_key_t *key,
+ void (*_ignored)(void *) /* destructor not supported for Windows */
+)
+{
+ (void)_ignored;
+
+ if ((key != 0)) {
+ *key = TlsAlloc();
+ return (*key != TLS_OUT_OF_INDEXES) ? 0 : -1;
+ }
+ return -2;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_key_delete(pthread_key_t key)
+{
+ return TlsFree(key) ? 0 : 1;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_setspecific(pthread_key_t key, void *value)
+{
+ return TlsSetValue(key, value) ? 0 : 1;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static void *
+pthread_getspecific(pthread_key_t key)
+{
+ return TlsGetValue(key);
+}
+
+#if defined(GCC_DIAGNOSTIC)
+/* Enable unused function warning again */
+#pragma GCC diagnostic pop
+#endif
+
+static struct pthread_mutex_undefined_struct *pthread_mutex_attr = NULL;
+#else
+static pthread_mutexattr_t pthread_mutex_attr;
+#endif /* _WIN32 */
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif /* defined(GCC_DIAGNOSTIC) */
+#if defined(__clang__)
+/* Show no warning in case system functions are not used. */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
+static pthread_mutex_t global_lock_mutex;
+
+
+FUNCTION_MAY_BE_UNUSED
+static void
+mg_global_lock(void)
+{
+ (void)pthread_mutex_lock(&global_lock_mutex);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static void
+mg_global_unlock(void)
+{
+ (void)pthread_mutex_unlock(&global_lock_mutex);
+}
+
+
+#if defined(_WIN64)
+mg_static_assert(SIZE_MAX == 0xFFFFFFFFFFFFFFFFu, "Mismatch for atomic types");
+#elif defined(_WIN32)
+mg_static_assert(SIZE_MAX == 0xFFFFFFFFu, "Mismatch for atomic types");
+#endif
+
+
+/* Atomic functions working on ptrdiff_t ("signed size_t").
+ * Operations: Increment, Decrement, Add, Maximum.
+ * Up to size_t, they do not an atomic "load" operation.
+ */
+FUNCTION_MAY_BE_UNUSED
+static ptrdiff_t
+mg_atomic_inc(volatile ptrdiff_t *addr)
+{
+ ptrdiff_t ret;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ ret = InterlockedIncrement64(addr);
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+#ifdef __cplusplus
+ /* For C++ the Microsoft Visual Studio compiler can not decide what
+ * overloaded function prototpye in the SDC corresponds to "ptrdiff_t". */
+ static_assert(sizeof(ptrdiff_t) == sizeof(LONG), "Size mismatch");
+ static_assert(sizeof(ptrdiff_t) == sizeof(int32_t), "Size mismatch");
+ ret = InterlockedIncrement((LONG *)addr);
+#else
+ ret = InterlockedIncrement(addr);
+#endif
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ ret = __sync_add_and_fetch(addr, 1);
+#else
+ mg_global_lock();
+ ret = (++(*addr));
+ mg_global_unlock();
+#endif
+ return ret;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static ptrdiff_t
+mg_atomic_dec(volatile ptrdiff_t *addr)
+{
+ ptrdiff_t ret;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ ret = InterlockedDecrement64(addr);
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+#ifdef __cplusplus
+ /* see mg_atomic_inc */
+ static_assert(sizeof(ptrdiff_t) == sizeof(LONG), "Size mismatch");
+ static_assert(sizeof(ptrdiff_t) == sizeof(int32_t), "Size mismatch");
+ ret = InterlockedDecrement((LONG *)addr);
+#else
+ ret = InterlockedDecrement(addr);
+#endif
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ ret = __sync_sub_and_fetch(addr, 1);
+#else
+ mg_global_lock();
+ ret = (--(*addr));
+ mg_global_unlock();
+#endif
+ return ret;
+}
+
+
+#if defined(USE_SERVER_STATS) || defined(STOP_FLAG_NEEDS_LOCK)
+static ptrdiff_t
+mg_atomic_add(volatile ptrdiff_t *addr, ptrdiff_t value)
+{
+ ptrdiff_t ret;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ ret = InterlockedAdd64(addr, value);
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+ ret = InterlockedExchangeAdd(addr, value) + value;
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ ret = __sync_add_and_fetch(addr, value);
+#else
+ mg_global_lock();
+ *addr += value;
+ ret = (*addr);
+ mg_global_unlock();
+#endif
+ return ret;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static ptrdiff_t
+mg_atomic_compare_and_swap(volatile ptrdiff_t *addr,
+ ptrdiff_t oldval,
+ ptrdiff_t newval)
+{
+ ptrdiff_t ret;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ ret = InterlockedCompareExchange64(addr, newval, oldval);
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+ ret = InterlockedCompareExchange(addr, newval, oldval);
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ ret = __sync_val_compare_and_swap(addr, oldval, newval);
+#else
+ mg_global_lock();
+ ret = *addr;
+ if ((ret != newval) && (ret == oldval)) {
+ *addr = newval;
+ }
+ mg_global_unlock();
+#endif
+ return ret;
+}
+
+
+static void
+mg_atomic_max(volatile ptrdiff_t *addr, ptrdiff_t value)
+{
+ register ptrdiff_t tmp = *addr;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ while (tmp < value) {
+ tmp = InterlockedCompareExchange64(addr, value, tmp);
+ }
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+ while (tmp < value) {
+ tmp = InterlockedCompareExchange(addr, value, tmp);
+ }
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ while (tmp < value) {
+ tmp = __sync_val_compare_and_swap(addr, tmp, value);
+ }
+#else
+ mg_global_lock();
+ if (*addr < value) {
+ *addr = value;
+ }
+ mg_global_unlock();
+#endif
+}
+
+
+static int64_t
+mg_atomic_add64(volatile int64_t *addr, int64_t value)
+{
+ int64_t ret;
+
+#if defined(_WIN64) && !defined(NO_ATOMICS)
+ ret = InterlockedAdd64(addr, value);
+#elif defined(_WIN32) && !defined(NO_ATOMICS)
+ ret = InterlockedExchangeAdd64(addr, value) + value;
+#elif defined(__GNUC__) \
+ && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0))) \
+ && !defined(NO_ATOMICS)
+ ret = __sync_add_and_fetch(addr, value);
+#else
+ mg_global_lock();
+ *addr += value;
+ ret = (*addr);
+ mg_global_unlock();
+#endif
+ return ret;
+}
+#endif
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic pop
+#endif /* defined(GCC_DIAGNOSTIC) */
+#if defined(__clang__)
+/* Show no warning in case system functions are not used. */
+#pragma clang diagnostic pop
+#endif
+
+
+#if defined(USE_SERVER_STATS)
+
+struct mg_memory_stat {
+ volatile ptrdiff_t totalMemUsed;
+ volatile ptrdiff_t maxMemUsed;
+ volatile ptrdiff_t blockCount;
+};
+
+
+static struct mg_memory_stat *get_memory_stat(struct mg_context *ctx);
+
+
+static void *
+mg_malloc_ex(size_t size,
+ struct mg_context *ctx,
+ const char *file,
+ unsigned line)
+{
+ void *data = malloc(size + 2 * sizeof(uintptr_t));
+ void *memory = 0;
+ struct mg_memory_stat *mstat = get_memory_stat(ctx);
+
+#if defined(MEMORY_DEBUGGING)
+ char mallocStr[256];
+#else
+ (void)file;
+ (void)line;
+#endif
+
+ if (data) {
+ uintptr_t *tmp = (uintptr_t *)data;
+ ptrdiff_t mmem = mg_atomic_add(&mstat->totalMemUsed, (ptrdiff_t)size);
+ mg_atomic_max(&mstat->maxMemUsed, mmem);
+ mg_atomic_inc(&mstat->blockCount);
+ tmp[0] = size;
+ tmp[1] = (uintptr_t)mstat;
+ memory = (void *)&tmp[2];
+ }
+
+#if defined(MEMORY_DEBUGGING)
+ sprintf(mallocStr,
+ "MEM: %p %5lu alloc %7lu %4lu --- %s:%u\n",
+ memory,
+ (unsigned long)size,
+ (unsigned long)mstat->totalMemUsed,
+ (unsigned long)mstat->blockCount,
+ file,
+ line);
+ DEBUG_TRACE("%s", mallocStr);
+#endif
+
+ return memory;
+}
+
+
+static void *
+mg_calloc_ex(size_t count,
+ size_t size,
+ struct mg_context *ctx,
+ const char *file,
+ unsigned line)
+{
+ void *data = mg_malloc_ex(size * count, ctx, file, line);
+
+ if (data) {
+ memset(data, 0, size * count);
+ }
+ return data;
+}
+
+
+static void
+mg_free_ex(void *memory, const char *file, unsigned line)
+{
+#if defined(MEMORY_DEBUGGING)
+ char mallocStr[256];
+#else
+ (void)file;
+ (void)line;
+#endif
+
+ if (memory) {
+ void *data = (void *)(((char *)memory) - 2 * sizeof(uintptr_t));
+ uintptr_t size = ((uintptr_t *)data)[0];
+ struct mg_memory_stat *mstat =
+ (struct mg_memory_stat *)(((uintptr_t *)data)[1]);
+ mg_atomic_add(&mstat->totalMemUsed, -(ptrdiff_t)size);
+ mg_atomic_dec(&mstat->blockCount);
+
+#if defined(MEMORY_DEBUGGING)
+ sprintf(mallocStr,
+ "MEM: %p %5lu free %7lu %4lu --- %s:%u\n",
+ memory,
+ (unsigned long)size,
+ (unsigned long)mstat->totalMemUsed,
+ (unsigned long)mstat->blockCount,
+ file,
+ line);
+ DEBUG_TRACE("%s", mallocStr);
+#endif
+ free(data);
+ }
+}
+
+
+static void *
+mg_realloc_ex(void *memory,
+ size_t newsize,
+ struct mg_context *ctx,
+ const char *file,
+ unsigned line)
+{
+ void *data;
+ void *_realloc;
+ uintptr_t oldsize;
+
+#if defined(MEMORY_DEBUGGING)
+ char mallocStr[256];
+#else
+ (void)file;
+ (void)line;
+#endif
+
+ if (newsize) {
+ if (memory) {
+ /* Reallocate existing block */
+ struct mg_memory_stat *mstat;
+ data = (void *)(((char *)memory) - 2 * sizeof(uintptr_t));
+ oldsize = ((uintptr_t *)data)[0];
+ mstat = (struct mg_memory_stat *)((uintptr_t *)data)[1];
+ _realloc = realloc(data, newsize + 2 * sizeof(uintptr_t));
+ if (_realloc) {
+ data = _realloc;
+ mg_atomic_add(&mstat->totalMemUsed, -(ptrdiff_t)oldsize);
+#if defined(MEMORY_DEBUGGING)
+ sprintf(mallocStr,
+ "MEM: %p %5lu r-free %7lu %4lu --- %s:%u\n",
+ memory,
+ (unsigned long)oldsize,
+ (unsigned long)mstat->totalMemUsed,
+ (unsigned long)mstat->blockCount,
+ file,
+ line);
+ DEBUG_TRACE("%s", mallocStr);
+#endif
+ mg_atomic_add(&mstat->totalMemUsed, (ptrdiff_t)newsize);
+
+#if defined(MEMORY_DEBUGGING)
+ sprintf(mallocStr,
+ "MEM: %p %5lu r-alloc %7lu %4lu --- %s:%u\n",
+ memory,
+ (unsigned long)newsize,
+ (unsigned long)mstat->totalMemUsed,
+ (unsigned long)mstat->blockCount,
+ file,
+ line);
+ DEBUG_TRACE("%s", mallocStr);
+#endif
+ *(uintptr_t *)data = newsize;
+ data = (void *)(((char *)data) + 2 * sizeof(uintptr_t));
+ } else {
+#if defined(MEMORY_DEBUGGING)
+ DEBUG_TRACE("%s", "MEM: realloc failed\n");
+#endif
+ return _realloc;
+ }
+ } else {
+ /* Allocate new block */
+ data = mg_malloc_ex(newsize, ctx, file, line);
+ }
+ } else {
+ /* Free existing block */
+ data = 0;
+ mg_free_ex(memory, file, line);
+ }
+
+ return data;
+}
+
+
+#define mg_malloc(a) mg_malloc_ex(a, NULL, __FILE__, __LINE__)
+#define mg_calloc(a, b) mg_calloc_ex(a, b, NULL, __FILE__, __LINE__)
+#define mg_realloc(a, b) mg_realloc_ex(a, b, NULL, __FILE__, __LINE__)
+#define mg_free(a) mg_free_ex(a, __FILE__, __LINE__)
+
+#define mg_malloc_ctx(a, c) mg_malloc_ex(a, c, __FILE__, __LINE__)
+#define mg_calloc_ctx(a, b, c) mg_calloc_ex(a, b, c, __FILE__, __LINE__)
+#define mg_realloc_ctx(a, b, c) mg_realloc_ex(a, b, c, __FILE__, __LINE__)
+
+
+#else /* USE_SERVER_STATS */
+
+
+static __inline void *
+mg_malloc(size_t a)
+{
+ return malloc(a);
+}
+
+static __inline void *
+mg_calloc(size_t a, size_t b)
+{
+ return calloc(a, b);
+}
+
+static __inline void *
+mg_realloc(void *a, size_t b)
+{
+ return realloc(a, b);
+}
+
+static __inline void
+mg_free(void *a)
+{
+ free(a);
+}
+
+#define mg_malloc_ctx(a, c) mg_malloc(a)
+#define mg_calloc_ctx(a, b, c) mg_calloc(a, b)
+#define mg_realloc_ctx(a, b, c) mg_realloc(a, b)
+#define mg_free_ctx(a, c) mg_free(a)
+
+#endif /* USE_SERVER_STATS */
+
+
+static void mg_vsnprintf(const struct mg_connection *conn,
+ int *truncated,
+ char *buf,
+ size_t buflen,
+ const char *fmt,
+ va_list ap);
+
+static void mg_snprintf(const struct mg_connection *conn,
+ int *truncated,
+ char *buf,
+ size_t buflen,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(5, 6);
+
+/* This following lines are just meant as a reminder to use the mg-functions
+ * for memory management */
+#if defined(malloc)
+#undef malloc
+#endif
+#if defined(calloc)
+#undef calloc
+#endif
+#if defined(realloc)
+#undef realloc
+#endif
+#if defined(free)
+#undef free
+#endif
+#if defined(snprintf)
+#undef snprintf
+#endif
+#if defined(vsnprintf)
+#undef vsnprintf
+#endif
+#if !defined(NDEBUG)
+#define malloc DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc
+#define calloc DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc
+#define realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc
+#define free DO_NOT_USE_THIS_FUNCTION__USE_mg_free
+#define snprintf DO_NOT_USE_THIS_FUNCTION__USE_mg_snprintf
+#endif
+#if defined(_WIN32)
+/* vsnprintf must not be used in any system,
+ * but this define only works well for Windows. */
+#define vsnprintf DO_NOT_USE_THIS_FUNCTION__USE_mg_vsnprintf
+#endif
+
+
+/* mg_init_library counter */
+static int mg_init_library_called = 0;
+
+#if !defined(NO_SSL)
+#if defined(OPENSSL_API_1_0) || defined(OPENSSL_API_1_1) \
+ || defined(OPENSSL_API_3_0)
+static int mg_openssl_initialized = 0;
+#endif
+#if !defined(OPENSSL_API_1_0) && !defined(OPENSSL_API_1_1) \
+ && !defined(OPENSSL_API_3_0) && !defined(USE_MBEDTLS) \
+ && !defined(USE_GNUTLS)
+#error "Please define OPENSSL_API_#_# or USE_MBEDTLS or USE_GNUTLS"
+#endif
+#if defined(OPENSSL_API_1_0) && defined(OPENSSL_API_1_1)
+#error "Multiple OPENSSL_API versions defined"
+#endif
+#if defined(OPENSSL_API_1_1) && defined(OPENSSL_API_3_0)
+#error "Multiple OPENSSL_API versions defined"
+#endif
+#if defined(OPENSSL_API_1_0) && defined(OPENSSL_API_3_0)
+#error "Multiple OPENSSL_API versions defined"
+#endif
+#if (defined(OPENSSL_API_1_0) || defined(OPENSSL_API_1_1) \
+ || defined(OPENSSL_API_3_0)) \
+ && (defined(USE_MBEDTLS) || defined(USE_GNUTLS))
+#error "Multiple SSL libraries defined"
+#endif
+#if defined(USE_MBEDTLS) && defined(USE_GNUTLS)
+#error "Multiple SSL libraries defined"
+#endif
+#endif
+
+
+static pthread_key_t sTlsKey; /* Thread local storage index */
+static volatile ptrdiff_t thread_idx_max = 0;
+
+#if defined(MG_LEGACY_INTERFACE)
+#define MG_ALLOW_USING_GET_REQUEST_INFO_FOR_RESPONSE
+#endif
+
+struct mg_workerTLS {
+ int is_master;
+ unsigned long thread_idx;
+ void *user_ptr;
+#if defined(_WIN32)
+ HANDLE pthread_cond_helper_mutex;
+ struct mg_workerTLS *next_waiting_thread;
+#endif
+ const char *alpn_proto;
+#if defined(MG_ALLOW_USING_GET_REQUEST_INFO_FOR_RESPONSE)
+ char txtbuf[4];
+#endif
+};
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif /* defined(GCC_DIAGNOSTIC) */
+#if defined(__clang__)
+/* Show no warning in case system functions are not used. */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
+
+/* Get a unique thread ID as unsigned long, independent from the data type
+ * of thread IDs defined by the operating system API.
+ * If two calls to mg_current_thread_id return the same value, they calls
+ * are done from the same thread. If they return different values, they are
+ * done from different threads. (Provided this function is used in the same
+ * process context and threads are not repeatedly created and deleted, but
+ * CivetWeb does not do that).
+ * This function must match the signature required for SSL id callbacks:
+ * CRYPTO_set_id_callback
+ */
+FUNCTION_MAY_BE_UNUSED
+static unsigned long
+mg_current_thread_id(void)
+{
+#if defined(_WIN32)
+ return GetCurrentThreadId();
+#else
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunreachable-code"
+ /* For every compiler, either "sizeof(pthread_t) > sizeof(unsigned long)"
+ * or not, so one of the two conditions will be unreachable by construction.
+ * Unfortunately the C standard does not define a way to check this at
+ * compile time, since the #if preprocessor conditions can not use the
+ * sizeof operator as an argument. */
+#endif
+
+ if (sizeof(pthread_t) > sizeof(unsigned long)) {
+ /* This is the problematic case for CRYPTO_set_id_callback:
+ * The OS pthread_t can not be cast to unsigned long. */
+ struct mg_workerTLS *tls =
+ (struct mg_workerTLS *)pthread_getspecific(sTlsKey);
+ if (tls == NULL) {
+ /* SSL called from an unknown thread: Create some thread index.
+ */
+ tls = (struct mg_workerTLS *)mg_malloc(sizeof(struct mg_workerTLS));
+ tls->is_master = -2; /* -2 means "3rd party thread" */
+ tls->thread_idx = (unsigned)mg_atomic_inc(&thread_idx_max);
+ pthread_setspecific(sTlsKey, tls);
+ }
+ return tls->thread_idx;
+ } else {
+ /* pthread_t may be any data type, so a simple cast to unsigned long
+ * can rise a warning/error, depending on the platform.
+ * Here memcpy is used as an anything-to-anything cast. */
+ unsigned long ret = 0;
+ pthread_t t = pthread_self();
+ memcpy(&ret, &t, sizeof(pthread_t));
+ return ret;
+ }
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+#endif
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static uint64_t
+mg_get_current_time_ns(void)
+{
+ struct timespec tsnow;
+ clock_gettime(CLOCK_REALTIME, &tsnow);
+ return (((uint64_t)tsnow.tv_sec) * 1000000000) + (uint64_t)tsnow.tv_nsec;
+}
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic pop
+#endif /* defined(GCC_DIAGNOSTIC) */
+#if defined(__clang__)
+/* Show no warning in case system functions are not used. */
+#pragma clang diagnostic pop
+#endif
+
+
+#if defined(NEED_DEBUG_TRACE_FUNC)
+static void
+DEBUG_TRACE_FUNC(const char *func, unsigned line, const char *fmt, ...)
+{
+ va_list args;
+ struct timespec tsnow;
+
+ /* Get some operating system independent thread id */
+ unsigned long thread_id = mg_current_thread_id();
+
+ clock_gettime(CLOCK_REALTIME, &tsnow);
+
+ flockfile(DEBUG_TRACE_STREAM);
+ fprintf(DEBUG_TRACE_STREAM,
+ "*** %lu.%09lu %lu %s:%u: ",
+ (unsigned long)tsnow.tv_sec,
+ (unsigned long)tsnow.tv_nsec,
+ thread_id,
+ func,
+ line);
+ va_start(args, fmt);
+ vfprintf(DEBUG_TRACE_STREAM, fmt, args);
+ va_end(args);
+ putc('\n', DEBUG_TRACE_STREAM);
+ fflush(DEBUG_TRACE_STREAM);
+ funlockfile(DEBUG_TRACE_STREAM);
+}
+#endif /* NEED_DEBUG_TRACE_FUNC */
+
+
+#define MD5_STATIC static
+#include "md5.inl"
+
+/* Darwin prior to 7.0 and Win32 do not have socklen_t */
+#if defined(NO_SOCKLEN_T)
+typedef int socklen_t;
+#endif /* NO_SOCKLEN_T */
+
+#define IP_ADDR_STR_LEN (50) /* IPv6 hex string is 46 chars */
+
+#if !defined(MSG_NOSIGNAL)
+#define MSG_NOSIGNAL (0)
+#endif
+
+
+/* SSL: mbedTLS vs. GnuTLS vs. no-ssl vs. OpenSSL */
+#if defined(USE_MBEDTLS)
+/* mbedTLS */
+#include "mod_mbedtls.inl"
+
+#elif defined(USE_GNUTLS)
+/* GnuTLS */
+#include "mod_gnutls.inl"
+
+#elif defined(NO_SSL)
+/* no SSL */
+typedef struct SSL SSL; /* dummy for SSL argument to push/pull */
+typedef struct SSL_CTX SSL_CTX;
+
+#elif defined(NO_SSL_DL)
+/* OpenSSL without dynamic loading */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#if defined(WOLFSSL_VERSION)
+/* Additional defines for WolfSSL, see
+ * https://github.com/civetweb/civetweb/issues/583 */
+#include "wolfssl_extras.inl"
+#endif
+
+#if defined(OPENSSL_IS_BORINGSSL)
+/* From boringssl/src/include/openssl/mem.h:
+ *
+ * OpenSSL has, historically, had a complex set of malloc debugging options.
+ * However, that was written in a time before Valgrind and ASAN. Since we now
+ * have those tools, the OpenSSL allocation functions are simply macros around
+ * the standard memory functions.
+ *
+ * #define OPENSSL_free free */
+#define free free
+// disable for boringssl
+#define CONF_modules_unload(a) ((void)0)
+#define ENGINE_cleanup() ((void)0)
+#endif
+
+/* If OpenSSL headers are included, automatically select the API version */
+#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
+#if !defined(OPENSSL_API_3_0)
+#define OPENSSL_API_3_0
+#endif
+#define OPENSSL_REMOVE_THREAD_STATE()
+#else
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+#if !defined(OPENSSL_API_1_1)
+#define OPENSSL_API_1_1
+#endif
+#define OPENSSL_REMOVE_THREAD_STATE()
+#else
+#if !defined(OPENSSL_API_1_0)
+#define OPENSSL_API_1_0
+#endif
+#define OPENSSL_REMOVE_THREAD_STATE() ERR_remove_thread_state(NULL)
+#endif
+#endif
+
+
+#else
+/* SSL loaded dynamically from DLL / shared object */
+/* Add all prototypes here, to be independent from OpenSSL source
+ * installation. */
+#include "openssl_dl.inl"
+
+#endif /* Various SSL bindings */
+
+
+#if !defined(NO_CACHING)
+static const char month_names[][4] = {"Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"};
+#endif /* !NO_CACHING */
+
+
+/* Unified socket address. For IPv6 support, add IPv6 address structure in
+ * the union u. */
+union usa {
+ struct sockaddr sa;
+ struct sockaddr_in sin;
+#if defined(USE_IPV6)
+ struct sockaddr_in6 sin6;
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ struct sockaddr_un sun;
+#endif
+};
+
+#if defined(USE_X_DOM_SOCKET)
+static unsigned short
+USA_IN_PORT_UNSAFE(union usa *s)
+{
+ if (s->sa.sa_family == AF_INET)
+ return s->sin.sin_port;
+#if defined(USE_IPV6)
+ if (s->sa.sa_family == AF_INET6)
+ return s->sin6.sin6_port;
+#endif
+ return 0;
+}
+#endif
+#if defined(USE_IPV6)
+#define USA_IN_PORT_UNSAFE(s) \
+ (((s)->sa.sa_family == AF_INET6) ? (s)->sin6.sin6_port : (s)->sin.sin_port)
+#else
+#define USA_IN_PORT_UNSAFE(s) ((s)->sin.sin_port)
+#endif
+
+/* Describes a string (chunk of memory). */
+struct vec {
+ const char *ptr;
+ size_t len;
+};
+
+struct mg_file_stat {
+ /* File properties filled by mg_stat: */
+ uint64_t size;
+ time_t last_modified;
+ int is_directory; /* Set to 1 if mg_stat is called for a directory */
+ int is_gzipped; /* Set to 1 if the content is gzipped, in which
+ * case we need a "Content-Eencoding: gzip" header */
+ int location; /* 0 = nowhere, 1 = on disk, 2 = in memory */
+};
+
+
+struct mg_file_access {
+ /* File properties filled by mg_fopen: */
+ FILE *fp;
+};
+
+struct mg_file {
+ struct mg_file_stat stat;
+ struct mg_file_access access;
+};
+
+
+#define STRUCT_FILE_INITIALIZER \
+ { \
+ {(uint64_t)0, (time_t)0, 0, 0, 0}, \
+ { \
+ (FILE *)NULL \
+ } \
+ }
+
+
+/* Describes listening socket, or socket which was accept()-ed by the master
+ * thread and queued for future handling by the worker thread. */
+struct socket {
+ SOCKET sock; /* Listening socket */
+ union usa lsa; /* Local socket address */
+ union usa rsa; /* Remote socket address */
+ unsigned char is_ssl; /* Is port SSL-ed */
+ unsigned char ssl_redir; /* Is port supposed to redirect everything to SSL
+ * port */
+ unsigned char
+ is_optional; /* Shouldn't cause us to exit if we can't bind to it */
+ unsigned char in_use; /* 0: invalid, 1: valid, 2: free */
+};
+
+
+/* Enum const for all options must be in sync with
+ * static struct mg_option config_options[]
+ * This is tested in the unit test (test/private.c)
+ * "Private Config Options"
+ */
+enum {
+ /* Once for each server */
+ LISTENING_PORTS,
+ NUM_THREADS,
+ PRESPAWN_THREADS,
+ RUN_AS_USER,
+ CONFIG_TCP_NODELAY, /* Prepended CONFIG_ to avoid conflict with the
+ * socket option typedef TCP_NODELAY. */
+ MAX_REQUEST_SIZE,
+ LINGER_TIMEOUT,
+ CONNECTION_QUEUE_SIZE,
+ LISTEN_BACKLOG_SIZE,
+#if defined(__linux__)
+ ALLOW_SENDFILE_CALL,
+#endif
+#if defined(_WIN32)
+ CASE_SENSITIVE_FILES,
+#endif
+ THROTTLE,
+ ENABLE_KEEP_ALIVE,
+ REQUEST_TIMEOUT,
+ KEEP_ALIVE_TIMEOUT,
+#if defined(USE_WEBSOCKET)
+ WEBSOCKET_TIMEOUT,
+ ENABLE_WEBSOCKET_PING_PONG,
+#endif
+ DECODE_URL,
+ DECODE_QUERY_STRING,
+#if defined(USE_LUA)
+ LUA_BACKGROUND_SCRIPT,
+ LUA_BACKGROUND_SCRIPT_PARAMS,
+#endif
+#if defined(USE_HTTP2)
+ ENABLE_HTTP2,
+#endif
+
+ /* Once for each domain */
+ DOCUMENT_ROOT,
+ FALLBACK_DOCUMENT_ROOT,
+
+ ACCESS_LOG_FILE,
+ ERROR_LOG_FILE,
+
+ CGI_EXTENSIONS,
+ CGI_ENVIRONMENT,
+ CGI_INTERPRETER,
+ CGI_INTERPRETER_ARGS,
+#if defined(USE_TIMERS)
+ CGI_TIMEOUT,
+#endif
+ CGI_BUFFERING,
+
+ CGI2_EXTENSIONS,
+ CGI2_ENVIRONMENT,
+ CGI2_INTERPRETER,
+ CGI2_INTERPRETER_ARGS,
+#if defined(USE_TIMERS)
+ CGI2_TIMEOUT,
+#endif
+ CGI2_BUFFERING,
+
+#if defined(USE_4_CGI)
+ CGI3_EXTENSIONS,
+ CGI3_ENVIRONMENT,
+ CGI3_INTERPRETER,
+ CGI3_INTERPRETER_ARGS,
+#if defined(USE_TIMERS)
+ CGI3_TIMEOUT,
+#endif
+ CGI3_BUFFERING,
+
+ CGI4_EXTENSIONS,
+ CGI4_ENVIRONMENT,
+ CGI4_INTERPRETER,
+ CGI4_INTERPRETER_ARGS,
+#if defined(USE_TIMERS)
+ CGI4_TIMEOUT,
+#endif
+ CGI4_BUFFERING,
+#endif
+
+ PUT_DELETE_PASSWORDS_FILE, /* must follow CGI_* */
+ PROTECT_URI,
+ AUTHENTICATION_DOMAIN,
+ ENABLE_AUTH_DOMAIN_CHECK,
+ SSI_EXTENSIONS,
+ ENABLE_DIRECTORY_LISTING,
+ ENABLE_WEBDAV,
+ GLOBAL_PASSWORDS_FILE,
+ INDEX_FILES,
+ ACCESS_CONTROL_LIST,
+ EXTRA_MIME_TYPES,
+ SSL_CERTIFICATE,
+ SSL_CERTIFICATE_CHAIN,
+ URL_REWRITE_PATTERN,
+ HIDE_FILES,
+ SSL_DO_VERIFY_PEER,
+ SSL_CACHE_TIMEOUT,
+ SSL_CA_PATH,
+ SSL_CA_FILE,
+ SSL_VERIFY_DEPTH,
+ SSL_DEFAULT_VERIFY_PATHS,
+ SSL_CIPHER_LIST,
+ SSL_PROTOCOL_VERSION,
+ SSL_SHORT_TRUST,
+
+#if defined(USE_LUA)
+ LUA_PRELOAD_FILE,
+ LUA_SCRIPT_EXTENSIONS,
+ LUA_SERVER_PAGE_EXTENSIONS,
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+ LUA_DEBUG_PARAMS,
+#endif
+#endif
+#if defined(USE_DUKTAPE)
+ DUKTAPE_SCRIPT_EXTENSIONS,
+#endif
+
+#if defined(USE_WEBSOCKET)
+ WEBSOCKET_ROOT,
+ FALLBACK_WEBSOCKET_ROOT,
+#endif
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ LUA_WEBSOCKET_EXTENSIONS,
+#endif
+ REPLACE_ASTERISK_WITH_ORIGIN,
+ ACCESS_CONTROL_ALLOW_ORIGIN,
+ ACCESS_CONTROL_ALLOW_METHODS,
+ ACCESS_CONTROL_ALLOW_HEADERS,
+ ACCESS_CONTROL_EXPOSE_HEADERS,
+ ACCESS_CONTROL_ALLOW_CREDENTIALS,
+ ERROR_PAGES,
+#if !defined(NO_CACHING)
+ STATIC_FILE_MAX_AGE,
+ STATIC_FILE_CACHE_CONTROL,
+#endif
+#if !defined(NO_SSL)
+ STRICT_HTTPS_MAX_AGE,
+#endif
+ ADDITIONAL_HEADER,
+ ALLOW_INDEX_SCRIPT_SUB_RES,
+
+ NUM_OPTIONS
+};
+
+
+/* Config option name, config types, default value.
+ * Must be in the same order as the enum const above.
+ */
+static const struct mg_option config_options[] = {
+
+ /* Once for each server */
+ {"listening_ports", MG_CONFIG_TYPE_STRING_LIST, "8080"},
+ {"num_threads", MG_CONFIG_TYPE_NUMBER, "50"},
+ {"prespawn_threads", MG_CONFIG_TYPE_NUMBER, "0"},
+ {"run_as_user", MG_CONFIG_TYPE_STRING, NULL},
+ {"tcp_nodelay", MG_CONFIG_TYPE_NUMBER, "0"},
+ {"max_request_size", MG_CONFIG_TYPE_NUMBER, "16384"},
+ {"linger_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+ {"connection_queue", MG_CONFIG_TYPE_NUMBER, "20"},
+ {"listen_backlog", MG_CONFIG_TYPE_NUMBER, "200"},
+#if defined(__linux__)
+ {"allow_sendfile_call", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+#endif
+#if defined(_WIN32)
+ {"case_sensitive", MG_CONFIG_TYPE_BOOLEAN, "no"},
+#endif
+ {"throttle", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"enable_keep_alive", MG_CONFIG_TYPE_BOOLEAN, "no"},
+ {"request_timeout_ms", MG_CONFIG_TYPE_NUMBER, "30000"},
+ {"keep_alive_timeout_ms", MG_CONFIG_TYPE_NUMBER, "500"},
+#if defined(USE_WEBSOCKET)
+ {"websocket_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+ {"enable_websocket_ping_pong", MG_CONFIG_TYPE_BOOLEAN, "no"},
+#endif
+ {"decode_url", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+ {"decode_query_string", MG_CONFIG_TYPE_BOOLEAN, "no"},
+#if defined(USE_LUA)
+ {"lua_background_script", MG_CONFIG_TYPE_FILE, NULL},
+ {"lua_background_script_params", MG_CONFIG_TYPE_STRING_LIST, NULL},
+#endif
+#if defined(USE_HTTP2)
+ {"enable_http2", MG_CONFIG_TYPE_BOOLEAN, "no"},
+#endif
+
+ /* Once for each domain */
+ {"document_root", MG_CONFIG_TYPE_DIRECTORY, NULL},
+ {"fallback_document_root", MG_CONFIG_TYPE_DIRECTORY, NULL},
+
+ {"access_log_file", MG_CONFIG_TYPE_FILE, NULL},
+ {"error_log_file", MG_CONFIG_TYPE_FILE, NULL},
+
+ {"cgi_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.cgi$|**.pl$|**.php$"},
+ {"cgi_environment", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"cgi_interpreter", MG_CONFIG_TYPE_FILE, NULL},
+ {"cgi_interpreter_args", MG_CONFIG_TYPE_STRING, NULL},
+#if defined(USE_TIMERS)
+ {"cgi_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+#endif
+ {"cgi_buffering", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+
+ {"cgi2_pattern", MG_CONFIG_TYPE_EXT_PATTERN, NULL},
+ {"cgi2_environment", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"cgi2_interpreter", MG_CONFIG_TYPE_FILE, NULL},
+ {"cgi2_interpreter_args", MG_CONFIG_TYPE_STRING, NULL},
+#if defined(USE_TIMERS)
+ {"cgi2_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+#endif
+ {"cgi2_buffering", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+
+#if defined(USE_4_CGI)
+ {"cgi3_pattern", MG_CONFIG_TYPE_EXT_PATTERN, NULL},
+ {"cgi3_environment", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"cgi3_interpreter", MG_CONFIG_TYPE_FILE, NULL},
+ {"cgi3_interpreter_args", MG_CONFIG_TYPE_STRING, NULL},
+#if defined(USE_TIMERS)
+ {"cgi3_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+#endif
+ {"cgi3_buffering", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+
+ {"cgi4_pattern", MG_CONFIG_TYPE_EXT_PATTERN, NULL},
+ {"cgi4_environment", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"cgi4_interpreter", MG_CONFIG_TYPE_FILE, NULL},
+ {"cgi4_interpreter_args", MG_CONFIG_TYPE_STRING, NULL},
+#if defined(USE_TIMERS)
+ {"cgi4_timeout_ms", MG_CONFIG_TYPE_NUMBER, NULL},
+#endif
+ {"cgi4_buffering", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+
+#endif
+
+ {"put_delete_auth_file", MG_CONFIG_TYPE_FILE, NULL},
+ {"protect_uri", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"authentication_domain", MG_CONFIG_TYPE_STRING, "mydomain.com"},
+ {"enable_auth_domain_check", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+ {"ssi_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.shtml$|**.shtm$"},
+ {"enable_directory_listing", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+ {"enable_webdav", MG_CONFIG_TYPE_BOOLEAN, "no"},
+ {"global_auth_file", MG_CONFIG_TYPE_FILE, NULL},
+ {"index_files",
+ MG_CONFIG_TYPE_STRING_LIST,
+#if defined(USE_LUA)
+ "index.xhtml,index.html,index.htm,"
+ "index.lp,index.lsp,index.lua,index.cgi,"
+ "index.shtml,index.php"},
+#else
+ "index.xhtml,index.html,index.htm,index.cgi,index.shtml,index.php"},
+#endif
+ {"access_control_list", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"extra_mime_types", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"ssl_certificate", MG_CONFIG_TYPE_FILE, NULL},
+ {"ssl_certificate_chain", MG_CONFIG_TYPE_FILE, NULL},
+ {"url_rewrite_patterns", MG_CONFIG_TYPE_STRING_LIST, NULL},
+ {"hide_files_patterns", MG_CONFIG_TYPE_EXT_PATTERN, NULL},
+
+ {"ssl_verify_peer", MG_CONFIG_TYPE_YES_NO_OPTIONAL, "no"},
+ {"ssl_cache_timeout", MG_CONFIG_TYPE_NUMBER, "-1"},
+
+ {"ssl_ca_path", MG_CONFIG_TYPE_DIRECTORY, NULL},
+ {"ssl_ca_file", MG_CONFIG_TYPE_FILE, NULL},
+ {"ssl_verify_depth", MG_CONFIG_TYPE_NUMBER, "9"},
+ {"ssl_default_verify_paths", MG_CONFIG_TYPE_BOOLEAN, "yes"},
+ {"ssl_cipher_list", MG_CONFIG_TYPE_STRING, NULL},
+
+ /* HTTP2 requires ALPN, and anyway TLS1.2 should be considered
+ * as a minimum in 2020 */
+ {"ssl_protocol_version", MG_CONFIG_TYPE_NUMBER, "4"},
+
+ {"ssl_short_trust", MG_CONFIG_TYPE_BOOLEAN, "no"},
+
+#if defined(USE_LUA)
+ {"lua_preload_file", MG_CONFIG_TYPE_FILE, NULL},
+ {"lua_script_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.lua$"},
+ {"lua_server_page_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.lp$|**.lsp$"},
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+ {"lua_debug", MG_CONFIG_TYPE_STRING, NULL},
+#endif
+#endif
+#if defined(USE_DUKTAPE)
+ /* The support for duktape is still in alpha version state.
+ * The name of this config option might change. */
+ {"duktape_script_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.ssjs$"},
+#endif
+
+#if defined(USE_WEBSOCKET)
+ {"websocket_root", MG_CONFIG_TYPE_DIRECTORY, NULL},
+ {"fallback_websocket_root", MG_CONFIG_TYPE_DIRECTORY, NULL},
+#endif
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ {"lua_websocket_pattern", MG_CONFIG_TYPE_EXT_PATTERN, "**.lua$"},
+#endif
+ {"replace_asterisk_with_origin", MG_CONFIG_TYPE_BOOLEAN, "no"},
+ {"access_control_allow_origin", MG_CONFIG_TYPE_STRING, "*"},
+ {"access_control_allow_methods", MG_CONFIG_TYPE_STRING, "*"},
+ {"access_control_allow_headers", MG_CONFIG_TYPE_STRING, "*"},
+ {"access_control_expose_headers", MG_CONFIG_TYPE_STRING, ""},
+ {"access_control_allow_credentials", MG_CONFIG_TYPE_STRING, ""},
+ {"error_pages", MG_CONFIG_TYPE_DIRECTORY, NULL},
+#if !defined(NO_CACHING)
+ {"static_file_max_age", MG_CONFIG_TYPE_NUMBER, "3600"},
+ {"static_file_cache_control", MG_CONFIG_TYPE_STRING, NULL},
+#endif
+#if !defined(NO_SSL)
+ {"strict_transport_security_max_age", MG_CONFIG_TYPE_NUMBER, NULL},
+#endif
+ {"additional_header", MG_CONFIG_TYPE_STRING_MULTILINE, NULL},
+ {"allow_index_script_resource", MG_CONFIG_TYPE_BOOLEAN, "no"},
+
+ {NULL, MG_CONFIG_TYPE_UNKNOWN, NULL}};
+
+
+/* Check if the config_options and the corresponding enum have compatible
+ * sizes. */
+mg_static_assert((sizeof(config_options) / sizeof(config_options[0]))
+ == (NUM_OPTIONS + 1),
+ "config_options and enum not sync");
+
+
+enum { REQUEST_HANDLER, WEBSOCKET_HANDLER, AUTH_HANDLER };
+
+
+struct mg_handler_info {
+ /* Name/Pattern of the URI. */
+ char *uri;
+ size_t uri_len;
+
+ /* handler type */
+ int handler_type;
+
+ /* Handler for http/https or requests. */
+ mg_request_handler handler;
+ unsigned int refcount;
+ int removing;
+
+ /* Handler for ws/wss (websocket) requests. */
+ mg_websocket_connect_handler connect_handler;
+ mg_websocket_ready_handler ready_handler;
+ mg_websocket_data_handler data_handler;
+ mg_websocket_close_handler close_handler;
+
+ /* accepted subprotocols for ws/wss requests. */
+ struct mg_websocket_subprotocols *subprotocols;
+
+ /* Handler for authorization requests */
+ mg_authorization_handler auth_handler;
+
+ /* User supplied argument for the handler function. */
+ void *cbdata;
+
+ /* next handler in a linked list */
+ struct mg_handler_info *next;
+};
+
+
+enum {
+ CONTEXT_INVALID,
+ CONTEXT_SERVER,
+ CONTEXT_HTTP_CLIENT,
+ CONTEXT_WS_CLIENT
+};
+
+
+struct mg_domain_context {
+ SSL_CTX *ssl_ctx; /* SSL context */
+ char *config[NUM_OPTIONS]; /* Civetweb configuration parameters */
+ struct mg_handler_info *handlers; /* linked list of uri handlers */
+ int64_t ssl_cert_last_mtime;
+
+ /* Server nonce */
+ uint64_t auth_nonce_mask; /* Mask for all nonce values */
+ unsigned long nonce_count; /* Used nonces, used for authentication */
+
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ /* linked list of shared lua websockets */
+ struct mg_shared_lua_websocket_list *shared_lua_websockets;
+#endif
+
+ /* Linked list of domains */
+ struct mg_domain_context *next;
+};
+
+
+/* Stop flag can be "volatile" or require a lock.
+ * MSDN uses volatile for "Interlocked" operations, but also explicitly
+ * states a read operation for int is always atomic. */
+#if defined(STOP_FLAG_NEEDS_LOCK)
+
+typedef ptrdiff_t volatile stop_flag_t;
+
+static int
+STOP_FLAG_IS_ZERO(const stop_flag_t *f)
+{
+ stop_flag_t sf = mg_atomic_add((stop_flag_t *)f, 0);
+ return (sf == 0);
+}
+
+static int
+STOP_FLAG_IS_TWO(stop_flag_t *f)
+{
+ stop_flag_t sf = mg_atomic_add(f, 0);
+ return (sf == 2);
+}
+
+static void
+STOP_FLAG_ASSIGN(stop_flag_t *f, stop_flag_t v)
+{
+ stop_flag_t sf = 0;
+ do {
+ sf = mg_atomic_compare_and_swap(f,
+ __atomic_load_n(f, __ATOMIC_SEQ_CST),
+ v);
+ } while (sf != v);
+}
+
+#else /* STOP_FLAG_NEEDS_LOCK */
+
+typedef int volatile stop_flag_t;
+#define STOP_FLAG_IS_ZERO(f) ((*(f)) == 0)
+#define STOP_FLAG_IS_TWO(f) ((*(f)) == 2)
+#define STOP_FLAG_ASSIGN(f, v) ((*(f)) = (v))
+
+#endif /* STOP_FLAG_NEEDS_LOCK */
+
+
+#if !defined(NUM_WEBDAV_LOCKS)
+#define NUM_WEBDAV_LOCKS 10
+#endif
+#if !defined(LOCK_DURATION_S)
+#define LOCK_DURATION_S 60
+#endif
+
+
+struct twebdav_lock {
+ uint64_t locktime;
+ char token[33];
+ char path[UTF8_PATH_MAX * 2];
+ char user[UTF8_PATH_MAX * 2];
+};
+
+
+struct mg_context {
+
+ /* Part 1 - Physical context:
+ * This holds threads, ports, timeouts, ...
+ * set for the entire server, independent from the
+ * addressed hostname.
+ */
+
+ /* Connection related */
+ int context_type; /* See CONTEXT_* above */
+
+ struct socket *listening_sockets;
+ struct mg_pollfd *listening_socket_fds;
+ unsigned int num_listening_sockets;
+
+ struct mg_connection *worker_connections; /* The connection struct, pre-
+ * allocated for each worker */
+
+#if defined(USE_SERVER_STATS)
+ volatile ptrdiff_t active_connections;
+ volatile ptrdiff_t max_active_connections;
+ volatile ptrdiff_t total_connections;
+ volatile ptrdiff_t total_requests;
+ volatile int64_t total_data_read;
+ volatile int64_t total_data_written;
+#endif
+
+ /* Thread related */
+ stop_flag_t stop_flag; /* Should we stop event loop */
+ pthread_mutex_t thread_mutex; /* Protects client_socks or queue */
+
+ pthread_t masterthreadid; /* The master thread ID */
+ unsigned int cfg_max_worker_threads; /* How many worker-threads we are
+ allowed to create, total */
+
+ unsigned int spawned_worker_threads; /* How many worker-threads currently
+ exist (modified by master thread) */
+ unsigned int
+ idle_worker_thread_count; /* How many worker-threads are currently
+ sitting around with nothing to do */
+ /* Access to this value MUST be synchronized by thread_mutex */
+
+ pthread_t *worker_threadids; /* The worker thread IDs */
+ unsigned long starter_thread_idx; /* thread index which called mg_start */
+
+ /* Connection to thread dispatching */
+#if defined(ALTERNATIVE_QUEUE)
+ struct socket *client_socks;
+ void **client_wait_events;
+#else
+ struct socket *squeue; /* Socket queue (sq) : accepted sockets waiting for a
+ worker thread */
+ volatile int sq_head; /* Head of the socket queue */
+ volatile int sq_tail; /* Tail of the socket queue */
+ pthread_cond_t sq_full; /* Signaled when socket is produced */
+ pthread_cond_t sq_empty; /* Signaled when socket is consumed */
+ volatile int sq_blocked; /* Status information: sq is full */
+ int sq_size; /* No of elements in socket queue */
+#if defined(USE_SERVER_STATS)
+ int sq_max_fill;
+#endif /* USE_SERVER_STATS */
+#endif /* ALTERNATIVE_QUEUE */
+
+ /* Memory related */
+ unsigned int max_request_size; /* The max request size */
+
+#if defined(USE_SERVER_STATS)
+ struct mg_memory_stat ctx_memory;
+#endif
+
+ /* WebDAV lock structures */
+ struct twebdav_lock webdav_lock[NUM_WEBDAV_LOCKS];
+
+ /* Operating system related */
+ char *systemName; /* What operating system is running */
+ time_t start_time; /* Server start time, used for authentication
+ * and for diagnstics. */
+
+#if defined(USE_TIMERS)
+ struct ttimers *timers;
+#endif
+
+ /* Lua specific: Background operations and shared websockets */
+#if defined(USE_LUA)
+ void *lua_background_state; /* lua_State (here as void *) */
+ pthread_mutex_t lua_bg_mutex; /* Protect background state */
+ int lua_bg_log_available; /* Use Lua background state for access log */
+#endif
+
+ int user_shutdown_notification_socket; /* mg_stop() will close this
+ socket... */
+ int thread_shutdown_notification_socket; /* to cause poll() in all threads
+ to return immediately */
+
+ /* Server nonce */
+ pthread_mutex_t nonce_mutex; /* Protects ssl_ctx, handlers,
+ * ssl_cert_last_mtime, nonce_count, and
+ * next (linked list) */
+
+ /* Server callbacks */
+ struct mg_callbacks callbacks; /* User-defined callback function */
+ void *user_data; /* User-defined data */
+
+ /* Part 2 - Logical domain:
+ * This holds hostname, TLS certificate, document root, ...
+ * set for a domain hosted at the server.
+ * There may be multiple domains hosted at one physical server.
+ * The default domain "dd" is the first element of a list of
+ * domains.
+ */
+ struct mg_domain_context dd; /* default domain */
+};
+
+
+#if defined(USE_SERVER_STATS)
+static struct mg_memory_stat mg_common_memory = {0, 0, 0};
+
+static struct mg_memory_stat *
+get_memory_stat(struct mg_context *ctx)
+{
+ if (ctx) {
+ return &(ctx->ctx_memory);
+ }
+ return &mg_common_memory;
+}
+#endif
+
+enum {
+ CONNECTION_TYPE_INVALID = 0,
+ CONNECTION_TYPE_REQUEST = 1,
+ CONNECTION_TYPE_RESPONSE = 2
+};
+
+enum {
+ PROTOCOL_TYPE_HTTP1 = 0,
+ PROTOCOL_TYPE_WEBSOCKET = 1,
+ PROTOCOL_TYPE_HTTP2 = 2
+};
+
+
+#if defined(USE_HTTP2)
+#if !defined(HTTP2_DYN_TABLE_SIZE)
+#define HTTP2_DYN_TABLE_SIZE (256)
+#endif
+
+struct mg_http2_connection {
+ uint32_t stream_id;
+ uint32_t dyn_table_size;
+ struct mg_header dyn_table[HTTP2_DYN_TABLE_SIZE];
+};
+#endif
+
+
+struct mg_connection {
+ int connection_type; /* see CONNECTION_TYPE_* above */
+ int protocol_type; /* see PROTOCOL_TYPE_*: 0=http/1.x, 1=ws, 2=http/2 */
+ int request_state; /* 0: nothing sent, 1: header partially sent, 2: header
+ fully sent */
+#if defined(USE_HTTP2)
+ struct mg_http2_connection http2;
+#endif
+
+ struct mg_request_info request_info;
+ struct mg_response_info response_info;
+
+ struct mg_context *phys_ctx;
+ struct mg_domain_context *dom_ctx;
+
+#if defined(USE_SERVER_STATS)
+ int conn_state; /* 0 = undef, numerical value may change in different
+ * versions. For the current definition, see
+ * mg_get_connection_info_impl */
+#endif
+ SSL *ssl; /* SSL descriptor */
+ struct socket client; /* Connected client */
+ time_t conn_birth_time; /* Time (wall clock) when connection was
+ * established */
+#if defined(USE_SERVER_STATS)
+ time_t conn_close_time; /* Time (wall clock) when connection was
+ * closed (or 0 if still open) */
+ double processing_time; /* Processing time for one request. */
+#endif
+ struct timespec req_time; /* Time (since system start) when the request
+ * was received */
+ int64_t num_bytes_sent; /* Total bytes sent to client */
+ int64_t content_len; /* How many bytes of content can be read
+ * !is_chunked: Content-Length header value
+ * or -1 (until connection closed,
+ * not allowed for a request)
+ * is_chunked: >= 0, appended gradually
+ */
+ int64_t consumed_content; /* How many bytes of content have been read */
+ int is_chunked; /* Transfer-Encoding is chunked:
+ * 0 = not chunked,
+ * 1 = chunked, not yet, or some data read,
+ * 2 = chunked, has error,
+ * 3 = chunked, all data read except trailer,
+ * 4 = chunked, all data read
+ */
+ char *buf; /* Buffer for received data */
+ char *path_info; /* PATH_INFO part of the URL */
+
+ int must_close; /* 1 if connection must be closed */
+ int accept_gzip; /* 1 if gzip encoding is accepted */
+ int in_error_handler; /* 1 if in handler for user defined error
+ * pages */
+#if defined(USE_WEBSOCKET)
+ int in_websocket_handling; /* 1 if in read_websocket */
+#endif
+#if defined(USE_ZLIB) && defined(USE_WEBSOCKET) \
+ && defined(MG_EXPERIMENTAL_INTERFACES)
+ /* Parameters for websocket data compression according to rfc7692 */
+ int websocket_deflate_server_max_windows_bits;
+ int websocket_deflate_client_max_windows_bits;
+ int websocket_deflate_server_no_context_takeover;
+ int websocket_deflate_client_no_context_takeover;
+ int websocket_deflate_initialized;
+ int websocket_deflate_flush;
+ z_stream websocket_deflate_state;
+ z_stream websocket_inflate_state;
+#endif
+ int handled_requests; /* Number of requests handled by this connection
+ */
+ int buf_size; /* Buffer size */
+ int request_len; /* Size of the request + headers in a buffer */
+ int data_len; /* Total size of data in a buffer */
+ int status_code; /* HTTP reply status code, e.g. 200 */
+ int throttle; /* Throttling, bytes/sec. <= 0 means no
+ * throttle */
+
+ time_t last_throttle_time; /* Last time throttled data was sent */
+ int last_throttle_bytes; /* Bytes sent this second */
+ pthread_mutex_t mutex; /* Used by mg_(un)lock_connection to ensure
+ * atomic transmissions for websockets */
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ void *lua_websocket_state; /* Lua_State for a websocket connection */
+#endif
+
+ void *tls_user_ptr; /* User defined pointer in thread local storage,
+ * for quick access */
+};
+
+
+/* Directory entry */
+struct de {
+ char *file_name;
+ struct mg_file_stat file;
+};
+
+
+#define mg_cry_internal(conn, fmt, ...) \
+ mg_cry_internal_wrap(conn, NULL, __func__, __LINE__, fmt, __VA_ARGS__)
+
+#define mg_cry_ctx_internal(ctx, fmt, ...) \
+ mg_cry_internal_wrap(NULL, ctx, __func__, __LINE__, fmt, __VA_ARGS__)
+
+static void mg_cry_internal_wrap(const struct mg_connection *conn,
+ struct mg_context *ctx,
+ const char *func,
+ unsigned line,
+ const char *fmt,
+ ...) PRINTF_ARGS(5, 6);
+
+
+#if !defined(NO_THREAD_NAME)
+#if defined(_WIN32) && defined(_MSC_VER)
+/* Set the thread name for debugging purposes in Visual Studio
+ * http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
+ */
+#pragma pack(push, 8)
+typedef struct tagTHREADNAME_INFO {
+ DWORD dwType; /* Must be 0x1000. */
+ LPCSTR szName; /* Pointer to name (in user addr space). */
+ DWORD dwThreadID; /* Thread ID (-1=caller thread). */
+ DWORD dwFlags; /* Reserved for future use, must be zero. */
+} THREADNAME_INFO;
+#pragma pack(pop)
+
+#elif defined(__linux__)
+
+#include
+#include
+#if defined(ALTERNATIVE_QUEUE)
+#include
+#endif /* ALTERNATIVE_QUEUE */
+
+
+#if defined(ALTERNATIVE_QUEUE)
+
+static void *
+event_create(void)
+{
+ int evhdl = eventfd(0, EFD_CLOEXEC);
+ int *ret;
+
+ if (evhdl == -1) {
+ /* Linux uses -1 on error, Windows NULL. */
+ /* However, Linux does not return 0 on success either. */
+ return 0;
+ }
+
+ ret = (int *)mg_malloc(sizeof(int));
+ if (ret) {
+ *ret = evhdl;
+ } else {
+ (void)close(evhdl);
+ }
+
+ return (void *)ret;
+}
+
+
+static int
+event_wait(void *eventhdl)
+{
+ uint64_t u;
+ int evhdl, s;
+
+ if (!eventhdl) {
+ /* error */
+ return 0;
+ }
+ evhdl = *(int *)eventhdl;
+
+ s = (int)read(evhdl, &u, sizeof(u));
+ if (s != sizeof(u)) {
+ /* error */
+ return 0;
+ }
+ (void)u; /* the value is not required */
+ return 1;
+}
+
+
+static int
+event_signal(void *eventhdl)
+{
+ uint64_t u = 1;
+ int evhdl, s;
+
+ if (!eventhdl) {
+ /* error */
+ return 0;
+ }
+ evhdl = *(int *)eventhdl;
+
+ s = (int)write(evhdl, &u, sizeof(u));
+ if (s != sizeof(u)) {
+ /* error */
+ return 0;
+ }
+ return 1;
+}
+
+
+static void
+event_destroy(void *eventhdl)
+{
+ int evhdl;
+
+ if (!eventhdl) {
+ /* error */
+ return;
+ }
+ evhdl = *(int *)eventhdl;
+
+ close(evhdl);
+ mg_free(eventhdl);
+}
+
+
+#endif
+
+#endif
+
+
+#if !defined(__linux__) && !defined(_WIN32) && defined(ALTERNATIVE_QUEUE)
+
+struct posix_event {
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+ int signaled;
+};
+
+
+static void *
+event_create(void)
+{
+ struct posix_event *ret = mg_malloc(sizeof(struct posix_event));
+ if (ret == 0) {
+ /* out of memory */
+ return 0;
+ }
+ if (0 != pthread_mutex_init(&(ret->mutex), NULL)) {
+ /* pthread mutex not available */
+ mg_free(ret);
+ return 0;
+ }
+ if (0 != pthread_cond_init(&(ret->cond), NULL)) {
+ /* pthread cond not available */
+ pthread_mutex_destroy(&(ret->mutex));
+ mg_free(ret);
+ return 0;
+ }
+ ret->signaled = 0;
+ return (void *)ret;
+}
+
+
+static int
+event_wait(void *eventhdl)
+{
+ struct posix_event *ev = (struct posix_event *)eventhdl;
+ pthread_mutex_lock(&(ev->mutex));
+ while (!ev->signaled) {
+ pthread_cond_wait(&(ev->cond), &(ev->mutex));
+ }
+ ev->signaled = 0;
+ pthread_mutex_unlock(&(ev->mutex));
+ return 1;
+}
+
+
+static int
+event_signal(void *eventhdl)
+{
+ struct posix_event *ev = (struct posix_event *)eventhdl;
+ pthread_mutex_lock(&(ev->mutex));
+ pthread_cond_signal(&(ev->cond));
+ ev->signaled = 1;
+ pthread_mutex_unlock(&(ev->mutex));
+ return 1;
+}
+
+
+static void
+event_destroy(void *eventhdl)
+{
+ struct posix_event *ev = (struct posix_event *)eventhdl;
+ pthread_cond_destroy(&(ev->cond));
+ pthread_mutex_destroy(&(ev->mutex));
+ mg_free(ev);
+}
+#endif
+
+
+static void
+mg_set_thread_name(const char *name)
+{
+ char threadName[16 + 1]; /* 16 = Max. thread length in Linux/OSX/.. */
+
+ mg_snprintf(
+ NULL, NULL, threadName, sizeof(threadName), "civetweb-%s", name);
+
+#if defined(_WIN32)
+#if defined(_MSC_VER)
+ /* Windows and Visual Studio Compiler */
+ __try {
+ THREADNAME_INFO info;
+ info.dwType = 0x1000;
+ info.szName = threadName;
+ info.dwThreadID = ~0U;
+ info.dwFlags = 0;
+
+ RaiseException(0x406D1388,
+ 0,
+ sizeof(info) / sizeof(ULONG_PTR),
+ (ULONG_PTR *)&info);
+ } __except (EXCEPTION_EXECUTE_HANDLER) {
+ }
+#elif defined(__MINGW32__)
+ /* No option known to set thread name for MinGW known */
+#endif
+#elif defined(_GNU_SOURCE) && defined(__GLIBC__) \
+ && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 12)))
+ /* pthread_setname_np first appeared in glibc in version 2.12 */
+#if defined(__MACH__) && defined(__APPLE__)
+ /* OS X only current thread name can be changed */
+ (void)pthread_setname_np(threadName);
+#else
+ (void)pthread_setname_np(pthread_self(), threadName);
+#endif
+#elif defined(__linux__)
+ /* On Linux we can use the prctl function.
+ * When building for Linux Standard Base (LSB) use
+ * NO_THREAD_NAME. However, thread names are a big
+ * help for debugging, so the stadard is to set them.
+ */
+ (void)prctl(PR_SET_NAME, threadName, 0, 0, 0);
+#endif
+}
+#else /* !defined(NO_THREAD_NAME) */
+static void
+mg_set_thread_name(const char *threadName)
+{
+}
+#endif
+
+
+CIVETWEB_API const struct mg_option *
+mg_get_valid_options(void)
+{
+ return config_options;
+}
+
+
+/* Do not open file (unused) */
+#define MG_FOPEN_MODE_NONE (0)
+
+/* Open file for read only access */
+#define MG_FOPEN_MODE_READ (1)
+
+/* Open file for writing, create and overwrite */
+#define MG_FOPEN_MODE_WRITE (2)
+
+/* Open file for writing, create and append */
+#define MG_FOPEN_MODE_APPEND (4)
+
+
+static int
+is_file_opened(const struct mg_file_access *fileacc)
+{
+ if (!fileacc) {
+ return 0;
+ }
+
+ return (fileacc->fp != NULL);
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+static int mg_stat(const struct mg_connection *conn,
+ const char *path,
+ struct mg_file_stat *filep);
+
+
+/* Reject files with special characters (for Windows) */
+static int
+mg_path_suspicious(const struct mg_connection *conn, const char *path)
+{
+ const uint8_t *c = (const uint8_t *)path;
+ (void)conn; /* not used */
+
+ if ((c == NULL) || (c[0] == 0)) {
+ /* Null pointer or empty path --> suspicious */
+ return 1;
+ }
+
+#if defined(_WIN32)
+ while (*c) {
+ if (*c < 32) {
+ /* Control character */
+ return 1;
+ }
+ if ((*c == '>') || (*c == '<') || (*c == '|')) {
+ /* stdin/stdout redirection character */
+ return 1;
+ }
+ if ((*c == '*') || (*c == '?')) {
+ /* Wildcard character */
+ return 1;
+ }
+ if (*c == '"') {
+ /* Windows quotation */
+ return 1;
+ }
+ c++;
+ }
+#endif
+
+ /* Nothing suspicious found */
+ return 0;
+}
+
+
+/* mg_fopen will open a file either in memory or on the disk.
+ * The input parameter path is a string in UTF-8 encoding.
+ * The input parameter mode is MG_FOPEN_MODE_*
+ * On success, fp will be set in the output struct mg_file.
+ * All status members will also be set.
+ * The function returns 1 on success, 0 on error. */
+static int
+mg_fopen(const struct mg_connection *conn,
+ const char *path,
+ int mode,
+ struct mg_file *filep)
+{
+ int found;
+
+ if (!filep) {
+ return 0;
+ }
+ filep->access.fp = NULL;
+
+ if (mg_path_suspicious(conn, path)) {
+ return 0;
+ }
+
+ /* filep is initialized in mg_stat: all fields with memset to,
+ * some fields like size and modification date with values */
+ found = mg_stat(conn, path, &(filep->stat));
+
+ if ((mode == MG_FOPEN_MODE_READ) && (!found)) {
+ /* file does not exist and will not be created */
+ return 0;
+ }
+
+#if defined(_WIN32)
+ {
+ wchar_t wbuf[UTF16_PATH_MAX];
+ path_to_unicode(conn, path, wbuf, ARRAY_SIZE(wbuf));
+ switch (mode) {
+ case MG_FOPEN_MODE_READ:
+ filep->access.fp = _wfopen(wbuf, L"rb");
+ break;
+ case MG_FOPEN_MODE_WRITE:
+ filep->access.fp = _wfopen(wbuf, L"wb");
+ break;
+ case MG_FOPEN_MODE_APPEND:
+ filep->access.fp = _wfopen(wbuf, L"ab");
+ break;
+ }
+ }
+#else
+ /* Linux et al already use unicode. No need to convert. */
+ switch (mode) {
+ case MG_FOPEN_MODE_READ:
+ filep->access.fp = fopen(path, "r");
+ break;
+ case MG_FOPEN_MODE_WRITE:
+ filep->access.fp = fopen(path, "w");
+ break;
+ case MG_FOPEN_MODE_APPEND:
+ filep->access.fp = fopen(path, "a");
+ break;
+ }
+
+#endif
+ if (!found) {
+ /* File did not exist before fopen was called.
+ * Maybe it has been created now. Get stat info
+ * like creation time now. */
+ found = mg_stat(conn, path, &(filep->stat));
+ (void)found;
+ }
+
+ /* return OK if file is opened */
+ return (filep->access.fp != NULL);
+}
+
+
+/* return 0 on success, just like fclose */
+static int
+mg_fclose(struct mg_file_access *fileacc)
+{
+ int ret = -1;
+ if (fileacc != NULL) {
+ if (fileacc->fp != NULL) {
+ ret = fclose(fileacc->fp);
+ }
+ /* reset all members of fileacc */
+ memset(fileacc, 0, sizeof(*fileacc));
+ }
+ return ret;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+static void
+mg_strlcpy(char *dst, const char *src, size_t n)
+{
+ for (; *src != '\0' && n > 1; n--) {
+ *dst++ = *src++;
+ }
+ *dst = '\0';
+}
+
+
+static int
+lowercase(const char *s)
+{
+ return tolower((unsigned char)*s);
+}
+
+
+CIVETWEB_API int
+mg_strncasecmp(const char *s1, const char *s2, size_t len)
+{
+ int diff = 0;
+
+ if (len > 0) {
+ do {
+ diff = lowercase(s1++) - lowercase(s2++);
+ } while (diff == 0 && s1[-1] != '\0' && --len > 0);
+ }
+
+ return diff;
+}
+
+
+CIVETWEB_API int
+mg_strcasecmp(const char *s1, const char *s2)
+{
+ int diff;
+
+ do {
+ diff = lowercase(s1++) - lowercase(s2++);
+ } while (diff == 0 && s1[-1] != '\0');
+
+ return diff;
+}
+
+
+static char *
+mg_strndup_ctx(const char *ptr, size_t len, struct mg_context *ctx)
+{
+ char *p;
+ (void)ctx; /* Avoid Visual Studio warning if USE_SERVER_STATS is not
+ * defined */
+
+ if ((p = (char *)mg_malloc_ctx(len + 1, ctx)) != NULL) {
+ mg_strlcpy(p, ptr, len + 1);
+ }
+
+ return p;
+}
+
+
+static char *
+mg_strdup_ctx(const char *str, struct mg_context *ctx)
+{
+ return mg_strndup_ctx(str, strlen(str), ctx);
+}
+
+static char *
+mg_strdup(const char *str)
+{
+ return mg_strndup_ctx(str, strlen(str), NULL);
+}
+
+
+static const char *
+mg_strcasestr(const char *big_str, const char *small_str)
+{
+ size_t i, big_len = strlen(big_str), small_len = strlen(small_str);
+
+ if (big_len >= small_len) {
+ for (i = 0; i <= (big_len - small_len); i++) {
+ if (mg_strncasecmp(big_str + i, small_str, small_len) == 0) {
+ return big_str + i;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+
+/* Return null terminated string of given maximum length.
+ * Report errors if length is exceeded. */
+static void
+mg_vsnprintf(const struct mg_connection *conn,
+ int *truncated,
+ char *buf,
+ size_t buflen,
+ const char *fmt,
+ va_list ap)
+{
+ int n, ok;
+
+ if (buflen == 0) {
+ if (truncated) {
+ *truncated = 1;
+ }
+ return;
+ }
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-nonliteral"
+ /* Using fmt as a non-literal is intended here, since it is mostly called
+ * indirectly by mg_snprintf */
+#endif
+
+ n = (int)vsnprintf_impl(buf, buflen, fmt, ap);
+ ok = (n >= 0) && ((size_t)n < buflen);
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+ if (ok) {
+ if (truncated) {
+ *truncated = 0;
+ }
+ } else {
+ if (truncated) {
+ *truncated = 1;
+ }
+ mg_cry_internal(conn,
+ "truncating vsnprintf buffer: [%.*s]",
+ (int)((buflen > 200) ? 200 : (buflen - 1)),
+ buf);
+ n = (int)buflen - 1;
+ }
+ buf[n] = '\0';
+}
+
+
+static void
+mg_snprintf(const struct mg_connection *conn,
+ int *truncated,
+ char *buf,
+ size_t buflen,
+ const char *fmt,
+ ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ mg_vsnprintf(conn, truncated, buf, buflen, fmt, ap);
+ va_end(ap);
+}
+
+
+static int
+get_option_index(const char *name)
+{
+ int i;
+
+ for (i = 0; config_options[i].name != NULL; i++) {
+ if (strcmp(config_options[i].name, name) == 0) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+
+CIVETWEB_API const char *
+mg_get_option(const struct mg_context *ctx, const char *name)
+{
+ int i;
+ if ((i = get_option_index(name)) == -1) {
+ return NULL;
+ } else if (!ctx || ctx->dd.config[i] == NULL) {
+ return "";
+ } else {
+ return ctx->dd.config[i];
+ }
+}
+
+#define mg_get_option DO_NOT_USE_THIS_FUNCTION_INTERNALLY__access_directly
+
+CIVETWEB_API struct mg_context *
+mg_get_context(const struct mg_connection *conn)
+{
+ return (conn == NULL) ? (struct mg_context *)NULL : (conn->phys_ctx);
+}
+
+
+CIVETWEB_API void *
+mg_get_user_data(const struct mg_context *ctx)
+{
+ return (ctx == NULL) ? NULL : ctx->user_data;
+}
+
+
+CIVETWEB_API void *
+mg_get_user_context_data(const struct mg_connection *conn)
+{
+ return mg_get_user_data(mg_get_context(conn));
+}
+
+
+CIVETWEB_API void *
+mg_get_thread_pointer(const struct mg_connection *conn)
+{
+ /* both methods should return the same pointer */
+ if (conn) {
+ /* quick access, in case conn is known */
+ return conn->tls_user_ptr;
+ } else {
+ /* otherwise get pointer from thread local storage (TLS) */
+ struct mg_workerTLS *tls =
+ (struct mg_workerTLS *)pthread_getspecific(sTlsKey);
+ return tls->user_ptr;
+ }
+}
+
+
+CIVETWEB_API void
+mg_set_user_connection_data(const struct mg_connection *const_conn, void *data)
+{
+ if (const_conn != NULL) {
+ /* Const cast, since "const struct mg_connection *" does not mean
+ * the connection object is not modified. Here "const" is used,
+ * to indicate mg_read/mg_write/mg_send/.. must not be called. */
+ struct mg_connection *conn = (struct mg_connection *)const_conn;
+ conn->request_info.conn_data = data;
+ }
+}
+
+
+CIVETWEB_API void *
+mg_get_user_connection_data(const struct mg_connection *conn)
+{
+ if (conn != NULL) {
+ return conn->request_info.conn_data;
+ }
+ return NULL;
+}
+
+
+CIVETWEB_API int
+mg_get_server_ports(const struct mg_context *ctx,
+ int size,
+ struct mg_server_port *ports)
+{
+ int i, cnt = 0;
+
+ if (size <= 0) {
+ return -1;
+ }
+ memset(ports, 0, sizeof(*ports) * (size_t)size);
+ if (!ctx) {
+ return -1;
+ }
+ if (!ctx->listening_sockets) {
+ return -1;
+ }
+
+ for (i = 0; (i < size) && (i < (int)ctx->num_listening_sockets); i++) {
+
+ ports[cnt].port =
+ ntohs(USA_IN_PORT_UNSAFE(&(ctx->listening_sockets[i].lsa)));
+ ports[cnt].is_ssl = ctx->listening_sockets[i].is_ssl;
+ ports[cnt].is_redirect = ctx->listening_sockets[i].ssl_redir;
+ ports[cnt].is_optional = ctx->listening_sockets[i].is_optional;
+ ports[cnt].is_bound = ctx->listening_sockets[i].sock != INVALID_SOCKET;
+
+ if (ctx->listening_sockets[i].lsa.sa.sa_family == AF_INET) {
+ /* IPv4 */
+ ports[cnt].protocol = 1;
+ cnt++;
+ } else if (ctx->listening_sockets[i].lsa.sa.sa_family == AF_INET6) {
+ /* IPv6 */
+ ports[cnt].protocol = 3;
+ cnt++;
+ }
+ }
+
+ return cnt;
+}
+
+
+#if defined(USE_X_DOM_SOCKET) && !defined(UNIX_DOMAIN_SOCKET_SERVER_NAME)
+#define UNIX_DOMAIN_SOCKET_SERVER_NAME "*"
+#endif
+
+static void
+sockaddr_to_string(char *buf, size_t len, const union usa *usa)
+{
+ buf[0] = '\0';
+
+ if (!usa) {
+ return;
+ }
+
+ if (usa->sa.sa_family == AF_INET) {
+ getnameinfo(&usa->sa,
+ sizeof(usa->sin),
+ buf,
+ (unsigned)len,
+ NULL,
+ 0,
+ NI_NUMERICHOST);
+ }
+#if defined(USE_IPV6)
+ else if (usa->sa.sa_family == AF_INET6) {
+ getnameinfo(&usa->sa,
+ sizeof(usa->sin6),
+ buf,
+ (unsigned)len,
+ NULL,
+ 0,
+ NI_NUMERICHOST);
+ }
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ else if (usa->sa.sa_family == AF_UNIX) {
+ /* TODO: Define a remote address for unix domain sockets.
+ * This code will always return "localhost", identical to http+tcp:
+ getnameinfo(&usa->sa,
+ sizeof(usa->sun),
+ buf,
+ (unsigned)len,
+ NULL,
+ 0,
+ NI_NUMERICHOST);
+ */
+ mg_strlcpy(buf, UNIX_DOMAIN_SOCKET_SERVER_NAME, len);
+ }
+#endif
+}
+
+
+/* Convert time_t to a string. According to RFC2616, Sec 14.18, this must be
+ * included in all responses other than 100, 101, 5xx. */
+static void
+gmt_time_string(char *buf, size_t buf_len, time_t *t)
+{
+#if !defined(REENTRANT_TIME)
+ struct tm *tm;
+
+ tm = ((t != NULL) ? gmtime(t) : NULL);
+ if (tm != NULL) {
+#else
+ struct tm _tm;
+ struct tm *tm = &_tm;
+
+ if (t != NULL) {
+ gmtime_r(t, tm);
+#endif
+ strftime(buf, buf_len, "%a, %d %b %Y %H:%M:%S GMT", tm);
+ } else {
+ mg_strlcpy(buf, "Thu, 01 Jan 1970 00:00:00 GMT", buf_len);
+ }
+}
+
+
+/* difftime for struct timespec. Return value is in seconds. */
+static double
+mg_difftimespec(const struct timespec *ts_now, const struct timespec *ts_before)
+{
+ return (double)(ts_now->tv_nsec - ts_before->tv_nsec) * 1.0E-9
+ + (double)(ts_now->tv_sec - ts_before->tv_sec);
+}
+
+
+#if defined(MG_EXTERNAL_FUNCTION_mg_cry_internal_impl)
+static void mg_cry_internal_impl(const struct mg_connection *conn,
+ const char *func,
+ unsigned line,
+ const char *fmt,
+ va_list ap);
+#include "external_mg_cry_internal_impl.inl"
+#elif !defined(NO_FILESYSTEMS)
+
+/* Print error message to the opened error log stream. */
+static void
+mg_cry_internal_impl(const struct mg_connection *conn,
+ const char *func,
+ unsigned line,
+ const char *fmt,
+ va_list ap)
+{
+ char buf[MG_BUF_LEN], src_addr[IP_ADDR_STR_LEN];
+ struct mg_file fi;
+ time_t timestamp;
+
+ /* Unused, in the RELEASE build */
+ (void)func;
+ (void)line;
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
+
+ IGNORE_UNUSED_RESULT(vsnprintf_impl(buf, sizeof(buf), fmt, ap));
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic pop
+#endif
+
+ buf[sizeof(buf) - 1] = 0;
+
+ DEBUG_TRACE("mg_cry called from %s:%u: %s", func, line, buf);
+
+ if (!conn) {
+ fputs(buf, stderr);
+ return;
+ }
+
+ /* Do not lock when getting the callback value, here and below.
+ * I suppose this is fine, since function cannot disappear in the
+ * same way string option can. */
+ if ((conn->phys_ctx->callbacks.log_message == NULL)
+ || (conn->phys_ctx->callbacks.log_message(conn, buf) == 0)) {
+
+ if (conn->dom_ctx->config[ERROR_LOG_FILE] != NULL) {
+ if (mg_fopen(conn,
+ conn->dom_ctx->config[ERROR_LOG_FILE],
+ MG_FOPEN_MODE_APPEND,
+ &fi)
+ == 0) {
+ fi.access.fp = NULL;
+ }
+ } else {
+ fi.access.fp = NULL;
+ }
+
+ if (fi.access.fp != NULL) {
+ flockfile(fi.access.fp);
+ timestamp = time(NULL);
+
+ sockaddr_to_string(src_addr, sizeof(src_addr), &conn->client.rsa);
+ fprintf(fi.access.fp,
+ "[%010lu] [error] [client %s] ",
+ (unsigned long)timestamp,
+ src_addr);
+
+ if (conn->request_info.request_method != NULL) {
+ fprintf(fi.access.fp,
+ "%s %s: ",
+ conn->request_info.request_method,
+ conn->request_info.request_uri
+ ? conn->request_info.request_uri
+ : "");
+ }
+
+ fprintf(fi.access.fp, "%s", buf);
+ fputc('\n', fi.access.fp);
+ fflush(fi.access.fp);
+ funlockfile(fi.access.fp);
+ (void)mg_fclose(&fi.access); /* Ignore errors. We can't call
+ * mg_cry here anyway ;-) */
+ }
+ }
+}
+#else
+#error Must either enable filesystems or provide a custom mg_cry_internal_impl implementation
+#endif /* Externally provided function */
+
+
+/* Construct fake connection structure. Used for logging, if connection
+ * is not applicable at the moment of logging. */
+static struct mg_connection *
+fake_connection(struct mg_connection *fc, struct mg_context *ctx)
+{
+ static const struct mg_connection conn_zero = {0};
+ *fc = conn_zero;
+ fc->phys_ctx = ctx;
+ fc->dom_ctx = &(ctx->dd);
+ return fc;
+}
+
+
+static void
+mg_cry_internal_wrap(const struct mg_connection *conn,
+ struct mg_context *ctx,
+ const char *func,
+ unsigned line,
+ const char *fmt,
+ ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ if (!conn && ctx) {
+ struct mg_connection fc;
+ mg_cry_internal_impl(fake_connection(&fc, ctx), func, line, fmt, ap);
+ } else {
+ mg_cry_internal_impl(conn, func, line, fmt, ap);
+ }
+ va_end(ap);
+}
+
+
+CIVETWEB_API void
+mg_cry(const struct mg_connection *conn, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ mg_cry_internal_impl(conn, "user", 0, fmt, ap);
+ va_end(ap);
+}
+
+
+#define mg_cry DO_NOT_USE_THIS_FUNCTION__USE_mg_cry_internal
+
+
+CIVETWEB_API const char *
+mg_version(void)
+{
+ return CIVETWEB_VERSION;
+}
+
+
+CIVETWEB_API const struct mg_request_info *
+mg_get_request_info(const struct mg_connection *conn)
+{
+ if (!conn) {
+ return NULL;
+ }
+#if defined(MG_ALLOW_USING_GET_REQUEST_INFO_FOR_RESPONSE)
+ if (conn->connection_type == CONNECTION_TYPE_RESPONSE) {
+ char txt[16];
+ struct mg_workerTLS *tls =
+ (struct mg_workerTLS *)pthread_getspecific(sTlsKey);
+
+ sprintf(txt, "%03i", conn->response_info.status_code);
+ if (strlen(txt) == 3) {
+ memcpy(tls->txtbuf, txt, 4);
+ } else {
+ strcpy(tls->txtbuf, "ERR");
+ }
+
+ ((struct mg_connection *)conn)->request_info.local_uri =
+ tls->txtbuf; /* use thread safe buffer */
+ ((struct mg_connection *)conn)->request_info.local_uri_raw =
+ tls->txtbuf; /* use the same thread safe buffer */
+ ((struct mg_connection *)conn)->request_info.request_uri =
+ tls->txtbuf; /* use the same thread safe buffer */
+
+ ((struct mg_connection *)conn)->request_info.num_headers =
+ conn->response_info.num_headers;
+ memcpy(((struct mg_connection *)conn)->request_info.http_headers,
+ conn->response_info.http_headers,
+ sizeof(conn->response_info.http_headers));
+ } else
+#endif
+ if (conn->connection_type != CONNECTION_TYPE_REQUEST) {
+ return NULL;
+ }
+ return &conn->request_info;
+}
+
+
+CIVETWEB_API const struct mg_response_info *
+mg_get_response_info(const struct mg_connection *conn)
+{
+ if (!conn) {
+ return NULL;
+ }
+ if (conn->connection_type != CONNECTION_TYPE_RESPONSE) {
+ return NULL;
+ }
+ return &conn->response_info;
+}
+
+
+static const char *
+get_proto_name(const struct mg_connection *conn)
+{
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunreachable-code"
+ /* Depending on USE_WEBSOCKET and NO_SSL, some oft the protocols might be
+ * not supported. Clang raises an "unreachable code" warning for parts of ?:
+ * unreachable, but splitting into four different #ifdef clauses here is
+ * more complicated.
+ */
+#endif
+
+ const struct mg_request_info *ri = &conn->request_info;
+
+ const char *proto = ((conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET)
+ ? (ri->is_ssl ? "wss" : "ws")
+ : (ri->is_ssl ? "https" : "http"));
+
+ return proto;
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+}
+
+
+static int
+mg_construct_local_link(const struct mg_connection *conn,
+ char *buf,
+ size_t buflen,
+ const char *define_proto,
+ int define_port,
+ const char *define_uri)
+{
+ if ((buflen < 1) || (buf == 0) || (conn == 0)) {
+ return -1;
+ } else {
+ int i, j;
+ int truncated = 0;
+ const struct mg_request_info *ri = &conn->request_info;
+
+ const char *proto =
+ (define_proto != NULL) ? define_proto : get_proto_name(conn);
+ const char *uri =
+ (define_uri != NULL)
+ ? define_uri
+ : ((ri->request_uri != NULL) ? ri->request_uri : ri->local_uri);
+ int port = (define_port > 0) ? define_port : ri->server_port;
+ int default_port = 80;
+ char *uri_encoded;
+ size_t uri_encoded_len;
+
+ if (uri == NULL) {
+ return -1;
+ }
+
+ uri_encoded_len = strlen(uri) * 3 + 1;
+ uri_encoded = (char *)mg_malloc_ctx(uri_encoded_len, conn->phys_ctx);
+ if (uri_encoded == NULL) {
+ return -1;
+ }
+ mg_url_encode(uri, uri_encoded, uri_encoded_len);
+
+ /* Directory separator should be preserved. */
+ for (i = j = 0; uri_encoded[i]; j++) {
+ if (!strncmp(uri_encoded + i, "%2f", 3)) {
+ uri_encoded[j] = '/';
+ i += 3;
+ } else {
+ uri_encoded[j] = uri_encoded[i++];
+ }
+ }
+ uri_encoded[j] = '\0';
+
+#if defined(USE_X_DOM_SOCKET)
+ if (conn->client.lsa.sa.sa_family == AF_UNIX) {
+ /* TODO: Define and document a link for UNIX domain sockets. */
+ /* There seems to be no official standard for this.
+ * Common uses seem to be "httpunix://", "http.unix://" or
+ * "http+unix://" as a protocol definition string, followed by
+ * "localhost" or "127.0.0.1" or "/tmp/unix/path" or
+ * "%2Ftmp%2Funix%2Fpath" (url % encoded) or
+ * "localhost:%2Ftmp%2Funix%2Fpath" (domain socket path as port) or
+ * "" (completely skipping the server name part). In any case, the
+ * last part is the server local path. */
+ const char *server_name = UNIX_DOMAIN_SOCKET_SERVER_NAME;
+ mg_snprintf(conn,
+ &truncated,
+ buf,
+ buflen,
+ "%s.unix://%s%s",
+ proto,
+ server_name,
+ ri->local_uri);
+ default_port = 0;
+ mg_free(uri_encoded);
+ return 0;
+ }
+#endif
+
+ if (define_proto) {
+ /* If we got a protocol name, use the default port accordingly. */
+ if ((0 == strcmp(define_proto, "https"))
+ || (0 == strcmp(define_proto, "wss"))) {
+ default_port = 443;
+ }
+ } else if (ri->is_ssl) {
+ /* If we did not get a protocol name, use TLS as default if it is
+ * already used. */
+ default_port = 443;
+ }
+
+ {
+#if defined(USE_IPV6)
+ int is_ipv6 = (conn->client.lsa.sa.sa_family == AF_INET6);
+#endif
+ int auth_domain_check_enabled =
+ conn->dom_ctx->config[ENABLE_AUTH_DOMAIN_CHECK]
+ && (!mg_strcasecmp(
+ conn->dom_ctx->config[ENABLE_AUTH_DOMAIN_CHECK], "yes"));
+
+ const char *server_domain =
+ conn->dom_ctx->config[AUTHENTICATION_DOMAIN];
+
+ char portstr[16];
+ char server_ip[48];
+
+ if (port != default_port) {
+ sprintf(portstr, ":%u", (unsigned)port);
+ } else {
+ portstr[0] = 0;
+ }
+
+ if (!auth_domain_check_enabled || !server_domain) {
+
+ sockaddr_to_string(server_ip,
+ sizeof(server_ip),
+ &conn->client.lsa);
+
+ server_domain = server_ip;
+ }
+
+ mg_snprintf(conn,
+ &truncated,
+ buf,
+ buflen,
+#if defined(USE_IPV6)
+ "%s://%s%s%s%s%s",
+ proto,
+ (is_ipv6 && (server_domain == server_ip)) ? "[" : "",
+ server_domain,
+ (is_ipv6 && (server_domain == server_ip)) ? "]" : "",
+#else
+ "%s://%s%s%s",
+ proto,
+ server_domain,
+#endif
+ portstr,
+ uri_encoded);
+
+ mg_free(uri_encoded);
+ if (truncated) {
+ return -1;
+ }
+ return 0;
+ }
+ }
+}
+
+
+CIVETWEB_API int
+mg_get_request_link(const struct mg_connection *conn, char *buf, size_t buflen)
+{
+ return mg_construct_local_link(conn, buf, buflen, NULL, -1, NULL);
+}
+
+
+/* Skip the characters until one of the delimiters characters found.
+ * 0-terminate resulting word. Skip the delimiter and following whitespaces.
+ * Advance pointer to buffer to the next word. Return found 0-terminated
+ * word.
+ * Delimiters can be quoted with quotechar. */
+static char *
+skip_quoted(char **buf,
+ const char *delimiters,
+ const char *whitespace,
+ char quotechar)
+{
+ char *p, *begin_word, *end_word, *end_whitespace;
+
+ begin_word = *buf;
+ end_word = begin_word + strcspn(begin_word, delimiters);
+
+ /* Check for quotechar */
+ if (end_word > begin_word) {
+ p = end_word - 1;
+ while (*p == quotechar) {
+ /* While the delimiter is quoted, look for the next delimiter. */
+ /* This happens, e.g., in calls from parse_auth_header,
+ * if the user name contains a " character. */
+
+ /* If there is anything beyond end_word, copy it. */
+ if (*end_word != '\0') {
+ size_t end_off = strcspn(end_word + 1, delimiters);
+ memmove(p, end_word, end_off + 1);
+ p += end_off; /* p must correspond to end_word - 1 */
+ end_word += end_off + 1;
+ } else {
+ *p = '\0';
+ break;
+ }
+ }
+ for (p++; p < end_word; p++) {
+ *p = '\0';
+ }
+ }
+
+ if (*end_word == '\0') {
+ *buf = end_word;
+ } else {
+
+#if defined(GCC_DIAGNOSTIC)
+ /* Disable spurious conversion warning for GCC */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#endif /* defined(GCC_DIAGNOSTIC) */
+
+ end_whitespace = end_word + strspn(&end_word[1], whitespace) + 1;
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic pop
+#endif /* defined(GCC_DIAGNOSTIC) */
+
+ for (p = end_word; p < end_whitespace; p++) {
+ *p = '\0';
+ }
+
+ *buf = end_whitespace;
+ }
+
+ return begin_word;
+}
+
+
+/* Return HTTP header value, or NULL if not found. */
+static const char *
+get_header(const struct mg_header *hdr, int num_hdr, const char *name)
+{
+ int i;
+ for (i = 0; i < num_hdr; i++) {
+ if (!mg_strcasecmp(name, hdr[i].name)) {
+ return hdr[i].value;
+ }
+ }
+
+ return NULL;
+}
+
+
+/* Retrieve requested HTTP header multiple values, and return the number of
+ * found occurrences */
+static int
+get_req_headers(const struct mg_request_info *ri,
+ const char *name,
+ const char **output,
+ int output_max_size)
+{
+ int i;
+ int cnt = 0;
+ if (ri) {
+ for (i = 0; i < ri->num_headers && cnt < output_max_size; i++) {
+ if (!mg_strcasecmp(name, ri->http_headers[i].name)) {
+ output[cnt++] = ri->http_headers[i].value;
+ }
+ }
+ }
+ return cnt;
+}
+
+
+CIVETWEB_API const char *
+mg_get_header(const struct mg_connection *conn, const char *name)
+{
+ if (!conn) {
+ return NULL;
+ }
+
+ if (conn->connection_type == CONNECTION_TYPE_REQUEST) {
+ return get_header(conn->request_info.http_headers,
+ conn->request_info.num_headers,
+ name);
+ }
+ if (conn->connection_type == CONNECTION_TYPE_RESPONSE) {
+ return get_header(conn->response_info.http_headers,
+ conn->response_info.num_headers,
+ name);
+ }
+ return NULL;
+}
+
+
+static const char *
+get_http_version(const struct mg_connection *conn)
+{
+ if (!conn) {
+ return NULL;
+ }
+
+ if (conn->connection_type == CONNECTION_TYPE_REQUEST) {
+ return conn->request_info.http_version;
+ }
+ if (conn->connection_type == CONNECTION_TYPE_RESPONSE) {
+ return conn->response_info.http_version;
+ }
+ return NULL;
+}
+
+
+/* A helper function for traversing a comma separated list of values.
+ * It returns a list pointer shifted to the next value, or NULL if the end
+ * of the list found.
+ * Value is stored in val vector. If value has form "x=y", then eq_val
+ * vector is initialized to point to the "y" part, and val vector length
+ * is adjusted to point only to "x". */
+static const char *
+next_option(const char *list, struct vec *val, struct vec *eq_val)
+{
+ int end;
+
+reparse:
+ if (val == NULL || list == NULL || *list == '\0') {
+ /* End of the list */
+ return NULL;
+ }
+
+ /* Skip over leading LWS */
+ while (*list == ' ' || *list == '\t')
+ list++;
+
+ val->ptr = list;
+ if ((list = strchr(val->ptr, ',')) != NULL) {
+ /* Comma found. Store length and shift the list ptr */
+ val->len = ((size_t)(list - val->ptr));
+ list++;
+ } else {
+ /* This value is the last one */
+ list = val->ptr + strlen(val->ptr);
+ val->len = ((size_t)(list - val->ptr));
+ }
+
+ /* Adjust length for trailing LWS */
+ end = (int)val->len - 1;
+ while (end >= 0 && ((val->ptr[end] == ' ') || (val->ptr[end] == '\t')))
+ end--;
+ val->len = (size_t)(end) + (size_t)(1);
+
+ if (val->len == 0) {
+ /* Ignore any empty entries. */
+ goto reparse;
+ }
+
+ if (eq_val != NULL) {
+ /* Value has form "x=y", adjust pointers and lengths
+ * so that val points to "x", and eq_val points to "y". */
+ eq_val->len = 0;
+ eq_val->ptr = (const char *)memchr(val->ptr, '=', val->len);
+ if (eq_val->ptr != NULL) {
+ eq_val->ptr++; /* Skip over '=' character */
+ eq_val->len = ((size_t)(val->ptr - eq_val->ptr)) + val->len;
+ val->len = ((size_t)(eq_val->ptr - val->ptr)) - 1;
+ }
+ }
+
+ return list;
+}
+
+
+/* A helper function for checking if a comma separated list of values
+ * contains
+ * the given option (case insensitvely).
+ * 'header' can be NULL, in which case false is returned. */
+static int
+header_has_option(const char *header, const char *option)
+{
+ struct vec opt_vec;
+ struct vec eq_vec;
+
+ DEBUG_ASSERT(option != NULL);
+ DEBUG_ASSERT(option[0] != '\0');
+
+ while ((header = next_option(header, &opt_vec, &eq_vec)) != NULL) {
+ if (mg_strncasecmp(option, opt_vec.ptr, opt_vec.len) == 0)
+ return 1;
+ }
+
+ return 0;
+}
+
+
+/* Sorting function implemented in a separate file */
+#include "sort.inl"
+
+/* Pattern matching has been reimplemented in a new file */
+#include "match.inl"
+
+
+/* HTTP 1.1 assumes keep alive if "Connection:" header is not set
+ * This function must tolerate situations when connection info is not
+ * set up, for example if request parsing failed. */
+static int
+should_keep_alive(const struct mg_connection *conn)
+{
+ const char *http_version;
+ const char *header;
+
+ /* First satisfy needs of the server */
+ if ((conn == NULL) || conn->must_close) {
+ /* Close, if civetweb framework needs to close */
+ return 0;
+ }
+
+ if (mg_strcasecmp(conn->dom_ctx->config[ENABLE_KEEP_ALIVE], "yes") != 0) {
+ /* Close, if keep alive is not enabled */
+ return 0;
+ }
+
+ /* Check explicit wish of the client */
+ header = mg_get_header(conn, "Connection");
+ if (header) {
+ /* If there is a connection header from the client, obey */
+ if (header_has_option(header, "keep-alive")) {
+ return 1;
+ }
+ return 0;
+ }
+
+ /* Use default of the standard */
+ http_version = get_http_version(conn);
+ if (http_version && (0 == strcmp(http_version, "1.1"))) {
+ /* HTTP 1.1 default is keep alive */
+ return 1;
+ }
+
+ /* HTTP 1.0 (and earlier) default is to close the connection */
+ return 0;
+}
+
+
+static int
+should_decode_url(const struct mg_connection *conn)
+{
+ if (!conn || !conn->dom_ctx) {
+ return 0;
+ }
+
+ return (mg_strcasecmp(conn->dom_ctx->config[DECODE_URL], "yes") == 0);
+}
+
+
+static int
+should_decode_query_string(const struct mg_connection *conn)
+{
+ if (!conn || !conn->dom_ctx) {
+ return 0;
+ }
+
+ return (mg_strcasecmp(conn->dom_ctx->config[DECODE_QUERY_STRING], "yes")
+ == 0);
+}
+
+
+static const char *
+suggest_connection_header(const struct mg_connection *conn)
+{
+ return should_keep_alive(conn) ? "keep-alive" : "close";
+}
+
+
+#include "response.inl"
+
+
+static void
+send_no_cache_header(struct mg_connection *conn)
+{
+ /* Send all current and obsolete cache opt-out directives. */
+ mg_response_header_add(conn,
+ "Cache-Control",
+ "no-cache, no-store, "
+ "must-revalidate, private, max-age=0",
+ -1);
+ mg_response_header_add(conn, "Expires", "0", -1);
+
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP1) {
+ /* Obsolete, but still send it for HTTP/1.0 */
+ mg_response_header_add(conn, "Pragma", "no-cache", -1);
+ }
+}
+
+
+static void
+send_static_cache_header(struct mg_connection *conn)
+{
+#if !defined(NO_CACHING)
+ int max_age;
+ char val[64];
+
+ const char *cache_control =
+ conn->dom_ctx->config[STATIC_FILE_CACHE_CONTROL];
+
+ /* If there is a full cache-control option configured,0 use it */
+ if (cache_control != NULL) {
+ mg_response_header_add(conn, "Cache-Control", cache_control, -1);
+ return;
+ }
+
+ /* Read the server config to check how long a file may be cached.
+ * The configuration is in seconds. */
+ max_age = atoi(conn->dom_ctx->config[STATIC_FILE_MAX_AGE]);
+ if (max_age <= 0) {
+ /* 0 means "do not cache". All values <0 are reserved
+ * and may be used differently in the future. */
+ /* If a file should not be cached, do not only send
+ * max-age=0, but also pragmas and Expires headers. */
+ send_no_cache_header(conn);
+ return;
+ }
+
+ /* Use "Cache-Control: max-age" instead of "Expires" header.
+ * Reason: see https://www.mnot.net/blog/2007/05/15/expires_max-age */
+ /* See also https://www.mnot.net/cache_docs/ */
+ /* According to RFC 2616, Section 14.21, caching times should not exceed
+ * one year. A year with 365 days corresponds to 31536000 seconds, a
+ * leap
+ * year to 31622400 seconds. For the moment, we just send whatever has
+ * been configured, still the behavior for >1 year should be considered
+ * as undefined. */
+ mg_snprintf(
+ conn, NULL, val, sizeof(val), "max-age=%lu", (unsigned long)max_age);
+ mg_response_header_add(conn, "Cache-Control", val, -1);
+
+#else /* NO_CACHING */
+
+ send_no_cache_header(conn);
+#endif /* !NO_CACHING */
+}
+
+
+static void
+send_additional_header(struct mg_connection *conn)
+{
+ const char *header = conn->dom_ctx->config[ADDITIONAL_HEADER];
+
+#if !defined(NO_SSL)
+ if (conn->dom_ctx->config[STRICT_HTTPS_MAX_AGE]) {
+ long max_age = atol(conn->dom_ctx->config[STRICT_HTTPS_MAX_AGE]);
+ if (max_age >= 0) {
+ char val[64];
+ mg_snprintf(conn,
+ NULL,
+ val,
+ sizeof(val),
+ "max-age=%lu",
+ (unsigned long)max_age);
+ mg_response_header_add(conn, "Strict-Transport-Security", val, -1);
+ }
+ }
+#endif
+
+ // Content-Security-Policy
+
+ if (header && header[0]) {
+ mg_response_header_add_lines(conn, header);
+ }
+}
+
+
+static void
+send_cors_header(struct mg_connection *conn)
+{
+ const char *origin_hdr = mg_get_header(conn, "Origin");
+ const char *cors_orig_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_ORIGIN];
+ const char *cors_cred_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_CREDENTIALS];
+ const char *cors_hdr_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_HEADERS];
+ const char *cors_exphdr_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_EXPOSE_HEADERS];
+ const char *cors_meth_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_METHODS];
+ const char *cors_repl_asterisk_with_orig_cfg =
+ conn->dom_ctx->config[REPLACE_ASTERISK_WITH_ORIGIN];
+
+ if (cors_orig_cfg && *cors_orig_cfg && origin_hdr && *origin_hdr
+ && cors_repl_asterisk_with_orig_cfg
+ && *cors_repl_asterisk_with_orig_cfg) {
+ int cors_repl_asterisk_with_orig =
+ mg_strcasecmp(cors_repl_asterisk_with_orig_cfg, "yes");
+
+ /* Cross-origin resource sharing (CORS), see
+ * http://www.html5rocks.com/en/tutorials/cors/,
+ * http://www.html5rocks.com/static/images/cors_server_flowchart.png
+ * CORS preflight is not supported for files. */
+ if (cors_repl_asterisk_with_orig == 0 && cors_orig_cfg[0] == '*') {
+ mg_response_header_add(conn,
+ "Access-Control-Allow-Origin",
+ origin_hdr,
+ -1);
+ } else {
+ mg_response_header_add(conn,
+ "Access-Control-Allow-Origin",
+ cors_orig_cfg,
+ -1);
+ }
+ }
+
+ if (cors_cred_cfg && *cors_cred_cfg && origin_hdr && *origin_hdr) {
+ /* Cross-origin resource sharing (CORS), see
+ * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
+ */
+ mg_response_header_add(conn,
+ "Access-Control-Allow-Credentials",
+ cors_cred_cfg,
+ -1);
+ }
+
+ if (cors_hdr_cfg && *cors_hdr_cfg) {
+ mg_response_header_add(conn,
+ "Access-Control-Allow-Headers",
+ cors_hdr_cfg,
+ -1);
+ }
+
+ if (cors_exphdr_cfg && *cors_exphdr_cfg) {
+ mg_response_header_add(conn,
+ "Access-Control-Expose-Headers",
+ cors_exphdr_cfg,
+ -1);
+ }
+
+ if (cors_meth_cfg && *cors_meth_cfg) {
+ mg_response_header_add(conn,
+ "Access-Control-Allow-Methods",
+ cors_meth_cfg,
+ -1);
+ }
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+static void handle_file_based_request(struct mg_connection *conn,
+ const char *path,
+ struct mg_file *filep);
+#endif /* NO_FILESYSTEMS */
+
+
+CIVETWEB_API const char *
+mg_get_response_code_text(const struct mg_connection *conn, int response_code)
+{
+ /* See IANA HTTP status code assignment:
+ * http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
+ */
+
+ switch (response_code) {
+ /* RFC2616 Section 10.1 - Informational 1xx */
+ case 100:
+ return "Continue"; /* RFC2616 Section 10.1.1 */
+ case 101:
+ return "Switching Protocols"; /* RFC2616 Section 10.1.2 */
+ case 102:
+ return "Processing"; /* RFC2518 Section 10.1 */
+
+ /* RFC2616 Section 10.2 - Successful 2xx */
+ case 200:
+ return "OK"; /* RFC2616 Section 10.2.1 */
+ case 201:
+ return "Created"; /* RFC2616 Section 10.2.2 */
+ case 202:
+ return "Accepted"; /* RFC2616 Section 10.2.3 */
+ case 203:
+ return "Non-Authoritative Information"; /* RFC2616 Section 10.2.4 */
+ case 204:
+ return "No Content"; /* RFC2616 Section 10.2.5 */
+ case 205:
+ return "Reset Content"; /* RFC2616 Section 10.2.6 */
+ case 206:
+ return "Partial Content"; /* RFC2616 Section 10.2.7 */
+ case 207:
+ return "Multi-Status"; /* RFC2518 Section 10.2, RFC4918 Section 11.1
+ */
+ case 208:
+ return "Already Reported"; /* RFC5842 Section 7.1 */
+
+ case 226:
+ return "IM used"; /* RFC3229 Section 10.4.1 */
+
+ /* RFC2616 Section 10.3 - Redirection 3xx */
+ case 300:
+ return "Multiple Choices"; /* RFC2616 Section 10.3.1 */
+ case 301:
+ return "Moved Permanently"; /* RFC2616 Section 10.3.2 */
+ case 302:
+ return "Found"; /* RFC2616 Section 10.3.3 */
+ case 303:
+ return "See Other"; /* RFC2616 Section 10.3.4 */
+ case 304:
+ return "Not Modified"; /* RFC2616 Section 10.3.5 */
+ case 305:
+ return "Use Proxy"; /* RFC2616 Section 10.3.6 */
+ case 307:
+ return "Temporary Redirect"; /* RFC2616 Section 10.3.8 */
+ case 308:
+ return "Permanent Redirect"; /* RFC7238 Section 3 */
+
+ /* RFC2616 Section 10.4 - Client Error 4xx */
+ case 400:
+ return "Bad Request"; /* RFC2616 Section 10.4.1 */
+ case 401:
+ return "Unauthorized"; /* RFC2616 Section 10.4.2 */
+ case 402:
+ return "Payment Required"; /* RFC2616 Section 10.4.3 */
+ case 403:
+ return "Forbidden"; /* RFC2616 Section 10.4.4 */
+ case 404:
+ return "Not Found"; /* RFC2616 Section 10.4.5 */
+ case 405:
+ return "Method Not Allowed"; /* RFC2616 Section 10.4.6 */
+ case 406:
+ return "Not Acceptable"; /* RFC2616 Section 10.4.7 */
+ case 407:
+ return "Proxy Authentication Required"; /* RFC2616 Section 10.4.8 */
+ case 408:
+ return "Request Time-out"; /* RFC2616 Section 10.4.9 */
+ case 409:
+ return "Conflict"; /* RFC2616 Section 10.4.10 */
+ case 410:
+ return "Gone"; /* RFC2616 Section 10.4.11 */
+ case 411:
+ return "Length Required"; /* RFC2616 Section 10.4.12 */
+ case 412:
+ return "Precondition Failed"; /* RFC2616 Section 10.4.13 */
+ case 413:
+ return "Request Entity Too Large"; /* RFC2616 Section 10.4.14 */
+ case 414:
+ return "Request-URI Too Large"; /* RFC2616 Section 10.4.15 */
+ case 415:
+ return "Unsupported Media Type"; /* RFC2616 Section 10.4.16 */
+ case 416:
+ return "Requested range not satisfiable"; /* RFC2616 Section 10.4.17
+ */
+ case 417:
+ return "Expectation Failed"; /* RFC2616 Section 10.4.18 */
+
+ case 421:
+ return "Misdirected Request"; /* RFC7540 Section 9.1.2 */
+ case 422:
+ return "Unproccessable entity"; /* RFC2518 Section 10.3, RFC4918
+ * Section 11.2 */
+ case 423:
+ return "Locked"; /* RFC2518 Section 10.4, RFC4918 Section 11.3 */
+ case 424:
+ return "Failed Dependency"; /* RFC2518 Section 10.5, RFC4918
+ * Section 11.4 */
+
+ case 426:
+ return "Upgrade Required"; /* RFC 2817 Section 4 */
+
+ case 428:
+ return "Precondition Required"; /* RFC 6585, Section 3 */
+ case 429:
+ return "Too Many Requests"; /* RFC 6585, Section 4 */
+
+ case 431:
+ return "Request Header Fields Too Large"; /* RFC 6585, Section 5 */
+
+ case 451:
+ return "Unavailable For Legal Reasons"; /* draft-tbray-http-legally-restricted-status-05,
+ * Section 3 */
+
+ /* RFC2616 Section 10.5 - Server Error 5xx */
+ case 500:
+ return "Internal Server Error"; /* RFC2616 Section 10.5.1 */
+ case 501:
+ return "Not Implemented"; /* RFC2616 Section 10.5.2 */
+ case 502:
+ return "Bad Gateway"; /* RFC2616 Section 10.5.3 */
+ case 503:
+ return "Service Unavailable"; /* RFC2616 Section 10.5.4 */
+ case 504:
+ return "Gateway Time-out"; /* RFC2616 Section 10.5.5 */
+ case 505:
+ return "HTTP Version not supported"; /* RFC2616 Section 10.5.6 */
+ case 506:
+ return "Variant Also Negotiates"; /* RFC 2295, Section 8.1 */
+ case 507:
+ return "Insufficient Storage"; /* RFC2518 Section 10.6, RFC4918
+ * Section 11.5 */
+ case 508:
+ return "Loop Detected"; /* RFC5842 Section 7.1 */
+
+ case 510:
+ return "Not Extended"; /* RFC 2774, Section 7 */
+ case 511:
+ return "Network Authentication Required"; /* RFC 6585, Section 6 */
+
+ /* Other status codes, not shown in the IANA HTTP status code
+ * assignment.
+ * E.g., "de facto" standards due to common use, ... */
+ case 418:
+ return "I am a teapot"; /* RFC2324 Section 2.3.2 */
+ case 419:
+ return "Authentication Timeout"; /* common use */
+ case 420:
+ return "Enhance Your Calm"; /* common use */
+ case 440:
+ return "Login Timeout"; /* common use */
+ case 509:
+ return "Bandwidth Limit Exceeded"; /* common use */
+
+ default:
+ /* This error code is unknown. This should not happen. */
+ if (conn) {
+ mg_cry_internal(conn,
+ "Unknown HTTP response code: %u",
+ response_code);
+ }
+
+ /* Return at least a category according to RFC 2616 Section 10. */
+ if (response_code >= 100 && response_code < 200) {
+ /* Unknown informational status code */
+ return "Information";
+ }
+ if (response_code >= 200 && response_code < 300) {
+ /* Unknown success code */
+ return "Success";
+ }
+ if (response_code >= 300 && response_code < 400) {
+ /* Unknown redirection code */
+ return "Redirection";
+ }
+ if (response_code >= 400 && response_code < 500) {
+ /* Unknown request error code */
+ return "Client Error";
+ }
+ if (response_code >= 500 && response_code < 600) {
+ /* Unknown server error code */
+ return "Server Error";
+ }
+
+ /* Response code not even within reasonable range */
+ return "";
+ }
+}
+
+
+static int
+mg_send_http_error_impl(struct mg_connection *conn,
+ int status,
+ const char *fmt,
+ va_list args)
+{
+ char errmsg_buf[MG_BUF_LEN];
+ va_list ap;
+ int has_body;
+
+#if !defined(NO_FILESYSTEMS)
+ char path_buf[UTF8_PATH_MAX];
+ int len, i, page_handler_found, scope, truncated;
+ const char *error_handler = NULL;
+ struct mg_file error_page_file = STRUCT_FILE_INITIALIZER;
+ const char *error_page_file_ext, *tstr;
+#endif /* NO_FILESYSTEMS */
+ int handled_by_callback = 0;
+
+ if ((conn == NULL) || (fmt == NULL)) {
+ return -2;
+ }
+
+ /* Set status (for log) */
+ conn->status_code = status;
+
+ /* Errors 1xx, 204 and 304 MUST NOT send a body */
+ has_body = ((status > 199) && (status != 204) && (status != 304));
+
+ /* Prepare message in buf, if required */
+ if (has_body
+ || (!conn->in_error_handler
+ && (conn->phys_ctx->callbacks.http_error != NULL))) {
+ /* Store error message in errmsg_buf */
+ va_copy(ap, args);
+ mg_vsnprintf(conn, NULL, errmsg_buf, sizeof(errmsg_buf), fmt, ap);
+ va_end(ap);
+ /* In a debug build, print all html errors */
+ DEBUG_TRACE("Error %i - [%s]", status, errmsg_buf);
+ }
+
+ /* If there is a http_error callback, call it.
+ * But don't do it recursively, if callback calls mg_send_http_error again.
+ */
+ if (!conn->in_error_handler
+ && (conn->phys_ctx->callbacks.http_error != NULL)) {
+ /* Mark in_error_handler to avoid recursion and call user callback. */
+ conn->in_error_handler = 1;
+ handled_by_callback =
+ (conn->phys_ctx->callbacks.http_error(conn, status, errmsg_buf)
+ == 0);
+ conn->in_error_handler = 0;
+ }
+
+ if (!handled_by_callback) {
+ /* Check for recursion */
+ if (conn->in_error_handler) {
+ DEBUG_TRACE(
+ "Recursion when handling error %u - fall back to default",
+ status);
+#if !defined(NO_FILESYSTEMS)
+ } else {
+ /* Send user defined error pages, if defined */
+ error_handler = conn->dom_ctx->config[ERROR_PAGES];
+ error_page_file_ext = conn->dom_ctx->config[INDEX_FILES];
+ page_handler_found = 0;
+
+ if (error_handler != NULL) {
+ for (scope = 1; (scope <= 3) && !page_handler_found; scope++) {
+ switch (scope) {
+ case 1: /* Handler for specific error, e.g. 404 error */
+ mg_snprintf(conn,
+ &truncated,
+ path_buf,
+ sizeof(path_buf) - 32,
+ "%serror%03u.",
+ error_handler,
+ status);
+ break;
+ case 2: /* Handler for error group, e.g., 5xx error
+ * handler
+ * for all server errors (500-599) */
+ mg_snprintf(conn,
+ &truncated,
+ path_buf,
+ sizeof(path_buf) - 32,
+ "%serror%01uxx.",
+ error_handler,
+ status / 100);
+ break;
+ default: /* Handler for all errors */
+ mg_snprintf(conn,
+ &truncated,
+ path_buf,
+ sizeof(path_buf) - 32,
+ "%serror.",
+ error_handler);
+ break;
+ }
+
+ /* String truncation in buf may only occur if
+ * error_handler is too long. This string is
+ * from the config, not from a client. */
+ (void)truncated;
+
+ /* The following code is redundant, but it should avoid
+ * false positives in static source code analyzers and
+ * vulnerability scanners.
+ */
+ path_buf[sizeof(path_buf) - 32] = 0;
+ len = (int)strlen(path_buf);
+ if (len > (int)sizeof(path_buf) - 32) {
+ len = (int)sizeof(path_buf) - 32;
+ }
+
+ /* Start with the file extension from the configuration. */
+ tstr = strchr(error_page_file_ext, '.');
+
+ while (tstr) {
+ for (i = 1;
+ (i < 32) && (tstr[i] != 0) && (tstr[i] != ',');
+ i++) {
+ /* buffer overrun is not possible here, since
+ * (i < 32) && (len < sizeof(path_buf) - 32)
+ * ==> (i + len) < sizeof(path_buf) */
+ path_buf[len + i - 1] = tstr[i];
+ }
+ /* buffer overrun is not possible here, since
+ * (i <= 32) && (len < sizeof(path_buf) - 32)
+ * ==> (i + len) <= sizeof(path_buf) */
+ path_buf[len + i - 1] = 0;
+
+ if (mg_stat(conn, path_buf, &error_page_file.stat)) {
+ DEBUG_TRACE("Check error page %s - found",
+ path_buf);
+ page_handler_found = 1;
+ break;
+ }
+ DEBUG_TRACE("Check error page %s - not found",
+ path_buf);
+
+ /* Continue with the next file extension from the
+ * configuration (if there is a next one). */
+ tstr = strchr(tstr + i, '.');
+ }
+ }
+ }
+
+ if (page_handler_found) {
+ conn->in_error_handler = 1;
+ handle_file_based_request(conn, path_buf, &error_page_file);
+ conn->in_error_handler = 0;
+ return 0;
+ }
+#endif /* NO_FILESYSTEMS */
+ }
+
+ /* No custom error page. Send default error page. */
+ conn->must_close = 1;
+ mg_response_header_start(conn, status);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ send_cors_header(conn);
+ if (has_body) {
+ mg_response_header_add(conn,
+ "Content-Type",
+ "text/plain; charset=utf-8",
+ -1);
+ }
+ mg_response_header_send(conn);
+
+ /* HTTP responses 1xx, 204 and 304 MUST NOT send a body */
+ if (has_body) {
+ /* For other errors, send a generic error message. */
+ const char *status_text = mg_get_response_code_text(conn, status);
+ mg_printf(conn, "Error %d: %s\n", status, status_text);
+ mg_write(conn, errmsg_buf, strlen(errmsg_buf));
+
+ } else {
+ /* No body allowed. Close the connection. */
+ DEBUG_TRACE("Error %i", status);
+ }
+ }
+ return 0;
+}
+
+
+CIVETWEB_API int
+mg_send_http_error(struct mg_connection *conn, int status, const char *fmt, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, fmt);
+ ret = mg_send_http_error_impl(conn, status, fmt, ap);
+ va_end(ap);
+
+ return ret;
+}
+
+
+CIVETWEB_API int
+mg_send_http_ok(struct mg_connection *conn,
+ const char *mime_type,
+ long long content_length)
+{
+ if ((mime_type == NULL) || (*mime_type == 0)) {
+ /* No content type defined: default to text/html */
+ mime_type = "text/html";
+ }
+
+ mg_response_header_start(conn, 200);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ send_cors_header(conn);
+ mg_response_header_add(conn, "Content-Type", mime_type, -1);
+ if (content_length < 0) {
+ /* Size not known. Use chunked encoding (HTTP/1.x) */
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP1) {
+ /* Only HTTP/1.x defines "chunked" encoding, HTTP/2 does not*/
+ mg_response_header_add(conn, "Transfer-Encoding", "chunked", -1);
+ }
+ } else {
+ char len[32];
+ int trunc = 0;
+ mg_snprintf(conn,
+ &trunc,
+ len,
+ sizeof(len),
+ "%" UINT64_FMT,
+ (uint64_t)content_length);
+ if (!trunc) {
+ /* Since 32 bytes is enough to hold any 64 bit decimal number,
+ * !trunc is always true */
+ mg_response_header_add(conn, "Content-Length", len, -1);
+ }
+ }
+ mg_response_header_send(conn);
+
+ return 0;
+}
+
+
+CIVETWEB_API int
+mg_send_http_redirect(struct mg_connection *conn,
+ const char *target_url,
+ int redirect_code)
+{
+ /* Send a 30x redirect response.
+ *
+ * Redirect types (status codes):
+ *
+ * Status | Perm/Temp | Method | Version
+ * 301 | permanent | POST->GET undefined | HTTP/1.0
+ * 302 | temporary | POST->GET undefined | HTTP/1.0
+ * 303 | temporary | always use GET | HTTP/1.1
+ * 307 | temporary | always keep method | HTTP/1.1
+ * 308 | permanent | always keep method | HTTP/1.1
+ */
+
+#if defined(MG_SEND_REDIRECT_BODY)
+ char redirect_body[MG_BUF_LEN];
+ size_t content_len = 0;
+ char content_len_text[32];
+#endif
+
+ /* In case redirect_code=0, use 307. */
+ if (redirect_code == 0) {
+ redirect_code = 307;
+ }
+
+ /* In case redirect_code is none of the above, return error. */
+ if ((redirect_code != 301) && (redirect_code != 302)
+ && (redirect_code != 303) && (redirect_code != 307)
+ && (redirect_code != 308)) {
+ /* Parameter error */
+ return -2;
+ }
+
+ /* If target_url is not defined, redirect to "/". */
+ if ((target_url == NULL) || (*target_url == 0)) {
+ target_url = "/";
+ }
+
+#if defined(MG_SEND_REDIRECT_BODY)
+ /* TODO: condition name? */
+
+ /* Prepare a response body with a hyperlink.
+ *
+ * According to RFC2616 (and RFC1945 before):
+ * Unless the request method was HEAD, the entity of the
+ * response SHOULD contain a short hypertext note with a hyperlink to
+ * the new URI(s).
+ *
+ * However, this response body is not useful in M2M communication.
+ * Probably the original reason in the RFC was, clients not supporting
+ * a 30x HTTP redirect could still show the HTML page and let the user
+ * press the link. Since current browsers support 30x HTTP, the additional
+ * HTML body does not seem to make sense anymore.
+ *
+ * The new RFC7231 (Section 6.4) does no longer recommend it ("SHOULD"),
+ * but it only notes:
+ * The server's response payload usually contains a short
+ * hypertext note with a hyperlink to the new URI(s).
+ *
+ * Deactivated by default. If you need the 30x body, set the define.
+ */
+ mg_snprintf(
+ conn,
+ NULL /* ignore truncation */,
+ redirect_body,
+ sizeof(redirect_body),
+ "%s%s ",
+ redirect_text,
+ target_url,
+ target_url);
+ content_len = strlen(reply);
+ sprintf(content_len_text, "%lu", (unsigned long)content_len);
+#endif
+
+ /* Send all required headers */
+ mg_response_header_start(conn, redirect_code);
+ mg_response_header_add(conn, "Location", target_url, -1);
+ if ((redirect_code == 301) || (redirect_code == 308)) {
+ /* Permanent redirect */
+ send_static_cache_header(conn);
+ } else {
+ /* Temporary redirect */
+ send_no_cache_header(conn);
+ }
+ send_additional_header(conn);
+ send_cors_header(conn);
+#if defined(MG_SEND_REDIRECT_BODY)
+ mg_response_header_add(conn, "Content-Type", "text/html", -1);
+ mg_response_header_add(conn, "Content-Length", content_len_text, -1);
+#else
+ mg_response_header_add(conn, "Content-Length", "0", 1);
+#endif
+ mg_response_header_send(conn);
+
+#if defined(MG_SEND_REDIRECT_BODY)
+ /* Send response body */
+ /* ... unless it is a HEAD request */
+ if (0 != strcmp(conn->request_info.request_method, "HEAD")) {
+ ret = mg_write(conn, redirect_body, content_len);
+ }
+#endif
+
+ return 1;
+}
+
+
+#if defined(_WIN32)
+/* Create substitutes for POSIX functions in Win32. */
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif
+
+
+static int
+pthread_mutex_init(pthread_mutex_t *mutex, void *unused)
+{
+ (void)unused;
+ /* Always initialize as PTHREAD_MUTEX_RECURSIVE */
+ InitializeCriticalSection(&mutex->sec);
+ return 0;
+}
+
+
+static int
+pthread_mutex_destroy(pthread_mutex_t *mutex)
+{
+ DeleteCriticalSection(&mutex->sec);
+ return 0;
+}
+
+
+static int
+pthread_mutex_lock(pthread_mutex_t *mutex)
+{
+ EnterCriticalSection(&mutex->sec);
+ return 0;
+}
+
+
+static int
+pthread_mutex_unlock(pthread_mutex_t *mutex)
+{
+ LeaveCriticalSection(&mutex->sec);
+ return 0;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_init(pthread_cond_t *cv, const void *unused)
+{
+ (void)unused;
+ (void)pthread_mutex_init(&cv->threadIdSec, &pthread_mutex_attr);
+ cv->waiting_thread = NULL;
+ return 0;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_timedwait(pthread_cond_t *cv,
+ pthread_mutex_t *mutex,
+ FUNCTION_MAY_BE_UNUSED const struct timespec *abstime)
+{
+ struct mg_workerTLS **ptls,
+ *tls = (struct mg_workerTLS *)pthread_getspecific(sTlsKey);
+ int ok;
+ uint64_t nsnow, nswaitabs;
+ int64_t nswaitrel;
+ DWORD mswaitrel;
+
+ pthread_mutex_lock(&cv->threadIdSec);
+ /* Add this thread to cv's waiting list */
+ ptls = &cv->waiting_thread;
+ for (; *ptls != NULL; ptls = &(*ptls)->next_waiting_thread)
+ ;
+ tls->next_waiting_thread = NULL;
+ *ptls = tls;
+ pthread_mutex_unlock(&cv->threadIdSec);
+
+ if (abstime) {
+ nsnow = mg_get_current_time_ns();
+ nswaitabs =
+ (((uint64_t)abstime->tv_sec) * 1000000000) + abstime->tv_nsec;
+ nswaitrel = nswaitabs - nsnow;
+ if (nswaitrel < 0) {
+ nswaitrel = 0;
+ }
+ mswaitrel = (DWORD)(nswaitrel / 1000000);
+ } else {
+ mswaitrel = (DWORD)INFINITE;
+ }
+
+ pthread_mutex_unlock(mutex);
+ ok = (WAIT_OBJECT_0
+ == WaitForSingleObject(tls->pthread_cond_helper_mutex, mswaitrel));
+ if (!ok) {
+ ok = 1;
+ pthread_mutex_lock(&cv->threadIdSec);
+ ptls = &cv->waiting_thread;
+ for (; *ptls != NULL; ptls = &(*ptls)->next_waiting_thread) {
+ if (*ptls == tls) {
+ *ptls = tls->next_waiting_thread;
+ ok = 0;
+ break;
+ }
+ }
+ pthread_mutex_unlock(&cv->threadIdSec);
+ if (ok) {
+ WaitForSingleObject(tls->pthread_cond_helper_mutex,
+ (DWORD)INFINITE);
+ }
+ }
+ /* This thread has been removed from cv's waiting list */
+ pthread_mutex_lock(mutex);
+
+ return ok ? 0 : -1;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_wait(pthread_cond_t *cv, pthread_mutex_t *mutex)
+{
+ return pthread_cond_timedwait(cv, mutex, NULL);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_signal(pthread_cond_t *cv)
+{
+ HANDLE wkup = NULL;
+ BOOL ok = FALSE;
+
+ pthread_mutex_lock(&cv->threadIdSec);
+ if (cv->waiting_thread) {
+ wkup = cv->waiting_thread->pthread_cond_helper_mutex;
+ cv->waiting_thread = cv->waiting_thread->next_waiting_thread;
+
+ ok = SetEvent(wkup);
+ DEBUG_ASSERT(ok);
+ }
+ pthread_mutex_unlock(&cv->threadIdSec);
+
+ return ok ? 0 : 1;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_broadcast(pthread_cond_t *cv)
+{
+ pthread_mutex_lock(&cv->threadIdSec);
+ while (cv->waiting_thread) {
+ pthread_cond_signal(cv);
+ }
+ pthread_mutex_unlock(&cv->threadIdSec);
+
+ return 0;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+pthread_cond_destroy(pthread_cond_t *cv)
+{
+ pthread_mutex_lock(&cv->threadIdSec);
+ DEBUG_ASSERT(cv->waiting_thread == NULL);
+ pthread_mutex_unlock(&cv->threadIdSec);
+ pthread_mutex_destroy(&cv->threadIdSec);
+
+ return 0;
+}
+
+
+#if defined(ALTERNATIVE_QUEUE)
+FUNCTION_MAY_BE_UNUSED
+static void *
+event_create(void)
+{
+ return (void *)CreateEvent(NULL, FALSE, FALSE, NULL);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+event_wait(void *eventhdl)
+{
+ int res = WaitForSingleObject((HANDLE)eventhdl, (DWORD)INFINITE);
+ return (res == WAIT_OBJECT_0);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+event_signal(void *eventhdl)
+{
+ return (int)SetEvent((HANDLE)eventhdl);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static void
+event_destroy(void *eventhdl)
+{
+ CloseHandle((HANDLE)eventhdl);
+}
+#endif
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Enable unused function warning again */
+#pragma GCC diagnostic pop
+#endif
+
+
+/* For Windows, change all slashes to backslashes in path names. */
+static void
+change_slashes_to_backslashes(char *path)
+{
+ int i;
+
+ for (i = 0; path[i] != '\0'; i++) {
+ if (path[i] == '/') {
+ path[i] = '\\';
+ }
+
+ /* remove double backslash (check i > 0 to preserve UNC paths,
+ * like \\server\file.txt) */
+ if ((i > 0) && (path[i] == '\\')) {
+ while ((path[i + 1] == '\\') || (path[i + 1] == '/')) {
+ (void)memmove(path + i + 1, path + i + 2, strlen(path + i + 1));
+ }
+ }
+ }
+}
+
+
+static int
+mg_wcscasecmp(const wchar_t *s1, const wchar_t *s2)
+{
+ int diff;
+
+ do {
+ diff = ((*s1 >= L'A') && (*s1 <= L'Z') ? (*s1 - L'A' + L'a') : *s1)
+ - ((*s2 >= L'A') && (*s2 <= L'Z') ? (*s2 - L'A' + L'a') : *s2);
+ s1++;
+ s2++;
+ } while ((diff == 0) && (s1[-1] != L'\0'));
+
+ return diff;
+}
+
+
+/* Encode 'path' which is assumed UTF-8 string, into UNICODE string.
+ * wbuf and wbuf_len is a target buffer and its length. */
+static void
+path_to_unicode(const struct mg_connection *conn,
+ const char *path,
+ wchar_t *wbuf,
+ size_t wbuf_len)
+{
+ char buf[UTF8_PATH_MAX], buf2[UTF8_PATH_MAX];
+ wchar_t wbuf2[UTF16_PATH_MAX + 1];
+ DWORD long_len, err;
+ int (*fcompare)(const wchar_t *, const wchar_t *) = mg_wcscasecmp;
+
+ mg_strlcpy(buf, path, sizeof(buf));
+ change_slashes_to_backslashes(buf);
+
+ /* Convert to Unicode and back. If doubly-converted string does not
+ * match the original, something is fishy, reject. */
+ memset(wbuf, 0, wbuf_len * sizeof(wchar_t));
+ MultiByteToWideChar(CP_UTF8, 0, buf, -1, wbuf, (int)wbuf_len);
+ WideCharToMultiByte(
+ CP_UTF8, 0, wbuf, (int)wbuf_len, buf2, sizeof(buf2), NULL, NULL);
+ if (strcmp(buf, buf2) != 0) {
+ wbuf[0] = L'\0';
+ }
+
+ /* Windows file systems are not case sensitive, but you can still use
+ * uppercase and lowercase letters (on all modern file systems).
+ * The server can check if the URI uses the same upper/lowercase
+ * letters an the file system, effectively making Windows servers
+ * case sensitive (like Linux servers are). It is still not possible
+ * to use two files with the same name in different cases on Windows
+ * (like /a and /A) - this would be possible in Linux.
+ * As a default, Windows is not case sensitive, but the case sensitive
+ * file name check can be activated by an additional configuration. */
+ if (conn) {
+ if (conn->dom_ctx->config[CASE_SENSITIVE_FILES]
+ && !mg_strcasecmp(conn->dom_ctx->config[CASE_SENSITIVE_FILES],
+ "yes")) {
+ /* Use case sensitive compare function */
+ fcompare = wcscmp;
+ }
+ }
+ (void)conn; /* conn is currently unused */
+
+ /* Only accept a full file path, not a Windows short (8.3) path. */
+ memset(wbuf2, 0, ARRAY_SIZE(wbuf2) * sizeof(wchar_t));
+ long_len = GetLongPathNameW(wbuf, wbuf2, ARRAY_SIZE(wbuf2) - 1);
+ if (long_len == 0) {
+ err = GetLastError();
+ if (err == ERROR_FILE_NOT_FOUND) {
+ /* File does not exist. This is not always a problem here. */
+ return;
+ }
+ }
+ if ((long_len >= ARRAY_SIZE(wbuf2)) || (fcompare(wbuf, wbuf2) != 0)) {
+ /* Short name is used. */
+ wbuf[0] = L'\0';
+ }
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+/* Get file information, return 1 if file exists, 0 if not */
+static int
+mg_stat(const struct mg_connection *conn,
+ const char *path,
+ struct mg_file_stat *filep)
+{
+ wchar_t wbuf[UTF16_PATH_MAX];
+ WIN32_FILE_ATTRIBUTE_DATA info;
+ time_t creation_time;
+ size_t len;
+
+ if (!filep) {
+ return 0;
+ }
+ memset(filep, 0, sizeof(*filep));
+
+ if (mg_path_suspicious(conn, path)) {
+ return 0;
+ }
+
+ path_to_unicode(conn, path, wbuf, ARRAY_SIZE(wbuf));
+ /* Windows happily opens files with some garbage at the end of file name.
+ * For example, fopen("a.cgi ", "r") on Windows successfully opens
+ * "a.cgi", despite one would expect an error back. */
+ len = strlen(path);
+ if ((len > 0) && (path[len - 1] != ' ') && (path[len - 1] != '.')
+ && (GetFileAttributesExW(wbuf, GetFileExInfoStandard, &info) != 0)) {
+ filep->size = MAKEUQUAD(info.nFileSizeLow, info.nFileSizeHigh);
+ filep->last_modified =
+ SYS2UNIX_TIME(info.ftLastWriteTime.dwLowDateTime,
+ info.ftLastWriteTime.dwHighDateTime);
+
+ /* On Windows, the file creation time can be higher than the
+ * modification time, e.g. when a file is copied.
+ * Since the Last-Modified timestamp is used for caching
+ * it should be based on the most recent timestamp. */
+ creation_time = SYS2UNIX_TIME(info.ftCreationTime.dwLowDateTime,
+ info.ftCreationTime.dwHighDateTime);
+ if (creation_time > filep->last_modified) {
+ filep->last_modified = creation_time;
+ }
+
+ filep->is_directory = info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
+ return 1;
+ }
+
+ return 0;
+}
+#endif
+
+
+static int
+mg_remove(const struct mg_connection *conn, const char *path)
+{
+ wchar_t wbuf[UTF16_PATH_MAX];
+ path_to_unicode(conn, path, wbuf, ARRAY_SIZE(wbuf));
+ return DeleteFileW(wbuf) ? 0 : -1;
+}
+
+
+static int
+mg_mkdir(const struct mg_connection *conn, const char *path, int mode)
+{
+ wchar_t wbuf[UTF16_PATH_MAX];
+ (void)mode;
+ path_to_unicode(conn, path, wbuf, ARRAY_SIZE(wbuf));
+ return CreateDirectoryW(wbuf, NULL) ? 0 : -1;
+}
+
+
+/* Create substitutes for POSIX functions in Win32. */
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif
+
+
+/* Implementation of POSIX opendir/closedir/readdir for Windows. */
+FUNCTION_MAY_BE_UNUSED
+static DIR *
+mg_opendir(const struct mg_connection *conn, const char *name)
+{
+ DIR *dir = NULL;
+ wchar_t wpath[UTF16_PATH_MAX];
+ DWORD attrs;
+
+ if (name == NULL) {
+ SetLastError(ERROR_BAD_ARGUMENTS);
+ } else if ((dir = (DIR *)mg_malloc(sizeof(*dir))) == NULL) {
+ SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ } else {
+ path_to_unicode(conn, name, wpath, ARRAY_SIZE(wpath));
+ attrs = GetFileAttributesW(wpath);
+ if ((wcslen(wpath) + 2 < ARRAY_SIZE(wpath)) && (attrs != 0xFFFFFFFF)
+ && ((attrs & FILE_ATTRIBUTE_DIRECTORY) != 0)) {
+ (void)wcscat(wpath, L"\\*");
+ dir->handle = FindFirstFileW(wpath, &dir->info);
+ dir->result.d_name[0] = '\0';
+ } else {
+ mg_free(dir);
+ dir = NULL;
+ }
+ }
+
+ return dir;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+mg_closedir(DIR *dir)
+{
+ int result = 0;
+
+ if (dir != NULL) {
+ if (dir->handle != INVALID_HANDLE_VALUE)
+ result = FindClose(dir->handle) ? 0 : -1;
+
+ mg_free(dir);
+ } else {
+ result = -1;
+ SetLastError(ERROR_BAD_ARGUMENTS);
+ }
+
+ return result;
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static struct dirent *
+mg_readdir(DIR *dir)
+{
+ struct dirent *result = 0;
+
+ if (dir) {
+ if (dir->handle != INVALID_HANDLE_VALUE) {
+ result = &dir->result;
+ (void)WideCharToMultiByte(CP_UTF8,
+ 0,
+ dir->info.cFileName,
+ -1,
+ result->d_name,
+ sizeof(result->d_name),
+ NULL,
+ NULL);
+
+ if (!FindNextFileW(dir->handle, &dir->info)) {
+ (void)FindClose(dir->handle);
+ dir->handle = INVALID_HANDLE_VALUE;
+ }
+
+ } else {
+ SetLastError(ERROR_FILE_NOT_FOUND);
+ }
+ } else {
+ SetLastError(ERROR_BAD_ARGUMENTS);
+ }
+
+ return result;
+}
+
+
+#if !defined(HAVE_POLL)
+#undef POLLIN
+#undef POLLPRI
+#undef POLLOUT
+#undef POLLERR
+#define POLLIN (1) /* Data ready - read will not block. */
+#define POLLPRI (2) /* Priority data ready. */
+#define POLLOUT (4) /* Send queue not full - write will not block. */
+#define POLLERR (8) /* Error event */
+
+FUNCTION_MAY_BE_UNUSED
+static int
+poll(struct mg_pollfd *pfd, unsigned int n, int milliseconds)
+{
+ struct timeval tv;
+ fd_set rset;
+ fd_set wset;
+ fd_set eset;
+ unsigned int i;
+ int result;
+ SOCKET maxfd = 0;
+
+ memset(&tv, 0, sizeof(tv));
+ tv.tv_sec = milliseconds / 1000;
+ tv.tv_usec = (milliseconds % 1000) * 1000;
+ FD_ZERO(&rset);
+ FD_ZERO(&wset);
+ FD_ZERO(&eset);
+
+ for (i = 0; i < n; i++) {
+ if (pfd[i].events & (POLLIN | POLLOUT | POLLERR)) {
+ if (pfd[i].events & POLLIN) {
+ FD_SET(pfd[i].fd, &rset);
+ }
+ if (pfd[i].events & POLLOUT) {
+ FD_SET(pfd[i].fd, &wset);
+ }
+ /* Check for errors for any FD in the set */
+ FD_SET(pfd[i].fd, &eset);
+ }
+ pfd[i].revents = 0;
+
+ if (pfd[i].fd > maxfd) {
+ maxfd = pfd[i].fd;
+ }
+ }
+
+ if ((result = select((int)maxfd + 1, &rset, &wset, &eset, &tv)) > 0) {
+ for (i = 0; i < n; i++) {
+ if (FD_ISSET(pfd[i].fd, &rset)) {
+ pfd[i].revents |= POLLIN;
+ }
+ if (FD_ISSET(pfd[i].fd, &wset)) {
+ pfd[i].revents |= POLLOUT;
+ }
+ if (FD_ISSET(pfd[i].fd, &eset)) {
+ pfd[i].revents |= POLLERR;
+ }
+ }
+ }
+
+ /* We should subtract the time used in select from remaining
+ * "milliseconds", in particular if called from mg_poll with a
+ * timeout quantum.
+ * Unfortunately, the remaining time is not stored in "tv" in all
+ * implementations, so the result in "tv" must be considered undefined.
+ * See http://man7.org/linux/man-pages/man2/select.2.html */
+
+ return result;
+}
+#endif /* HAVE_POLL */
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Enable unused function warning again */
+#pragma GCC diagnostic pop
+#endif
+
+
+static void
+set_close_on_exec(SOCKET sock,
+ const struct mg_connection *conn /* may be null */,
+ struct mg_context *ctx /* may be null */)
+{
+ (void)conn; /* Unused. */
+ (void)ctx;
+
+ (void)SetHandleInformation((HANDLE)(intptr_t)sock, HANDLE_FLAG_INHERIT, 0);
+}
+
+
+CIVETWEB_API int
+mg_start_thread(mg_thread_func_t f, void *p)
+{
+#if defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1)
+ /* Compile-time option to control stack size, e.g.
+ * -DUSE_STACK_SIZE=16384
+ */
+ return ((_beginthread((void(__cdecl *)(void *))f, USE_STACK_SIZE, p)
+ == ((uintptr_t)(-1L)))
+ ? -1
+ : 0);
+#else
+ return (
+ (_beginthread((void(__cdecl *)(void *))f, 0, p) == ((uintptr_t)(-1L)))
+ ? -1
+ : 0);
+#endif /* defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1) */
+}
+
+
+/* Start a thread storing the thread context. */
+static int
+mg_start_thread_with_id(unsigned(__stdcall *f)(void *),
+ void *p,
+ pthread_t *threadidptr)
+{
+ uintptr_t uip;
+ HANDLE threadhandle;
+ int result = -1;
+
+ uip = _beginthreadex(NULL, 0, f, p, 0, NULL);
+ threadhandle = (HANDLE)uip;
+ if ((uip != 0) && (threadidptr != NULL)) {
+ *threadidptr = threadhandle;
+ result = 0;
+ }
+
+ return result;
+}
+
+
+/* Wait for a thread to finish. */
+static int
+mg_join_thread(pthread_t threadid)
+{
+ int result;
+ DWORD dwevent;
+
+ result = -1;
+ dwevent = WaitForSingleObject(threadid, (DWORD)INFINITE);
+ if (dwevent == WAIT_FAILED) {
+ DEBUG_TRACE("WaitForSingleObject() failed, error %d", ERRNO);
+ } else {
+ if (dwevent == WAIT_OBJECT_0) {
+ CloseHandle(threadid);
+ result = 0;
+ }
+ }
+
+ return result;
+}
+
+#if !defined(NO_SSL_DL) && !defined(NO_SSL)
+/* If SSL is loaded dynamically, dlopen/dlclose is required. */
+/* Create substitutes for POSIX functions in Win32. */
+
+#if defined(GCC_DIAGNOSTIC)
+/* Show no warning in case system functions are not used. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+#endif
+
+
+FUNCTION_MAY_BE_UNUSED
+static HANDLE
+dlopen(const char *dll_name, int flags)
+{
+ wchar_t wbuf[UTF16_PATH_MAX];
+ (void)flags;
+ path_to_unicode(NULL, dll_name, wbuf, ARRAY_SIZE(wbuf));
+ return LoadLibraryW(wbuf);
+}
+
+
+FUNCTION_MAY_BE_UNUSED
+static int
+dlclose(void *handle)
+{
+ int result;
+
+ if (FreeLibrary((HMODULE)handle) != 0) {
+ result = 0;
+ } else {
+ result = -1;
+ }
+
+ return result;
+}
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Enable unused function warning again */
+#pragma GCC diagnostic pop
+#endif
+
+#endif
+
+
+#if !defined(NO_CGI)
+#define SIGKILL (0)
+
+
+static int
+kill(pid_t pid, int sig_num)
+{
+ (void)TerminateProcess((HANDLE)pid, (UINT)sig_num);
+ (void)CloseHandle((HANDLE)pid);
+ return 0;
+}
+
+
+#if !defined(WNOHANG)
+#define WNOHANG (1)
+#endif
+
+
+static pid_t
+waitpid(pid_t pid, int *status, int flags)
+{
+ DWORD timeout = INFINITE;
+ DWORD waitres;
+
+ (void)status; /* Currently not used by any client here */
+
+ if ((flags | WNOHANG) == WNOHANG) {
+ timeout = 0;
+ }
+
+ waitres = WaitForSingleObject((HANDLE)pid, timeout);
+ if (waitres == WAIT_OBJECT_0) {
+ return pid;
+ }
+ if (waitres == WAIT_TIMEOUT) {
+ return 0;
+ }
+ return (pid_t)-1;
+}
+
+
+static void
+trim_trailing_whitespaces(char *s)
+{
+ char *e = s + strlen(s);
+ while ((e > s) && isspace((unsigned char)e[-1])) {
+ *(--e) = '\0';
+ }
+}
+
+
+static pid_t
+spawn_process(struct mg_connection *conn,
+ const char *prog,
+ char *envblk,
+ char *envp[],
+ int fdin[2],
+ int fdout[2],
+ int fderr[2],
+ const char *dir,
+ int cgi_config_idx)
+{
+ HANDLE me;
+ char *interp;
+ char *interp_arg = 0;
+ char full_dir[UTF8_PATH_MAX], cmdline[UTF8_PATH_MAX], buf[UTF8_PATH_MAX];
+ int truncated;
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ STARTUPINFOA si;
+ PROCESS_INFORMATION pi = {0};
+
+ (void)envp;
+
+ memset(&si, 0, sizeof(si));
+ si.cb = sizeof(si);
+
+ si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
+ si.wShowWindow = SW_HIDE;
+
+ me = GetCurrentProcess();
+ DuplicateHandle(me,
+ (HANDLE)_get_osfhandle(fdin[0]),
+ me,
+ &si.hStdInput,
+ 0,
+ TRUE,
+ DUPLICATE_SAME_ACCESS);
+ DuplicateHandle(me,
+ (HANDLE)_get_osfhandle(fdout[1]),
+ me,
+ &si.hStdOutput,
+ 0,
+ TRUE,
+ DUPLICATE_SAME_ACCESS);
+ DuplicateHandle(me,
+ (HANDLE)_get_osfhandle(fderr[1]),
+ me,
+ &si.hStdError,
+ 0,
+ TRUE,
+ DUPLICATE_SAME_ACCESS);
+
+ /* Mark handles that should not be inherited. See
+ * https://msdn.microsoft.com/en-us/library/windows/desktop/ms682499%28v=vs.85%29.aspx
+ */
+ SetHandleInformation((HANDLE)_get_osfhandle(fdin[1]),
+ HANDLE_FLAG_INHERIT,
+ 0);
+ SetHandleInformation((HANDLE)_get_osfhandle(fdout[0]),
+ HANDLE_FLAG_INHERIT,
+ 0);
+ SetHandleInformation((HANDLE)_get_osfhandle(fderr[0]),
+ HANDLE_FLAG_INHERIT,
+ 0);
+
+ /* First check, if there is a CGI interpreter configured for all CGI
+ * scripts. */
+ interp = conn->dom_ctx->config[CGI_INTERPRETER + cgi_config_idx];
+ if (interp != NULL) {
+ /* If there is a configured interpreter, check for additional arguments
+ */
+ interp_arg =
+ conn->dom_ctx->config[CGI_INTERPRETER_ARGS + cgi_config_idx];
+ } else {
+ /* Otherwise, the interpreter must be stated in the first line of the
+ * CGI script file, after a #! (shebang) mark. */
+ buf[0] = buf[1] = '\0';
+
+ /* Get the full script path */
+ mg_snprintf(
+ conn, &truncated, cmdline, sizeof(cmdline), "%s/%s", dir, prog);
+
+ if (truncated) {
+ pi.hProcess = (pid_t)-1;
+ goto spawn_cleanup;
+ }
+
+ /* Open the script file, to read the first line */
+ if (mg_fopen(conn, cmdline, MG_FOPEN_MODE_READ, &file)) {
+
+ /* Read the first line of the script into the buffer */
+ mg_fgets(buf, sizeof(buf), &file);
+ (void)mg_fclose(&file.access); /* ignore error on read only file */
+ buf[sizeof(buf) - 1] = '\0';
+ }
+
+ if ((buf[0] == '#') && (buf[1] == '!')) {
+ trim_trailing_whitespaces(buf + 2);
+ } else {
+ buf[2] = '\0';
+ }
+ interp = buf + 2;
+ }
+
+ GetFullPathNameA(dir, sizeof(full_dir), full_dir, NULL);
+
+ if (interp[0] != '\0') {
+ /* This is an interpreted script file. We must call the interpreter. */
+ if ((interp_arg != 0) && (interp_arg[0] != 0)) {
+ mg_snprintf(conn,
+ &truncated,
+ cmdline,
+ sizeof(cmdline),
+ "\"%s\" %s \"%s\\%s\"",
+ interp,
+ interp_arg,
+ full_dir,
+ prog);
+ } else {
+ mg_snprintf(conn,
+ &truncated,
+ cmdline,
+ sizeof(cmdline),
+ "\"%s\" \"%s\\%s\"",
+ interp,
+ full_dir,
+ prog);
+ }
+ } else {
+ /* This is (probably) a compiled program. We call it directly. */
+ mg_snprintf(conn,
+ &truncated,
+ cmdline,
+ sizeof(cmdline),
+ "\"%s\\%s\"",
+ full_dir,
+ prog);
+ }
+
+ if (truncated) {
+ pi.hProcess = (pid_t)-1;
+ goto spawn_cleanup;
+ }
+
+ DEBUG_TRACE("Running [%s]", cmdline);
+ if (CreateProcessA(NULL,
+ cmdline,
+ NULL,
+ NULL,
+ TRUE,
+ CREATE_NEW_PROCESS_GROUP,
+ envblk,
+ NULL,
+ &si,
+ &pi)
+ == 0) {
+ mg_cry_internal(
+ conn, "%s: CreateProcess(%s): %ld", __func__, cmdline, (long)ERRNO);
+ pi.hProcess = (pid_t)-1;
+ /* goto spawn_cleanup; */
+ }
+
+spawn_cleanup:
+ (void)CloseHandle(si.hStdOutput);
+ (void)CloseHandle(si.hStdError);
+ (void)CloseHandle(si.hStdInput);
+ if (pi.hThread != NULL) {
+ (void)CloseHandle(pi.hThread);
+ }
+
+ return (pid_t)pi.hProcess;
+}
+#endif /* !NO_CGI */
+
+
+static int
+set_blocking_mode(SOCKET sock)
+{
+ unsigned long non_blocking = 0;
+ return ioctlsocket(sock, (long)FIONBIO, &non_blocking);
+}
+
+
+static int
+set_non_blocking_mode(SOCKET sock)
+{
+ unsigned long non_blocking = 1;
+ return ioctlsocket(sock, (long)FIONBIO, &non_blocking);
+}
+
+
+#else
+
+
+#if !defined(NO_FILESYSTEMS)
+static int
+mg_stat(const struct mg_connection *conn,
+ const char *path,
+ struct mg_file_stat *filep)
+{
+ struct stat st;
+ if (!filep) {
+ return 0;
+ }
+ memset(filep, 0, sizeof(*filep));
+
+ if (mg_path_suspicious(conn, path)) {
+ return 0;
+ }
+
+ if (0 == stat(path, &st)) {
+ filep->size = (uint64_t)(st.st_size);
+ filep->last_modified = st.st_mtime;
+ filep->is_directory = S_ISDIR(st.st_mode);
+ return 1;
+ }
+
+ return 0;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+static void
+set_close_on_exec(int fd,
+ const struct mg_connection *conn /* may be null */,
+ struct mg_context *ctx /* may be null */)
+{
+#if defined(__ZEPHYR__)
+ (void)fd;
+ (void)conn;
+ (void)ctx;
+#else
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ if (conn || ctx) {
+ struct mg_connection fc;
+ mg_cry_internal((conn ? conn : fake_connection(&fc, ctx)),
+ "%s: fcntl(F_SETFD FD_CLOEXEC) failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+ }
+#endif
+}
+
+
+CIVETWEB_API int
+mg_start_thread(mg_thread_func_t func, void *param)
+{
+ pthread_t thread_id;
+ pthread_attr_t attr;
+ int result;
+
+ (void)pthread_attr_init(&attr);
+ (void)pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+#if defined(__ZEPHYR__)
+ pthread_attr_setstack(&attr, &civetweb_main_stack, ZEPHYR_STACK_SIZE);
+#elif defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1)
+ /* Compile-time option to control stack size,
+ * e.g. -DUSE_STACK_SIZE=16384 */
+ (void)pthread_attr_setstacksize(&attr, USE_STACK_SIZE);
+#endif /* defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1) */
+
+ result = pthread_create(&thread_id, &attr, func, param);
+ pthread_attr_destroy(&attr);
+
+ return result;
+}
+
+
+/* Start a thread storing the thread context. */
+static int
+mg_start_thread_with_id(mg_thread_func_t func,
+ void *param,
+ pthread_t *threadidptr)
+{
+ pthread_t thread_id;
+ pthread_attr_t attr;
+ int result;
+
+ (void)pthread_attr_init(&attr);
+
+#if defined(__ZEPHYR__)
+ pthread_attr_setstack(&attr,
+ &civetweb_worker_stacks[zephyr_worker_stack_index++],
+ ZEPHYR_STACK_SIZE);
+#elif defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1)
+ /* Compile-time option to control stack size,
+ * e.g. -DUSE_STACK_SIZE=16384 */
+ (void)pthread_attr_setstacksize(&attr, USE_STACK_SIZE);
+#endif /* defined(USE_STACK_SIZE) && USE_STACK_SIZE > 1 */
+
+ result = pthread_create(&thread_id, &attr, func, param);
+ pthread_attr_destroy(&attr);
+ if ((result == 0) && (threadidptr != NULL)) {
+ *threadidptr = thread_id;
+ }
+ return result;
+}
+
+
+/* Wait for a thread to finish. */
+static int
+mg_join_thread(pthread_t threadid)
+{
+ int result;
+
+ result = pthread_join(threadid, NULL);
+ return result;
+}
+
+
+#if !defined(NO_CGI)
+static pid_t
+spawn_process(struct mg_connection *conn,
+ const char *prog,
+ char *envblk,
+ char *envp[],
+ int fdin[2],
+ int fdout[2],
+ int fderr[2],
+ const char *dir,
+ int cgi_config_idx)
+{
+ pid_t pid;
+ const char *interp;
+
+ (void)envblk;
+
+ if ((pid = fork()) == -1) {
+ /* Parent */
+ mg_cry_internal(conn, "%s: fork(): %s", __func__, strerror(ERRNO));
+ } else if (pid != 0) {
+ /* Make sure children close parent-side descriptors.
+ * The caller will close the child-side immediately. */
+ set_close_on_exec(fdin[1], conn, NULL); /* stdin write */
+ set_close_on_exec(fdout[0], conn, NULL); /* stdout read */
+ set_close_on_exec(fderr[0], conn, NULL); /* stderr read */
+ } else {
+ /* Child */
+ if (chdir(dir) != 0) {
+ mg_cry_internal(
+ conn, "%s: chdir(%s): %s", __func__, dir, strerror(ERRNO));
+ } else if (dup2(fdin[0], 0) == -1) {
+ mg_cry_internal(conn,
+ "%s: dup2(%d, 0): %s",
+ __func__,
+ fdin[0],
+ strerror(ERRNO));
+ } else if (dup2(fdout[1], 1) == -1) {
+ mg_cry_internal(conn,
+ "%s: dup2(%d, 1): %s",
+ __func__,
+ fdout[1],
+ strerror(ERRNO));
+ } else if (dup2(fderr[1], 2) == -1) {
+ mg_cry_internal(conn,
+ "%s: dup2(%d, 2): %s",
+ __func__,
+ fderr[1],
+ strerror(ERRNO));
+ } else {
+ struct sigaction sa;
+
+ /* Keep stderr and stdout in two different pipes.
+ * Stdout will be sent back to the client,
+ * stderr should go into a server error log. */
+ (void)close(fdin[0]);
+ (void)close(fdout[1]);
+ (void)close(fderr[1]);
+
+ /* Close write end fdin and read end fdout and fderr */
+ (void)close(fdin[1]);
+ (void)close(fdout[0]);
+ (void)close(fderr[0]);
+
+ /* After exec, all signal handlers are restored to their default
+ * values, with one exception of SIGCHLD. According to
+ * POSIX.1-2001 and Linux's implementation, SIGCHLD's handler
+ * will leave unchanged after exec if it was set to be ignored.
+ * Restore it to default action. */
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &sa, NULL);
+
+ interp = conn->dom_ctx->config[CGI_INTERPRETER + cgi_config_idx];
+ if (interp == NULL) {
+ /* no interpreter configured, call the program directly */
+ (void)execle(prog, prog, NULL, envp);
+ mg_cry_internal(conn,
+ "%s: execle(%s): %s",
+ __func__,
+ prog,
+ strerror(ERRNO));
+ } else {
+ /* call the configured interpreter */
+ const char *interp_args =
+ conn->dom_ctx
+ ->config[CGI_INTERPRETER_ARGS + cgi_config_idx];
+
+ if ((interp_args != NULL) && (interp_args[0] != 0)) {
+ (void)execle(interp, interp, interp_args, prog, NULL, envp);
+ } else {
+ (void)execle(interp, interp, prog, NULL, envp);
+ }
+ mg_cry_internal(conn,
+ "%s: execle(%s %s): %s",
+ __func__,
+ interp,
+ prog,
+ strerror(ERRNO));
+ }
+ }
+ exit(EXIT_FAILURE);
+ }
+
+ return pid;
+}
+#endif /* !NO_CGI */
+
+
+static int
+set_non_blocking_mode(SOCKET sock)
+{
+ int flags = fcntl(sock, F_GETFL, 0);
+ if (flags < 0) {
+ return -1;
+ }
+
+ if (fcntl(sock, F_SETFL, (flags | O_NONBLOCK)) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int
+set_blocking_mode(SOCKET sock)
+{
+ int flags = fcntl(sock, F_GETFL, 0);
+ if (flags < 0) {
+ return -1;
+ }
+
+ if (fcntl(sock, F_SETFL, flags & (~(int)(O_NONBLOCK))) < 0) {
+ return -1;
+ }
+ return 0;
+}
+#endif /* _WIN32 / else */
+
+/* End of initial operating system specific define block. */
+
+
+/* Get a random number (independent of C rand function) */
+static uint64_t
+get_random(void)
+{
+ static uint64_t lfsr = 0; /* Linear feedback shift register */
+ static uint64_t lcg = 0; /* Linear congruential generator */
+ uint64_t now = mg_get_current_time_ns();
+
+ if (lfsr == 0) {
+ /* lfsr will be only 0 if has not been initialized,
+ * so this code is called only once. */
+ lfsr = mg_get_current_time_ns();
+ lcg = mg_get_current_time_ns();
+ } else {
+ /* Get the next step of both random number generators. */
+ lfsr = (lfsr >> 1)
+ | ((((lfsr >> 0) ^ (lfsr >> 1) ^ (lfsr >> 3) ^ (lfsr >> 4)) & 1)
+ << 63);
+ lcg = lcg * 6364136223846793005LL + 1442695040888963407LL;
+ }
+
+ /* Combining two pseudo-random number generators and a high resolution
+ * part
+ * of the current server time will make it hard (impossible?) to guess
+ * the
+ * next number. */
+ return (lfsr ^ lcg ^ now);
+}
+
+
+static int
+mg_poll(struct mg_pollfd *pfd,
+ unsigned int n,
+ int milliseconds,
+ const stop_flag_t *stop_flag)
+{
+ /* Call poll, but only for a maximum time of a few seconds.
+ * This will allow to stop the server after some seconds, instead
+ * of having to wait for a long socket timeout. */
+ int ms_now = SOCKET_TIMEOUT_QUANTUM; /* Sleep quantum in ms */
+
+ int check_pollerr = 0;
+ if ((n == 1) && ((pfd[0].events & POLLERR) == 0)) {
+ /* If we wait for only one file descriptor, wait on error as well */
+ pfd[0].events |= POLLERR;
+ check_pollerr = 1;
+ }
+
+ do {
+ int result;
+
+ if (!STOP_FLAG_IS_ZERO(&*stop_flag)) {
+ /* Shut down signal */
+ return -2;
+ }
+
+ if ((milliseconds >= 0) && (milliseconds < ms_now)) {
+ ms_now = milliseconds;
+ }
+
+ result = poll(pfd, n, ms_now);
+ if (result != 0) {
+ int err = ERRNO;
+ if ((result == 1) || (!ERROR_TRY_AGAIN(err))) {
+ /* Poll returned either success (1) or error (-1).
+ * Forward both to the caller. */
+ if ((check_pollerr)
+ && ((pfd[0].revents & (POLLIN | POLLOUT | POLLERR))
+ == POLLERR)) {
+ /* One and only file descriptor returned error */
+ return -1;
+ }
+ return result;
+ }
+ }
+
+ /* Poll returned timeout (0). */
+ if (milliseconds > 0) {
+ milliseconds -= ms_now;
+ }
+
+ } while (milliseconds > 0);
+
+ /* timeout: return 0 */
+ return 0;
+}
+
+
+/* Write data to the IO channel - opened file descriptor, socket or SSL
+ * descriptor.
+ * Return value:
+ * >=0 .. number of bytes successfully written
+ * -1 .. timeout
+ * -2 .. error
+ */
+static int
+push_inner(struct mg_context *ctx,
+ FILE *fp,
+ SOCKET sock,
+ SSL *ssl,
+ const char *buf,
+ int len,
+ double timeout)
+{
+ uint64_t start = 0, now = 0, timeout_ns = 0;
+ int n, err;
+ unsigned ms_wait = SOCKET_TIMEOUT_QUANTUM; /* Sleep quantum in ms */
+
+#if defined(_WIN32)
+ typedef int len_t;
+#else
+ typedef size_t len_t;
+#endif
+
+ if (timeout > 0) {
+ now = mg_get_current_time_ns();
+ start = now;
+ timeout_ns = (uint64_t)(timeout * 1.0E9);
+ }
+
+ if (ctx == NULL) {
+ return -2;
+ }
+
+#if defined(NO_SSL) && !defined(USE_MBEDTLS) && !defined(USE_GNUTLS)
+ if (ssl) {
+ return -2;
+ }
+#endif
+
+ /* Try to read until it succeeds, fails, times out, or the server
+ * shuts down. */
+ for (;;) {
+
+#if defined(USE_MBEDTLS)
+ if (ssl != NULL) {
+ n = mbed_ssl_write(ssl, (const unsigned char *)buf, len);
+ if (n <= 0) {
+ if ((n == MBEDTLS_ERR_SSL_WANT_READ)
+ || (n == MBEDTLS_ERR_SSL_WANT_WRITE)
+ || n == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS) {
+ n = 0;
+ } else {
+ fprintf(stderr, "SSL write failed, error %d\n", n);
+ return -2;
+ }
+ } else {
+ err = 0;
+ }
+ } else
+#elif defined(USE_GNUTLS)
+ if (ssl != NULL) {
+ n = gtls_ssl_write(ssl, (const unsigned char *)buf, (size_t)len);
+ if (n < 0) {
+ fprintf(stderr,
+ "SSL write failed (%d): %s",
+ n,
+ gnutls_strerror(n));
+ return -2;
+ } else {
+ err = 0;
+ }
+ } else
+#elif !defined(NO_SSL)
+ if (ssl != NULL) {
+ ERR_clear_error();
+ n = SSL_write(ssl, buf, len);
+ if (n <= 0) {
+ err = SSL_get_error(ssl, n);
+ if ((err == SSL_ERROR_SYSCALL) && (n == -1)) {
+ err = ERRNO;
+ } else if ((err == SSL_ERROR_WANT_READ)
+ || (err == SSL_ERROR_WANT_WRITE)) {
+ n = 0;
+ } else {
+ DEBUG_TRACE("SSL_write() failed, error %d", err);
+ ERR_clear_error();
+ return -2;
+ }
+ ERR_clear_error();
+ } else {
+ err = 0;
+ }
+ } else
+#endif
+
+ if (fp != NULL) {
+ n = (int)fwrite(buf, 1, (size_t)len, fp);
+ if (ferror(fp)) {
+ n = -1;
+ err = ERRNO;
+ } else {
+ err = 0;
+ }
+ } else {
+ n = (int)send(sock, buf, (len_t)len, MSG_NOSIGNAL);
+ err = (n < 0) ? ERRNO : 0;
+ if (ERROR_TRY_AGAIN(err)) {
+ err = 0;
+ n = 0;
+ }
+ if (n < 0) {
+ /* shutdown of the socket at client side */
+ return -2;
+ }
+ }
+
+ if (!STOP_FLAG_IS_ZERO(&ctx->stop_flag)) {
+ return -2;
+ }
+
+ if ((n > 0) || ((n == 0) && (len == 0))) {
+ /* some data has been read, or no data was requested */
+ return n;
+ }
+ if (n < 0) {
+ /* socket error - check errno */
+ DEBUG_TRACE("send() failed, error %d", err);
+
+ /* TODO (mid): error handling depending on the error code.
+ * These codes are different between Windows and Linux.
+ * Currently there is no problem with failing send calls,
+ * if there is a reproducible situation, it should be
+ * investigated in detail.
+ */
+ return -2;
+ }
+
+ /* Only in case n=0 (timeout), repeat calling the write function */
+
+ /* If send failed, wait before retry */
+ if (fp != NULL) {
+ /* For files, just wait a fixed time.
+ * Maybe it helps, maybe not. */
+ mg_sleep(5);
+ } else {
+ /* For sockets, wait for the socket using poll */
+ struct mg_pollfd pfd[2];
+ int pollres;
+ unsigned int num_sock = 1;
+
+ pfd[0].fd = sock;
+ pfd[0].events = POLLOUT;
+
+ if (ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd = ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ pollres = mg_poll(pfd, num_sock, (int)(ms_wait), &(ctx->stop_flag));
+ if (!STOP_FLAG_IS_ZERO(&ctx->stop_flag)) {
+ return -2;
+ }
+ if (pollres > 0) {
+ continue;
+ }
+ }
+
+ if (timeout > 0) {
+ now = mg_get_current_time_ns();
+ if ((now - start) > timeout_ns) {
+ /* Timeout */
+ break;
+ }
+ }
+ }
+
+ (void)err; /* Avoid unused warning if NO_SSL is set and DEBUG_TRACE is not
+ used */
+
+ return -1;
+}
+
+
+static int
+push_all(struct mg_context *ctx,
+ FILE *fp,
+ SOCKET sock,
+ SSL *ssl,
+ const char *buf,
+ int len)
+{
+ double timeout = -1.0;
+ int n, nwritten = 0;
+
+ if (ctx == NULL) {
+ return -1;
+ }
+
+ if (ctx->dd.config[REQUEST_TIMEOUT]) {
+ timeout = atoi(ctx->dd.config[REQUEST_TIMEOUT]) / 1000.0;
+ }
+ if (timeout <= 0.0) {
+ timeout = strtod(config_options[REQUEST_TIMEOUT].default_value, NULL)
+ / 1000.0;
+ }
+
+ while ((len > 0) && STOP_FLAG_IS_ZERO(&ctx->stop_flag)) {
+ n = push_inner(ctx, fp, sock, ssl, buf + nwritten, len, timeout);
+ if (n < 0) {
+ if (nwritten == 0) {
+ nwritten = -1; /* Propagate the error */
+ }
+ break;
+ } else if (n == 0) {
+ break; /* No more data to write */
+ } else {
+ nwritten += n;
+ len -= n;
+ }
+ }
+
+ return nwritten;
+}
+
+
+/* Read from IO channel - opened file descriptor, socket, or SSL descriptor.
+ * Return value:
+ * >=0 .. number of bytes successfully read
+ * -1 .. timeout
+ * -2 .. error
+ */
+static int
+pull_inner(FILE *fp,
+ struct mg_connection *conn,
+ char *buf,
+ int len,
+ double timeout)
+{
+ int nread, err = 0;
+
+#if defined(_WIN32)
+ typedef int len_t;
+#else
+ typedef size_t len_t;
+#endif
+
+ /* We need an additional wait loop around this, because in some cases
+ * with TLSwe may get data from the socket but not from SSL_read.
+ * In this case we need to repeat at least once.
+ */
+
+ if (fp != NULL) {
+ /* Use read() instead of fread(), because if we're reading from the
+ * CGI pipe, fread() may block until IO buffer is filled up. We
+ * cannot afford to block and must pass all read bytes immediately
+ * to the client. */
+ nread = (int)read(fileno(fp), buf, (size_t)len);
+
+ err = (nread < 0) ? ERRNO : 0;
+ if ((nread == 0) && (len > 0)) {
+ /* Should get data, but got EOL */
+ return -2;
+ }
+
+#if defined(USE_MBEDTLS)
+ } else if (conn->ssl != NULL) {
+ struct mg_pollfd pfd[2];
+ int to_read;
+ int pollres;
+ unsigned int num_sock = 1;
+
+ to_read = mbedtls_ssl_get_bytes_avail(conn->ssl);
+
+ if (to_read > 0) {
+ /* We already know there is no more data buffered in conn->buf
+ * but there is more available in the SSL layer. So don't poll
+ * conn->client.sock yet. */
+
+ pollres = 1;
+ if (to_read > len)
+ to_read = len;
+ } else {
+ pfd[0].fd = conn->client.sock;
+ pfd[0].events = POLLIN;
+
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd =
+ conn->phys_ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ to_read = len;
+
+ pollres = mg_poll(pfd,
+ num_sock,
+ (int)(timeout * 1000.0),
+ &(conn->phys_ctx->stop_flag));
+
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ return -2;
+ }
+ }
+
+ if (pollres > 0) {
+ nread = mbed_ssl_read(conn->ssl, (unsigned char *)buf, to_read);
+ if (nread <= 0) {
+ if ((nread == MBEDTLS_ERR_SSL_WANT_READ)
+ || (nread == MBEDTLS_ERR_SSL_WANT_WRITE)
+ || nread == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS) {
+ nread = 0;
+ } else {
+ fprintf(stderr, "SSL read failed, error %d\n", nread);
+ return -2;
+ }
+ } else {
+ err = 0;
+ }
+
+ } else if (pollres < 0) {
+ /* Error */
+ return -2;
+ } else {
+ /* pollres = 0 means timeout */
+ nread = 0;
+ }
+
+#elif defined(USE_GNUTLS)
+ } else if (conn->ssl != NULL) {
+ struct mg_pollfd pfd[2];
+ size_t to_read;
+ int pollres;
+ unsigned int num_sock = 1;
+
+ to_read = gnutls_record_check_pending(conn->ssl->sess);
+
+ if (to_read > 0) {
+ /* We already know there is no more data buffered in conn->buf
+ * but there is more available in the SSL layer. So don't poll
+ * conn->client.sock yet. */
+
+ pollres = 1;
+ if (to_read > (size_t)len)
+ to_read = (size_t)len;
+ } else {
+ pfd[0].fd = conn->client.sock;
+ pfd[0].events = POLLIN;
+
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd =
+ conn->phys_ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ to_read = (size_t)len;
+
+ pollres = mg_poll(pfd,
+ num_sock,
+ (int)(timeout * 1000.0),
+ &(conn->phys_ctx->stop_flag));
+
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ return -2;
+ }
+ }
+
+ if (pollres > 0) {
+ nread = gtls_ssl_read(conn->ssl, (unsigned char *)buf, to_read);
+ if (nread < 0) {
+ fprintf(stderr,
+ "SSL read failed (%d): %s",
+ nread,
+ gnutls_strerror(nread));
+ return -2;
+ } else {
+ err = 0;
+ }
+ } else if (pollres < 0) {
+ /* Error */
+ return -2;
+ } else {
+ /* pollres = 0 means timeout */
+ nread = 0;
+ }
+
+#elif !defined(NO_SSL)
+ } else if (conn->ssl != NULL) {
+ int ssl_pending;
+ struct mg_pollfd pfd[2];
+ int pollres;
+ unsigned int num_sock = 1;
+
+ if ((ssl_pending = SSL_pending(conn->ssl)) > 0) {
+ /* We already know there is no more data buffered in conn->buf
+ * but there is more available in the SSL layer. So don't poll
+ * conn->client.sock yet. */
+ if (ssl_pending > len) {
+ ssl_pending = len;
+ }
+ pollres = 1;
+ } else {
+ pfd[0].fd = conn->client.sock;
+ pfd[0].events = POLLIN;
+
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd =
+ conn->phys_ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ pollres = mg_poll(pfd,
+ num_sock,
+ (int)(timeout * 1000.0),
+ &(conn->phys_ctx->stop_flag));
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ return -2;
+ }
+ }
+ if (pollres > 0) {
+ ERR_clear_error();
+ nread =
+ SSL_read(conn->ssl, buf, (ssl_pending > 0) ? ssl_pending : len);
+ if (nread <= 0) {
+ err = SSL_get_error(conn->ssl, nread);
+ if ((err == SSL_ERROR_SYSCALL) && (nread == -1)) {
+ err = ERRNO;
+ } else if ((err == SSL_ERROR_WANT_READ)
+ || (err == SSL_ERROR_WANT_WRITE)) {
+ nread = 0;
+ } else {
+ /* All errors should return -2 */
+ DEBUG_TRACE("SSL_read() failed, error %d", err);
+ ERR_clear_error();
+ return -2;
+ }
+ ERR_clear_error();
+ } else {
+ err = 0;
+ }
+ } else if (pollres < 0) {
+ /* Error */
+ return -2;
+ } else {
+ /* pollres = 0 means timeout */
+ nread = 0;
+ }
+#endif
+
+ } else {
+ struct mg_pollfd pfd[2];
+ int pollres;
+ unsigned int num_sock = 1;
+
+ pfd[0].fd = conn->client.sock;
+ pfd[0].events = POLLIN;
+
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd =
+ conn->phys_ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ pollres = mg_poll(pfd,
+ num_sock,
+ (int)(timeout * 1000.0),
+ &(conn->phys_ctx->stop_flag));
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ return -2;
+ }
+ if (pollres > 0) {
+ nread = (int)recv(conn->client.sock, buf, (len_t)len, 0);
+ err = (nread < 0) ? ERRNO : 0;
+ if (nread <= 0) {
+ /* shutdown of the socket at client side */
+ return -2;
+ }
+ } else if (pollres < 0) {
+ /* error calling poll */
+ return -2;
+ } else {
+ /* pollres = 0 means timeout */
+ nread = 0;
+ }
+ }
+
+ if (conn != NULL && !STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ return -2;
+ }
+
+ if ((nread > 0) || ((nread == 0) && (len == 0))) {
+ /* some data has been read, or no data was requested */
+ return nread;
+ }
+
+ if (nread < 0) {
+ /* socket error - check errno */
+#if defined(_WIN32)
+ if (err == WSAEWOULDBLOCK) {
+ /* TODO (low): check if this is still required */
+ /* standard case if called from close_socket_gracefully */
+ return -2;
+ } else if (err == WSAETIMEDOUT) {
+ /* TODO (low): check if this is still required */
+ /* timeout is handled by the while loop */
+ return 0;
+ } else if (err == WSAECONNABORTED) {
+ /* See https://www.chilkatsoft.com/p/p_299.asp */
+ return -2;
+ } else {
+ DEBUG_TRACE("read()/recv() failed, error %d", err);
+ return -2;
+ }
+#else
+ /* TODO: POSIX returns either EAGAIN or EWOULDBLOCK in both cases,
+ * if the timeout is reached and if the socket was set to non-
+ * blocking in close_socket_gracefully, so we can not distinguish
+ * here. We have to wait for the timeout in both cases for now.
+ */
+ if (ERROR_TRY_AGAIN(err)) {
+ /* TODO (low): check if this is still required */
+ /* EAGAIN/EWOULDBLOCK:
+ * standard case if called from close_socket_gracefully
+ * => should return -1 */
+ /* or timeout occurred
+ * => the code must stay in the while loop */
+
+ /* EINTR can be generated on a socket with a timeout set even
+ * when SA_RESTART is effective for all relevant signals
+ * (see signal(7)).
+ * => stay in the while loop */
+ } else {
+ DEBUG_TRACE("read()/recv() failed, error %d", err);
+ return -2;
+ }
+#endif
+ }
+
+ /* Timeout occurred, but no data available. */
+ return -1;
+}
+
+
+static int
+pull_all(FILE *fp, struct mg_connection *conn, char *buf, int len)
+{
+ int n, nread = 0;
+ double timeout = -1.0;
+ uint64_t start_time = 0, now = 0, timeout_ns = 0;
+
+ if (conn->dom_ctx->config[REQUEST_TIMEOUT]) {
+ timeout = atoi(conn->dom_ctx->config[REQUEST_TIMEOUT]) / 1000.0;
+ }
+ if (timeout <= 0.0) {
+ timeout = strtod(config_options[REQUEST_TIMEOUT].default_value, NULL)
+ / 1000.0;
+ }
+ start_time = mg_get_current_time_ns();
+ timeout_ns = (uint64_t)(timeout * 1.0E9);
+
+ while ((len > 0) && STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ n = pull_inner(fp, conn, buf + nread, len, timeout);
+ if (n == -2) {
+ if (nread == 0) {
+ nread = -1; /* Propagate the error */
+ }
+ break;
+ } else if (n == -1) {
+ /* timeout */
+ if (timeout >= 0.0) {
+ now = mg_get_current_time_ns();
+ if ((now - start_time) <= timeout_ns) {
+ continue;
+ }
+ }
+ break;
+ } else if (n == 0) {
+ break; /* No more data to read */
+ } else {
+ nread += n;
+ len -= n;
+ }
+ }
+
+ return nread;
+}
+
+
+static void
+discard_unread_request_data(struct mg_connection *conn)
+{
+ char buf[MG_BUF_LEN];
+
+ while (mg_read(conn, buf, sizeof(buf)) > 0)
+ ;
+}
+
+
+static int
+mg_read_inner(struct mg_connection *conn, void *buf, size_t len)
+{
+ int64_t content_len, n, buffered_len, nread;
+ int64_t len64 =
+ (int64_t)((len > INT_MAX) ? INT_MAX : len); /* since the return value is
+ * int, we may not read more
+ * bytes */
+ const char *body;
+
+ if (conn == NULL) {
+ return 0;
+ }
+
+ /* If Content-Length is not set for a response with body data,
+ * we do not know in advance how much data should be read. */
+ content_len = conn->content_len;
+ if (content_len < 0) {
+ /* The body data is completed when the connection is closed. */
+ content_len = INT64_MAX;
+ }
+
+ nread = 0;
+ if (conn->consumed_content < content_len) {
+ /* Adjust number of bytes to read. */
+ int64_t left_to_read = content_len - conn->consumed_content;
+ if (left_to_read < len64) {
+ /* Do not read more than the total content length of the
+ * request.
+ */
+ len64 = left_to_read;
+ }
+
+ /* Return buffered data */
+ buffered_len = (int64_t)(conn->data_len) - (int64_t)conn->request_len
+ - conn->consumed_content;
+ if (buffered_len > 0) {
+ if (len64 < buffered_len) {
+ buffered_len = len64;
+ }
+ body = conn->buf + conn->request_len + conn->consumed_content;
+ memcpy(buf, body, (size_t)buffered_len);
+ len64 -= buffered_len;
+ conn->consumed_content += buffered_len;
+ nread += buffered_len;
+ buf = (char *)buf + buffered_len;
+ }
+
+ /* We have returned all buffered data. Read new data from the remote
+ * socket.
+ */
+ if ((n = pull_all(NULL, conn, (char *)buf, (int)len64)) >= 0) {
+ conn->consumed_content += n;
+ nread += n;
+ } else {
+ nread = ((nread > 0) ? nread : n);
+ }
+ }
+ return (int)nread;
+}
+
+
+/* Forward declarations */
+static void handle_request(struct mg_connection *);
+static void log_access(const struct mg_connection *);
+
+
+/* Handle request, update statistics and call access log */
+static void
+handle_request_stat_log(struct mg_connection *conn)
+{
+#if defined(USE_SERVER_STATS)
+ struct timespec tnow;
+ conn->conn_state = 4; /* processing */
+#endif
+
+ handle_request(conn);
+
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 5; /* processed */
+
+ clock_gettime(CLOCK_MONOTONIC, &tnow);
+ conn->processing_time = mg_difftimespec(&tnow, &(conn->req_time));
+
+ mg_atomic_add64(&(conn->phys_ctx->total_data_read), conn->consumed_content);
+ mg_atomic_add64(&(conn->phys_ctx->total_data_written),
+ conn->num_bytes_sent);
+#endif
+
+ DEBUG_TRACE("%s", "handle_request done");
+
+ if (conn->phys_ctx->callbacks.end_request != NULL) {
+ conn->phys_ctx->callbacks.end_request(conn, conn->status_code);
+ DEBUG_TRACE("%s", "end_request callback done");
+ }
+ log_access(conn);
+}
+
+
+#if defined(USE_HTTP2)
+#if defined(NO_SSL)
+#error "HTTP2 requires ALPN, ALPN requires SSL/TLS"
+#endif
+#define USE_ALPN
+#include "http2.inl"
+/* Not supported with HTTP/2 */
+#define HTTP1_only \
+ { \
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP2) { \
+ http2_must_use_http1(conn); \
+ DEBUG_TRACE("%s", "must use HTTP/1.x"); \
+ return; \
+ } \
+ }
+#else
+#define HTTP1_only
+#endif
+
+
+CIVETWEB_API int
+mg_read(struct mg_connection *conn, void *buf, size_t len)
+{
+ if (len > INT_MAX) {
+ len = INT_MAX;
+ }
+
+ if (conn == NULL) {
+ return 0;
+ }
+
+ if (conn->is_chunked) {
+ size_t all_read = 0;
+
+ while (len > 0) {
+ if (conn->is_chunked >= 3) {
+ /* No more data left to read */
+ return 0;
+ }
+ if (conn->is_chunked != 1) {
+ /* Has error */
+ return -1;
+ }
+
+ if (conn->consumed_content != conn->content_len) {
+ /* copy from the current chunk */
+ int read_ret = mg_read_inner(conn, (char *)buf + all_read, len);
+
+ if (read_ret < 1) {
+ /* read error */
+ conn->is_chunked = 2;
+ return -1;
+ }
+
+ all_read += (size_t)read_ret;
+ len -= (size_t)read_ret;
+
+ if (conn->consumed_content == conn->content_len) {
+ /* Add data bytes in the current chunk have been read,
+ * so we are expecting \r\n now. */
+ char x[2];
+ conn->content_len += 2;
+ if ((mg_read_inner(conn, x, 2) != 2) || (x[0] != '\r')
+ || (x[1] != '\n')) {
+ /* Protocol violation */
+ conn->is_chunked = 2;
+ return -1;
+ }
+ }
+
+ } else {
+ /* fetch a new chunk */
+ size_t i;
+ char lenbuf[64];
+ char *end = NULL;
+ unsigned long chunkSize = 0;
+
+ for (i = 0; i < (sizeof(lenbuf) - 1); i++) {
+ conn->content_len++;
+ if (mg_read_inner(conn, lenbuf + i, 1) != 1) {
+ lenbuf[i] = 0;
+ }
+ if ((i > 0) && (lenbuf[i] == ';')) {
+ // chunk extension --> skip chars until next CR
+ //
+ // RFC 2616, 3.6.1 Chunked Transfer Coding
+ // (https://www.rfc-editor.org/rfc/rfc2616#page-25)
+ //
+ // chunk = chunk-size [ chunk-extension ] CRLF
+ // chunk-data CRLF
+ // ...
+ // chunk-extension= *( ";" chunk-ext-name [ "="
+ // chunk-ext-val ] )
+ do
+ ++conn->content_len;
+ while (mg_read_inner(conn, lenbuf + i, 1) == 1
+ && lenbuf[i] != '\r');
+ }
+ if ((i > 0) && (lenbuf[i] == '\r')
+ && (lenbuf[i - 1] != '\r')) {
+ continue;
+ }
+ if ((i > 1) && (lenbuf[i] == '\n')
+ && (lenbuf[i - 1] == '\r')) {
+ lenbuf[i + 1] = 0;
+ chunkSize = strtoul(lenbuf, &end, 16);
+ if (chunkSize == 0) {
+ /* regular end of content */
+ conn->is_chunked = 3;
+ }
+ break;
+ }
+ if (!isxdigit((unsigned char)lenbuf[i])) {
+ /* illegal character for chunk length */
+ conn->is_chunked = 2;
+ return -1;
+ }
+ }
+ if ((end == NULL) || (*end != '\r')) {
+ /* chunksize not set correctly */
+ conn->is_chunked = 2;
+ return -1;
+ }
+ if (conn->is_chunked == 3) {
+ /* try discarding trailer for keep-alive */
+
+ // We found the last chunk (length 0) including the
+ // CRLF that terminates that chunk. Now follows a possibly
+ // empty trailer and a final CRLF.
+ //
+ // see RFC 2616, 3.6.1 Chunked Transfer Coding
+ // (https://www.rfc-editor.org/rfc/rfc2616#page-25)
+ //
+ // Chunked-Body = *chunk
+ // last-chunk
+ // trailer
+ // CRLF
+ // ...
+ // last-chunk = 1*("0") [ chunk-extension ] CRLF
+ // ...
+ // trailer = *(entity-header CRLF)
+
+ int crlf_count = 2; // one CRLF already determined
+
+ while (crlf_count < 4 && conn->is_chunked == 3) {
+ ++conn->content_len;
+ if (mg_read_inner(conn, lenbuf, 1) == 1) {
+ if ((crlf_count == 0 || crlf_count == 2)) {
+ if (lenbuf[0] == '\r')
+ ++crlf_count;
+ else
+ crlf_count = 0;
+ } else {
+ // previous character was a CR
+ // --> next character must be LF
+
+ if (lenbuf[0] == '\n')
+ ++crlf_count;
+ else
+ conn->is_chunked = 2;
+ }
+ } else
+ // premature end of trailer
+ conn->is_chunked = 2;
+ }
+
+ if (conn->is_chunked == 2)
+ return -1;
+ else
+ conn->is_chunked = 4;
+
+ break;
+ }
+
+ /* append a new chunk */
+ conn->content_len += (int64_t)chunkSize;
+ }
+ }
+
+ return (int)all_read;
+ }
+ return mg_read_inner(conn, buf, len);
+}
+
+
+CIVETWEB_API int
+mg_write(struct mg_connection *conn, const void *buf, size_t len)
+{
+ time_t now;
+ int n, total, allowed;
+
+ if (conn == NULL) {
+ return 0;
+ }
+ if (len > INT_MAX) {
+ return -1;
+ }
+
+ /* Mark connection as "data sent" */
+ conn->request_state = 10;
+#if defined(USE_HTTP2)
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP2) {
+ http2_data_frame_head(conn, len, 0);
+ }
+#endif
+
+ if (conn->throttle > 0) {
+ if ((now = time(NULL)) != conn->last_throttle_time) {
+ conn->last_throttle_time = now;
+ conn->last_throttle_bytes = 0;
+ }
+ allowed = conn->throttle - conn->last_throttle_bytes;
+ if (allowed > (int)len) {
+ allowed = (int)len;
+ }
+
+ total = push_all(conn->phys_ctx,
+ NULL,
+ conn->client.sock,
+ conn->ssl,
+ (const char *)buf,
+ allowed);
+
+ if (total == allowed) {
+
+ buf = (const char *)buf + total;
+ conn->last_throttle_bytes += total;
+ while ((total < (int)len)
+ && STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ allowed = (conn->throttle > ((int)len - total))
+ ? (int)len - total
+ : conn->throttle;
+
+ n = push_all(conn->phys_ctx,
+ NULL,
+ conn->client.sock,
+ conn->ssl,
+ (const char *)buf,
+ allowed);
+
+ if (n != allowed) {
+ break;
+ }
+ sleep(1);
+ conn->last_throttle_bytes = allowed;
+ conn->last_throttle_time = time(NULL);
+ buf = (const char *)buf + n;
+ total += n;
+ }
+ }
+ } else {
+ total = push_all(conn->phys_ctx,
+ NULL,
+ conn->client.sock,
+ conn->ssl,
+ (const char *)buf,
+ (int)len);
+ }
+ if (total > 0) {
+ conn->num_bytes_sent += total;
+ }
+ return total;
+}
+
+
+/* Send a chunk, if "Transfer-Encoding: chunked" is used */
+CIVETWEB_API int
+mg_send_chunk(struct mg_connection *conn,
+ const char *chunk,
+ unsigned int chunk_len)
+{
+ char lenbuf[16];
+ size_t lenbuf_len;
+ int ret;
+ int t;
+
+ /* First store the length information in a text buffer. */
+ sprintf(lenbuf, "%x\r\n", chunk_len);
+ lenbuf_len = strlen(lenbuf);
+
+ /* Then send length information, chunk and terminating \r\n. */
+ ret = mg_write(conn, lenbuf, lenbuf_len);
+ if (ret != (int)lenbuf_len) {
+ return -1;
+ }
+ t = ret;
+
+ ret = mg_write(conn, chunk, chunk_len);
+ if (ret != (int)chunk_len) {
+ return -1;
+ }
+ t += ret;
+
+ ret = mg_write(conn, "\r\n", 2);
+ if (ret != 2) {
+ return -1;
+ }
+ t += ret;
+
+ return t;
+}
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* This block forwards format strings to printf implementations,
+ * so we need to disable the format-nonliteral warning. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
+
+
+/* Alternative alloc_vprintf() for non-compliant C runtimes */
+static int
+alloc_vprintf2(char **buf, const char *fmt, va_list ap)
+{
+ va_list ap_copy;
+ size_t size = MG_BUF_LEN / 4;
+ int len = -1;
+
+ *buf = NULL;
+ while (len < 0) {
+ if (*buf) {
+ mg_free(*buf);
+ }
+
+ size *= 4;
+ *buf = (char *)mg_malloc(size);
+ if (!*buf) {
+ break;
+ }
+
+ va_copy(ap_copy, ap);
+ len = vsnprintf_impl(*buf, size - 1, fmt, ap_copy);
+ va_end(ap_copy);
+ (*buf)[size - 1] = 0;
+ }
+
+ return len;
+}
+
+
+/* Print message to buffer. If buffer is large enough to hold the message,
+ * return buffer. If buffer is to small, allocate large enough buffer on
+ * heap,
+ * and return allocated buffer. */
+static int
+alloc_vprintf(char **out_buf,
+ char *prealloc_buf,
+ size_t prealloc_size,
+ const char *fmt,
+ va_list ap)
+{
+ va_list ap_copy;
+ int len;
+
+ /* Windows is not standard-compliant, and vsnprintf() returns -1 if
+ * buffer is too small. Also, older versions of msvcrt.dll do not have
+ * _vscprintf(). However, if size is 0, vsnprintf() behaves correctly.
+ * Therefore, we make two passes: on first pass, get required message
+ * length.
+ * On second pass, actually print the message. */
+ va_copy(ap_copy, ap);
+ len = vsnprintf_impl(NULL, 0, fmt, ap_copy);
+ va_end(ap_copy);
+
+ if (len < 0) {
+ /* C runtime is not standard compliant, vsnprintf() returned -1.
+ * Switch to alternative code path that uses incremental
+ * allocations.
+ */
+ va_copy(ap_copy, ap);
+ len = alloc_vprintf2(out_buf, fmt, ap_copy);
+ va_end(ap_copy);
+
+ } else if ((size_t)(len) >= prealloc_size) {
+ /* The pre-allocated buffer not large enough. */
+ /* Allocate a new buffer. */
+ *out_buf = (char *)mg_malloc((size_t)(len) + 1);
+ if (!*out_buf) {
+ /* Allocation failed. Return -1 as "out of memory" error. */
+ return -1;
+ }
+ /* Buffer allocation successful. Store the string there. */
+ va_copy(ap_copy, ap);
+ IGNORE_UNUSED_RESULT(
+ vsnprintf_impl(*out_buf, (size_t)(len) + 1, fmt, ap_copy));
+ va_end(ap_copy);
+
+ } else {
+ /* The pre-allocated buffer is large enough.
+ * Use it to store the string and return the address. */
+ va_copy(ap_copy, ap);
+ IGNORE_UNUSED_RESULT(
+ vsnprintf_impl(prealloc_buf, prealloc_size, fmt, ap_copy));
+ va_end(ap_copy);
+ *out_buf = prealloc_buf;
+ }
+
+ return len;
+}
+
+
+static int
+alloc_printf(char **out_buf, const char *fmt, ...)
+{
+ va_list ap;
+ int result;
+
+ va_start(ap, fmt);
+ result = alloc_vprintf(out_buf, NULL, 0, fmt, ap);
+ va_end(ap);
+
+ return result;
+}
+
+
+#if defined(GCC_DIAGNOSTIC)
+/* Enable format-nonliteral warning again. */
+#pragma GCC diagnostic pop
+#endif
+
+
+static int
+mg_vprintf(struct mg_connection *conn, const char *fmt, va_list ap)
+{
+ char mem[MG_BUF_LEN];
+ char *buf = NULL;
+ int len;
+
+ if ((len = alloc_vprintf(&buf, mem, sizeof(mem), fmt, ap)) > 0) {
+ len = mg_write(conn, buf, (size_t)len);
+ }
+ if (buf != mem) {
+ mg_free(buf);
+ }
+
+ return len;
+}
+
+
+CIVETWEB_API int
+mg_printf(struct mg_connection *conn, const char *fmt, ...)
+{
+ va_list ap;
+ int result;
+
+ va_start(ap, fmt);
+ result = mg_vprintf(conn, fmt, ap);
+ va_end(ap);
+
+ return result;
+}
+
+
+CIVETWEB_API int
+mg_url_decode(const char *src,
+ int src_len,
+ char *dst,
+ int dst_len,
+ int is_form_url_encoded)
+{
+ int i, j, a, b;
+
+#define HEXTOI(x) (isdigit(x) ? (x - '0') : (x - 'W'))
+
+ for (i = j = 0; (i < src_len) && (j < (dst_len - 1)); i++, j++) {
+ if ((i < src_len - 2) && (src[i] == '%')
+ && isxdigit((unsigned char)src[i + 1])
+ && isxdigit((unsigned char)src[i + 2])) {
+ a = tolower((unsigned char)src[i + 1]);
+ b = tolower((unsigned char)src[i + 2]);
+ dst[j] = (char)((HEXTOI(a) << 4) | HEXTOI(b));
+ i += 2;
+ } else if (is_form_url_encoded && (src[i] == '+')) {
+ dst[j] = ' ';
+ } else if ((unsigned char)src[i] <= ' ') {
+ return -1; /* invalid character */
+ } else {
+ dst[j] = src[i];
+ }
+ }
+
+#undef HEXTOI
+
+ dst[j] = '\0'; /* Null-terminate the destination */
+
+ return (i >= src_len) ? j : -1;
+}
+
+
+/* form url decoding of an entire string */
+static void
+url_decode_in_place(char *buf)
+{
+ int len = (int)strlen(buf);
+ (void)mg_url_decode(buf, len, buf, len + 1, 1);
+}
+
+
+CIVETWEB_API int
+mg_get_var(const char *data,
+ size_t data_len,
+ const char *name,
+ char *dst,
+ size_t dst_len)
+{
+ return mg_get_var2(data, data_len, name, dst, dst_len, 0);
+}
+
+
+CIVETWEB_API int
+mg_get_var2(const char *data,
+ size_t data_len,
+ const char *name,
+ char *dst,
+ size_t dst_len,
+ size_t occurrence)
+{
+ const char *p, *e, *s;
+ size_t name_len;
+ int len;
+
+ if ((dst == NULL) || (dst_len == 0)) {
+ len = -2;
+ } else if ((data == NULL) || (name == NULL) || (data_len == 0)) {
+ len = -1;
+ dst[0] = '\0';
+ } else {
+ name_len = strlen(name);
+ e = data + data_len;
+ len = -1;
+ dst[0] = '\0';
+
+ /* data is "var1=val1&var2=val2...". Find variable first */
+ for (p = data; p + name_len < e; p++) {
+ if (((p == data) || (p[-1] == '&')) && (p[name_len] == '=')
+ && !mg_strncasecmp(name, p, name_len) && 0 == occurrence--) {
+ /* Point p to variable value */
+ p += name_len + 1;
+
+ /* Point s to the end of the value */
+ s = (const char *)memchr(p, '&', (size_t)(e - p));
+ if (s == NULL) {
+ s = e;
+ }
+ DEBUG_ASSERT(s >= p);
+ if (s < p) {
+ return -3;
+ }
+
+ /* Decode variable into destination buffer */
+ len = mg_url_decode(p, (int)(s - p), dst, (int)dst_len, 1);
+
+ /* Redirect error code from -1 to -2 (destination buffer too
+ * small). */
+ if (len == -1) {
+ len = -2;
+ }
+ break;
+ }
+ }
+ }
+
+ return len;
+}
+
+
+/* split a string "key1=val1&key2=val2" into key/value pairs */
+CIVETWEB_API int
+mg_split_form_urlencoded(char *data,
+ struct mg_header *form_fields,
+ unsigned num_form_fields)
+{
+ char *b;
+ int i;
+ int num = 0;
+
+ if (data == NULL) {
+ /* parameter error */
+ return -1;
+ }
+
+ if ((form_fields == NULL) && (num_form_fields == 0)) {
+ /* determine the number of expected fields */
+ if (data[0] == 0) {
+ return 0;
+ }
+ /* count number of & to return the number of key-value-pairs */
+ num = 1;
+ while (*data) {
+ if (*data == '&') {
+ num++;
+ }
+ data++;
+ }
+ return num;
+ }
+
+ if ((form_fields == NULL) || ((int)num_form_fields <= 0)) {
+ /* parameter error */
+ return -1;
+ }
+
+ for (i = 0; i < (int)num_form_fields; i++) {
+ /* extract key-value pairs from input data */
+ while ((*data == ' ') || (*data == '\t')) {
+ /* skip initial spaces */
+ data++;
+ }
+ if (*data == 0) {
+ /* end of string reached */
+ break;
+ }
+ form_fields[num].name = data;
+
+ /* find & or = */
+ b = data;
+ while ((*b != 0) && (*b != '&') && (*b != '=')) {
+ b++;
+ }
+
+ if (*b == 0) {
+ /* last key without value */
+ form_fields[num].value = NULL;
+ } else if (*b == '&') {
+ /* mid key without value */
+ form_fields[num].value = NULL;
+ } else {
+ /* terminate string */
+ *b = 0;
+ /* value starts after '=' */
+ data = b + 1;
+ form_fields[num].value = data;
+ }
+
+ /* new field is stored */
+ num++;
+
+ /* find a next key */
+ b = strchr(data, '&');
+ if (b == 0) {
+ /* no more data */
+ break;
+ } else {
+ /* terminate value of last field at '&' */
+ *b = 0;
+ /* next key-value-pairs starts after '&' */
+ data = b + 1;
+ }
+ }
+
+ /* Decode all values */
+ for (i = 0; i < num; i++) {
+ if (form_fields[i].name) {
+ url_decode_in_place((char *)form_fields[i].name);
+ }
+ if (form_fields[i].value) {
+ url_decode_in_place((char *)form_fields[i].value);
+ }
+ }
+
+ /* return number of fields found */
+ return num;
+}
+
+
+/* HCP24: some changes to compare whole var_name */
+CIVETWEB_API int
+mg_get_cookie(const char *cookie_header,
+ const char *var_name,
+ char *dst,
+ size_t dst_size)
+{
+ const char *s, *p, *end;
+ int name_len, len = -1;
+
+ if ((dst == NULL) || (dst_size == 0)) {
+ return -2;
+ }
+
+ dst[0] = '\0';
+ if ((var_name == NULL) || ((s = cookie_header) == NULL)) {
+ return -1;
+ }
+
+ name_len = (int)strlen(var_name);
+ end = s + strlen(s);
+ for (; (s = mg_strcasestr(s, var_name)) != NULL; s += name_len) {
+ if (s[name_len] == '=') {
+ /* HCP24: now check is it a substring or a full cookie name */
+ if ((s == cookie_header) || (s[-1] == ' ')) {
+ s += name_len + 1;
+ if ((p = strchr(s, ' ')) == NULL) {
+ p = end;
+ }
+ if (p[-1] == ';') {
+ p--;
+ }
+ if ((*s == '"') && (p[-1] == '"') && (p > s + 1)) {
+ s++;
+ p--;
+ }
+ if ((size_t)(p - s) < dst_size) {
+ len = (int)(p - s);
+ mg_strlcpy(dst, s, (size_t)len + 1);
+ } else {
+ len = -3;
+ }
+ break;
+ }
+ }
+ }
+ return len;
+}
+
+
+CIVETWEB_API int
+mg_base64_encode(const unsigned char *src,
+ size_t src_len,
+ char *dst,
+ size_t *dst_len)
+{
+ static const char *b64 =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ size_t i, j;
+ int a, b, c;
+
+ if (dst_len != NULL) {
+ /* Expected length including 0 termination: */
+ /* IN 1 -> OUT 5, IN 2 -> OUT 5, IN 3 -> OUT 5, IN 4 -> OUT 9,
+ * IN 5 -> OUT 9, IN 6 -> OUT 9, IN 7 -> OUT 13, etc. */
+ size_t expected_len = ((src_len + 2) / 3) * 4 + 1;
+ if (*dst_len < expected_len) {
+ if (*dst_len > 0) {
+ dst[0] = '\0';
+ }
+ *dst_len = expected_len;
+ return 0;
+ }
+ }
+
+ for (i = j = 0; i < src_len; i += 3) {
+ a = src[i];
+ b = ((i + 1) >= src_len) ? 0 : src[i + 1];
+ c = ((i + 2) >= src_len) ? 0 : src[i + 2];
+
+ dst[j++] = b64[a >> 2];
+ dst[j++] = b64[((a & 3) << 4) | (b >> 4)];
+ if (i + 1 < src_len) {
+ dst[j++] = b64[(b & 15) << 2 | (c >> 6)];
+ }
+ if (i + 2 < src_len) {
+ dst[j++] = b64[c & 63];
+ }
+ }
+ while (j % 4 != 0) {
+ dst[j++] = '=';
+ }
+ dst[j++] = '\0';
+
+ if (dst_len != NULL) {
+ *dst_len = (size_t)j;
+ }
+
+ /* Return -1 for "OK" */
+ return -1;
+}
+
+
+static unsigned char
+b64reverse(char letter)
+{
+ if ((letter >= 'A') && (letter <= 'Z')) {
+ return (unsigned char)(letter - 'A');
+ }
+ if ((letter >= 'a') && (letter <= 'z')) {
+ return (unsigned char)(letter - 'a' + 26);
+ }
+ if ((letter >= '0') && (letter <= '9')) {
+ return (unsigned char)(letter - '0' + 52);
+ }
+ if (letter == '+') {
+ return 62;
+ }
+ if (letter == '/') {
+ return 63;
+ }
+ if (letter == '=') {
+ return 255; /* normal end */
+ }
+ return 254; /* error */
+}
+
+
+CIVETWEB_API int
+mg_base64_decode(const char *src,
+ size_t src_len,
+ unsigned char *dst,
+ size_t *dst_len)
+{
+ size_t i;
+ unsigned char a, b, c, d;
+ size_t dst_len_limit = (size_t)-1;
+ size_t dst_len_used = 0;
+
+ if (dst_len != NULL) {
+ dst_len_limit = *dst_len;
+ *dst_len = 0;
+ }
+
+ for (i = 0; i < src_len; i += 4) {
+ /* Read 4 characters from BASE64 string */
+ a = b64reverse(src[i]);
+ if (a >= 254) {
+ return (int)i;
+ }
+
+ b = b64reverse(((i + 1) >= src_len) ? 0 : src[i + 1]);
+ if (b >= 254) {
+ return (int)i + 1;
+ }
+
+ c = b64reverse(((i + 2) >= src_len) ? 0 : src[i + 2]);
+ if (c == 254) {
+ return (int)i + 2;
+ }
+
+ d = b64reverse(((i + 3) >= src_len) ? 0 : src[i + 3]);
+ if (d == 254) {
+ return (int)i + 3;
+ }
+
+ /* Add first (of 3) decoded character */
+ if (dst_len_used < dst_len_limit) {
+ dst[dst_len_used] = (unsigned char)((unsigned char)(a << 2)
+ + (unsigned char)(b >> 4));
+ }
+ dst_len_used++;
+
+ if (c != 255) {
+ if (dst_len_used < dst_len_limit) {
+
+ dst[dst_len_used] = (unsigned char)((unsigned char)(b << 4)
+ + (unsigned char)(c >> 2));
+ }
+ dst_len_used++;
+ if (d != 255) {
+ if (dst_len_used < dst_len_limit) {
+ dst[dst_len_used] =
+ (unsigned char)((unsigned char)(c << 6) + d);
+ }
+ dst_len_used++;
+ }
+ }
+ }
+
+ /* Add terminating zero */
+ if (dst_len_used < dst_len_limit) {
+ dst[dst_len_used] = '\0';
+ }
+ dst_len_used++;
+ if (dst_len != NULL) {
+ *dst_len = dst_len_used;
+ }
+
+ if (dst_len_used > dst_len_limit) {
+ /* Out of memory */
+ return 0;
+ }
+
+ /* Return -1 for "OK" */
+ return -1;
+}
+
+
+static int
+is_put_or_delete_method(const struct mg_connection *conn)
+{
+ if (conn) {
+ const char *s = conn->request_info.request_method;
+ if (s != NULL) {
+ /* PUT, DELETE, MKCOL, PATCH, LOCK, UNLOCK, PROPPATCH, MOVE, COPY */
+ return (!strcmp(s, "PUT") || !strcmp(s, "DELETE")
+ || !strcmp(s, "MKCOL") || !strcmp(s, "PATCH")
+ || !strcmp(s, "LOCK") || !strcmp(s, "UNLOCK")
+ || !strcmp(s, "PROPPATCH") || !strcmp(s, "MOVE")
+ || !strcmp(s, "COPY"));
+ }
+ }
+ return 0;
+}
+
+
+static int
+is_civetweb_webdav_method(const struct mg_connection *conn)
+{
+ /* Note: Here we only have to identify the WebDav methods that need special
+ * handling in the CivetWeb code - not all methods used in WebDav. In
+ * particular, methods used on directories (when using Windows Explorer as
+ * WebDav client).
+ */
+ if (conn) {
+ const char *s = conn->request_info.request_method;
+ if (s != NULL) {
+ /* These are the civetweb builtin DAV methods */
+ return (!strcmp(s, "PROPFIND") || !strcmp(s, "PROPPATCH")
+ || !strcmp(s, "LOCK") || !strcmp(s, "UNLOCK")
+ || !strcmp(s, "MOVE") || !strcmp(s, "COPY"));
+ }
+ }
+ return 0;
+}
+
+
+#if !defined(NO_FILES)
+static int
+extention_matches_script(
+ struct mg_connection *conn, /* in: request (must be valid) */
+ const char *filename /* in: filename (must be valid) */
+)
+{
+#if !defined(NO_CGI)
+ int cgi_config_idx, inc, max;
+#endif
+
+#if defined(USE_LUA)
+ if (match_prefix_strlen(conn->dom_ctx->config[LUA_SCRIPT_EXTENSIONS],
+ filename)
+ > 0) {
+ return 1;
+ }
+#endif
+#if defined(USE_DUKTAPE)
+ if (match_prefix_strlen(conn->dom_ctx->config[DUKTAPE_SCRIPT_EXTENSIONS],
+ filename)
+ > 0) {
+ return 1;
+ }
+#endif
+#if !defined(NO_CGI)
+ inc = CGI2_EXTENSIONS - CGI_EXTENSIONS;
+ max = PUT_DELETE_PASSWORDS_FILE - CGI_EXTENSIONS;
+ for (cgi_config_idx = 0; cgi_config_idx < max; cgi_config_idx += inc) {
+ if ((conn->dom_ctx->config[CGI_EXTENSIONS + cgi_config_idx] != NULL)
+ && (match_prefix_strlen(
+ conn->dom_ctx->config[CGI_EXTENSIONS + cgi_config_idx],
+ filename)
+ > 0)) {
+ return 1;
+ }
+ }
+#endif
+ /* filename and conn could be unused, if all preocessor conditions
+ * are false (no script language supported). */
+ (void)filename;
+ (void)conn;
+
+ return 0;
+}
+
+
+static int
+extention_matches_template_text(
+ struct mg_connection *conn, /* in: request (must be valid) */
+ const char *filename /* in: filename (must be valid) */
+)
+{
+#if defined(USE_LUA)
+ if (match_prefix_strlen(conn->dom_ctx->config[LUA_SERVER_PAGE_EXTENSIONS],
+ filename)
+ > 0) {
+ return 1;
+ }
+#endif
+ if (match_prefix_strlen(conn->dom_ctx->config[SSI_EXTENSIONS], filename)
+ > 0) {
+ return 1;
+ }
+ return 0;
+}
+
+
+/* For given directory path, substitute it to valid index file.
+ * Return 1 if index file has been found, 0 if not found.
+ * If the file is found, it's stats is returned in stp. */
+static int
+substitute_index_file_aux(struct mg_connection *conn,
+ char *path,
+ size_t path_len,
+ struct mg_file_stat *filestat)
+{
+ const char *list = conn->dom_ctx->config[INDEX_FILES];
+ struct vec filename_vec;
+ size_t n = strlen(path);
+ int found = 0;
+
+ /* The 'path' given to us points to the directory. Remove all trailing
+ * directory separator characters from the end of the path, and
+ * then append single directory separator character. */
+ while ((n > 0) && (path[n - 1] == '/')) {
+ n--;
+ }
+ path[n] = '/';
+
+ /* Traverse index files list. For each entry, append it to the given
+ * path and see if the file exists. If it exists, break the loop */
+ while ((list = next_option(list, &filename_vec, NULL)) != NULL) {
+ /* Ignore too long entries that may overflow path buffer */
+ if ((filename_vec.len + 1) > (path_len - (n + 1))) {
+ continue;
+ }
+
+ /* Prepare full path to the index file */
+ mg_strlcpy(path + n + 1, filename_vec.ptr, filename_vec.len + 1);
+
+ /* Does it exist? */
+ if (mg_stat(conn, path, filestat)) {
+ /* Yes it does, break the loop */
+ found = 1;
+ break;
+ }
+ }
+
+ /* If no index file exists, restore directory path */
+ if (!found) {
+ path[n] = '\0';
+ }
+
+ return found;
+}
+
+/* Same as above, except if the first try fails and a fallback-root is
+ * configured, we'll try there also */
+static int
+substitute_index_file(struct mg_connection *conn,
+ char *path,
+ size_t path_len,
+ struct mg_file_stat *filestat)
+{
+ int ret = substitute_index_file_aux(conn, path, path_len, filestat);
+ if (ret == 0) {
+ const char *root_prefix = conn->dom_ctx->config[DOCUMENT_ROOT];
+ const char *fallback_root_prefix =
+ conn->dom_ctx->config[FALLBACK_DOCUMENT_ROOT];
+ if ((root_prefix) && (fallback_root_prefix)) {
+ const size_t root_prefix_len = strlen(root_prefix);
+ if ((strncmp(path, root_prefix, root_prefix_len) == 0)) {
+ char scratch_path[UTF8_PATH_MAX]; /* separate storage, to avoid
+ side effects if we fail */
+ size_t sub_path_len;
+
+ const size_t fallback_root_prefix_len =
+ strlen(fallback_root_prefix);
+ const char *sub_path = path + root_prefix_len;
+ while (*sub_path == '/') {
+ sub_path++;
+ }
+ sub_path_len = strlen(sub_path);
+
+ if (((fallback_root_prefix_len + 1 + sub_path_len + 1)
+ < sizeof(scratch_path))) {
+ /* The concatenations below are all safe because we
+ * pre-verified string lengths above */
+ char *nul;
+ strcpy(scratch_path, fallback_root_prefix);
+ nul = strchr(scratch_path, '\0');
+ if ((nul > scratch_path) && (*(nul - 1) != '/')) {
+ *nul++ = '/';
+ *nul = '\0';
+ }
+ strcat(scratch_path, sub_path);
+ if (substitute_index_file_aux(conn,
+ scratch_path,
+ sizeof(scratch_path),
+ filestat)) {
+ mg_strlcpy(path, scratch_path, path_len);
+ return 1;
+ }
+ }
+ }
+ }
+ }
+ return ret;
+}
+
+#endif
+
+
+static void
+interpret_uri(struct mg_connection *conn, /* in/out: request (must be valid) */
+ char *filename, /* out: filename */
+ size_t filename_buf_len, /* in: size of filename buffer */
+ struct mg_file_stat *filestat, /* out: file status structure */
+ int *is_found, /* out: file found (directly) */
+ int *is_script_resource, /* out: handled by a script? */
+ int *is_websocket_request, /* out: websocket connection? */
+ int *is_put_or_delete_request, /* out: put/delete a file? */
+ int *is_webdav_request, /* out: webdav request? */
+ int *is_template_text /* out: SSI file or LSP file? */
+)
+{
+ char const *accept_encoding;
+
+#if !defined(NO_FILES)
+ const char *uri = conn->request_info.local_uri;
+ const char *roots[] = {conn->dom_ctx->config[DOCUMENT_ROOT],
+ conn->dom_ctx->config[FALLBACK_DOCUMENT_ROOT],
+ NULL};
+ int fileExists = 0;
+ const char *rewrite;
+ struct vec a, b;
+ ptrdiff_t match_len;
+ char gz_path[UTF8_PATH_MAX];
+ int truncated;
+ int i;
+#if !defined(NO_CGI) || defined(USE_LUA) || defined(USE_DUKTAPE)
+ char *tmp_str;
+ size_t tmp_str_len, sep_pos;
+ int allow_substitute_script_subresources;
+#endif
+#else
+ (void)filename_buf_len; /* unused if NO_FILES is defined */
+#endif
+
+ /* Step 1: Set all initially unknown outputs to zero */
+ memset(filestat, 0, sizeof(*filestat));
+ *filename = 0;
+ *is_found = 0;
+ *is_script_resource = 0;
+ *is_template_text = 0;
+
+ /* Step 2: Classify the request method */
+ /* Step 2a: Check if the request attempts to modify the file system */
+ *is_put_or_delete_request = is_put_or_delete_method(conn);
+ /* Step 2b: Check if the request uses WebDav method that requires special
+ * handling */
+ *is_webdav_request = is_civetweb_webdav_method(conn);
+
+ /* Step 3: Check if it is a websocket request, and modify the document
+ * root if required */
+#if defined(USE_WEBSOCKET)
+ *is_websocket_request = (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET);
+#if !defined(NO_FILES)
+ if ((*is_websocket_request) && conn->dom_ctx->config[WEBSOCKET_ROOT]) {
+ roots[0] = conn->dom_ctx->config[WEBSOCKET_ROOT];
+ roots[1] = conn->dom_ctx->config[FALLBACK_WEBSOCKET_ROOT];
+ }
+#endif /* !NO_FILES */
+#else /* USE_WEBSOCKET */
+ *is_websocket_request = 0;
+#endif /* USE_WEBSOCKET */
+
+ /* Step 4: Check if gzip encoded response is allowed */
+ conn->accept_gzip = 0;
+ if ((accept_encoding = mg_get_header(conn, "Accept-Encoding")) != NULL) {
+ if (strstr(accept_encoding, "gzip") != NULL) {
+ conn->accept_gzip = 1;
+ }
+ }
+
+#if !defined(NO_FILES)
+ /* Step 5: If there is no root directory, don't look for files. */
+ /* Note that roots[0] == NULL is a regular use case here. This occurs,
+ * if all requests are handled by callbacks, so the WEBSOCKET_ROOT
+ * config is not required. */
+ if (roots[0] == NULL) {
+ /* all file related outputs have already been set to 0, just return
+ */
+ return;
+ }
+
+ for (i = 0; roots[i] != NULL; i++) {
+ /* Step 6: Determine the local file path from the root path and the
+ * request uri. */
+ /* Using filename_buf_len - 1 because memmove() for PATH_INFO may shift
+ * part of the path one byte on the right. */
+ truncated = 0;
+ mg_snprintf(conn,
+ &truncated,
+ filename,
+ filename_buf_len - 1,
+ "%s%s",
+ roots[i],
+ uri);
+
+ if (truncated) {
+ goto interpret_cleanup;
+ }
+
+ /* Step 7: URI rewriting */
+ rewrite = conn->dom_ctx->config[URL_REWRITE_PATTERN];
+ while ((rewrite = next_option(rewrite, &a, &b)) != NULL) {
+ if ((match_len = match_prefix(a.ptr, a.len, uri)) > 0) {
+ mg_snprintf(conn,
+ &truncated,
+ filename,
+ filename_buf_len - 1,
+ "%.*s%s",
+ (int)b.len,
+ b.ptr,
+ uri + match_len);
+ break;
+ }
+ }
+
+ if (truncated) {
+ goto interpret_cleanup;
+ }
+
+ /* Step 8: Check if the file exists at the server */
+ /* Local file path and name, corresponding to requested URI
+ * is now stored in "filename" variable. */
+ if (mg_stat(conn, filename, filestat)) {
+ fileExists = 1;
+ break;
+ }
+ }
+
+ if (fileExists) {
+ int uri_len = (int)strlen(uri);
+ int is_uri_end_slash = (uri_len > 0) && (uri[uri_len - 1] == '/');
+
+ /* 8.1: File exists. */
+ *is_found = 1;
+
+ /* 8.2: Check if it is a script type. */
+ if (extention_matches_script(conn, filename)) {
+ /* The request addresses a CGI resource, Lua script or
+ * server-side javascript.
+ * The URI corresponds to the script itself (like
+ * /path/script.cgi), and there is no additional resource
+ * path (like /path/script.cgi/something).
+ * Requests that modify (replace or delete) a resource, like
+ * PUT and DELETE requests, should replace/delete the script
+ * file.
+ * Requests that read or write from/to a resource, like GET and
+ * POST requests, should call the script and return the
+ * generated response. */
+ *is_script_resource = (!*is_put_or_delete_request);
+ }
+
+ /* 8.3: Check for SSI and LSP files */
+ if (extention_matches_template_text(conn, filename)) {
+ /* Same as above, but for *.lsp and *.shtml files. */
+ /* A "template text" is a file delivered directly to the client,
+ * but with some text tags replaced by dynamic content.
+ * E.g. a Server Side Include (SSI) or Lua Page/Lua Server Page
+ * (LP, LSP) file. */
+ *is_template_text = (!*is_put_or_delete_request);
+ }
+
+ /* 8.4: If the request target is a directory, there could be
+ * a substitute file (index.html, index.cgi, ...). */
+ /* But do not substitute a directory for a WebDav request */
+ if (filestat->is_directory && is_uri_end_slash
+ && (!*is_webdav_request)) {
+ /* Use a local copy here, since substitute_index_file will
+ * change the content of the file status */
+ struct mg_file_stat tmp_filestat;
+ memset(&tmp_filestat, 0, sizeof(tmp_filestat));
+
+ if (substitute_index_file(
+ conn, filename, filename_buf_len, &tmp_filestat)) {
+
+ /* Substitute file found. Copy stat to the output, then
+ * check if the file is a script file */
+ *filestat = tmp_filestat;
+
+ if (extention_matches_script(conn, filename)) {
+ /* Substitute file is a script file */
+ *is_script_resource = 1;
+ } else if (extention_matches_template_text(conn, filename)) {
+ /* Substitute file is a LSP or SSI file */
+ *is_template_text = 1;
+ } else {
+ /* Substitute file is a regular file */
+ *is_script_resource = 0;
+ *is_found = (mg_stat(conn, filename, filestat) ? 1 : 0);
+ }
+ }
+ /* If there is no substitute file, the server could return
+ * a directory listing in a later step */
+ }
+ return;
+ }
+
+ /* Step 9: Check for zipped files: */
+ /* If we can't find the actual file, look for the file
+ * with the same name but a .gz extension. If we find it,
+ * use that and set the gzipped flag in the file struct
+ * to indicate that the response need to have the content-
+ * encoding: gzip header.
+ * We can only do this if the browser declares support. */
+ if (conn->accept_gzip) {
+ mg_snprintf(
+ conn, &truncated, gz_path, sizeof(gz_path), "%s.gz", filename);
+
+ if (truncated) {
+ goto interpret_cleanup;
+ }
+
+ if (mg_stat(conn, gz_path, filestat)) {
+ if (filestat) {
+ filestat->is_gzipped = 1;
+ *is_found = 1;
+ }
+ /* Currently gz files can not be scripts. */
+ return;
+ }
+ }
+
+#if !defined(NO_CGI) || defined(USE_LUA) || defined(USE_DUKTAPE)
+ /* Step 10: Script resources may handle sub-resources */
+ /* Support PATH_INFO for CGI scripts. */
+ tmp_str_len = strlen(filename);
+ tmp_str =
+ (char *)mg_malloc_ctx(tmp_str_len + UTF8_PATH_MAX + 1, conn->phys_ctx);
+ if (!tmp_str) {
+ /* Out of memory */
+ goto interpret_cleanup;
+ }
+ memcpy(tmp_str, filename, tmp_str_len + 1);
+
+ /* Check config, if index scripts may have sub-resources */
+ allow_substitute_script_subresources =
+ !mg_strcasecmp(conn->dom_ctx->config[ALLOW_INDEX_SCRIPT_SUB_RES],
+ "yes");
+ if (*is_webdav_request) {
+ /* TO BE DEFINED: Should scripts handle special WebDAV methods lile
+ * PROPFIND for their subresources? */
+ /* allow_substitute_script_subresources = 0; */
+ }
+
+ sep_pos = tmp_str_len;
+ while (sep_pos > 0) {
+ sep_pos--;
+ if (tmp_str[sep_pos] == '/') {
+ int is_script = 0, does_exist = 0;
+
+ tmp_str[sep_pos] = 0;
+ if (tmp_str[0]) {
+ is_script = extention_matches_script(conn, tmp_str);
+ does_exist = mg_stat(conn, tmp_str, filestat);
+ }
+
+ if (does_exist && is_script) {
+ filename[sep_pos] = 0;
+ memmove(filename + sep_pos + 2,
+ filename + sep_pos + 1,
+ strlen(filename + sep_pos + 1) + 1);
+ conn->path_info = filename + sep_pos + 1;
+ filename[sep_pos + 1] = '/';
+ *is_script_resource = 1;
+ *is_found = 1;
+ break;
+ }
+
+ if (allow_substitute_script_subresources) {
+ if (substitute_index_file(
+ conn, tmp_str, tmp_str_len + UTF8_PATH_MAX, filestat)) {
+
+ /* some intermediate directory has an index file */
+ if (extention_matches_script(conn, tmp_str)) {
+
+ size_t script_name_len = strlen(tmp_str);
+
+ /* subres_name read before this memory locatio will be
+ overwritten */
+ char *subres_name = filename + sep_pos;
+ size_t subres_name_len = strlen(subres_name);
+
+ DEBUG_TRACE("Substitute script %s serving path %s",
+ tmp_str,
+ filename);
+
+ /* this index file is a script */
+ if ((script_name_len + subres_name_len + 2)
+ >= filename_buf_len) {
+ mg_free(tmp_str);
+ goto interpret_cleanup;
+ }
+
+ conn->path_info =
+ filename + script_name_len + 1; /* new target */
+ memmove(conn->path_info, subres_name, subres_name_len);
+ conn->path_info[subres_name_len] = 0;
+ memcpy(filename, tmp_str, script_name_len + 1);
+
+ *is_script_resource = 1;
+ *is_found = 1;
+ break;
+
+ } else {
+
+ DEBUG_TRACE("Substitute file %s serving path %s",
+ tmp_str,
+ filename);
+
+ /* non-script files will not have sub-resources */
+ filename[sep_pos] = 0;
+ conn->path_info = 0;
+ *is_script_resource = 0;
+ *is_found = 0;
+ break;
+ }
+ }
+ }
+
+ tmp_str[sep_pos] = '/';
+ }
+ }
+
+ mg_free(tmp_str);
+
+#endif /* !defined(NO_CGI) || defined(USE_LUA) || defined(USE_DUKTAPE) */
+#endif /* !defined(NO_FILES) */
+ return;
+
+#if !defined(NO_FILES)
+/* Reset all outputs */
+interpret_cleanup:
+ memset(filestat, 0, sizeof(*filestat));
+ *filename = 0;
+ *is_found = 0;
+ *is_script_resource = 0;
+ *is_websocket_request = 0;
+ *is_put_or_delete_request = 0;
+#endif /* !defined(NO_FILES) */
+}
+
+
+/* Check whether full request is buffered. Return:
+ * -1 if request or response is malformed
+ * 0 if request or response is not yet fully buffered
+ * >0 actual request length, including last \r\n\r\n */
+static int
+get_http_header_len(const char *buf, int buflen)
+{
+ int i;
+ for (i = 0; i < buflen; i++) {
+ /* Do an unsigned comparison in some conditions below */
+ const unsigned char c = (unsigned char)buf[i];
+
+ if ((c < 128) && ((char)c != '\r') && ((char)c != '\n')
+ && !isprint(c)) {
+ /* abort scan as soon as one malformed character is found */
+ return -1;
+ }
+
+ if (i < buflen - 1) {
+ if ((buf[i] == '\n') && (buf[i + 1] == '\n')) {
+ /* Two newline, no carriage return - not standard compliant,
+ * but it should be accepted */
+ return i + 2;
+ }
+ }
+
+ if (i < buflen - 3) {
+ if ((buf[i] == '\r') && (buf[i + 1] == '\n') && (buf[i + 2] == '\r')
+ && (buf[i + 3] == '\n')) {
+ /* Two \r\n - standard compliant */
+ return i + 4;
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+#if !defined(NO_CACHING)
+/* Convert month to the month number. Return -1 on error, or month number */
+static int
+get_month_index(const char *s)
+{
+ size_t i;
+
+ for (i = 0; i < ARRAY_SIZE(month_names); i++) {
+ if (!strcmp(s, month_names[i])) {
+ return (int)i;
+ }
+ }
+
+ return -1;
+}
+
+
+/* Parse UTC date-time string, and return the corresponding time_t value. */
+static time_t
+parse_date_string(const char *datetime)
+{
+ char month_str[32] = {0};
+ int second, minute, hour, day, month, year;
+ time_t result = (time_t)0;
+ struct tm tm;
+
+ if ((sscanf(datetime,
+ "%d/%3s/%d %d:%d:%d",
+ &day,
+ month_str,
+ &year,
+ &hour,
+ &minute,
+ &second)
+ == 6)
+ || (sscanf(datetime,
+ "%d %3s %d %d:%d:%d",
+ &day,
+ month_str,
+ &year,
+ &hour,
+ &minute,
+ &second)
+ == 6)
+ || (sscanf(datetime,
+ "%*3s, %d %3s %d %d:%d:%d",
+ &day,
+ month_str,
+ &year,
+ &hour,
+ &minute,
+ &second)
+ == 6)
+ || (sscanf(datetime,
+ "%d-%3s-%d %d:%d:%d",
+ &day,
+ month_str,
+ &year,
+ &hour,
+ &minute,
+ &second)
+ == 6)) {
+ month = get_month_index(month_str);
+ if ((month >= 0) && (year >= 1970)) {
+ memset(&tm, 0, sizeof(tm));
+ tm.tm_year = year - 1900;
+ tm.tm_mon = month;
+ tm.tm_mday = day;
+ tm.tm_hour = hour;
+ tm.tm_min = minute;
+ tm.tm_sec = second;
+ result = timegm(&tm);
+ }
+ }
+
+ return result;
+}
+#endif /* !NO_CACHING */
+
+
+/* Pre-process URIs according to RFC + protect against directory disclosure
+ * attacks by removing '..', excessive '/' and '\' characters */
+static void
+remove_dot_segments(char *inout)
+{
+ /* Windows backend protection
+ * (https://tools.ietf.org/html/rfc3986#section-7.3): Replace backslash
+ * in URI by slash */
+ char *out_end = inout;
+ char *in = inout;
+
+ if (!in) {
+ /* Param error. */
+ return;
+ }
+
+ while (*in) {
+ if (*in == '\\') {
+ *in = '/';
+ }
+ in++;
+ }
+
+ /* Algorithm "remove_dot_segments" from
+ * https://tools.ietf.org/html/rfc3986#section-5.2.4 */
+ /* Step 1:
+ * The input buffer is initialized.
+ * The output buffer is initialized to the empty string.
+ */
+ in = inout;
+
+ /* Step 2:
+ * While the input buffer is not empty, loop as follows:
+ */
+ /* Less than out_end of the inout buffer is used as output, so keep
+ * condition: out_end <= in */
+ while (*in) {
+ /* Step 2a:
+ * If the input buffer begins with a prefix of "../" or "./",
+ * then remove that prefix from the input buffer;
+ */
+ if (!strncmp(in, "../", 3)) {
+ in += 3;
+ } else if (!strncmp(in, "./", 2)) {
+ in += 2;
+ }
+ /* otherwise */
+ /* Step 2b:
+ * if the input buffer begins with a prefix of "/./" or "/.",
+ * where "." is a complete path segment, then replace that
+ * prefix with "/" in the input buffer;
+ */
+ else if (!strncmp(in, "/./", 3)) {
+ in += 2;
+ } else if (!strcmp(in, "/.")) {
+ in[1] = 0;
+ }
+ /* otherwise */
+ /* Step 2c:
+ * if the input buffer begins with a prefix of "/../" or "/..",
+ * where ".." is a complete path segment, then replace that
+ * prefix with "/" in the input buffer and remove the last
+ * segment and its preceding "/" (if any) from the output
+ * buffer;
+ */
+ else if (!strncmp(in, "/../", 4)) {
+ in += 3;
+ if (inout != out_end) {
+ /* remove last segment */
+ do {
+ out_end--;
+ } while ((inout != out_end) && (*out_end != '/'));
+ }
+ } else if (!strcmp(in, "/..")) {
+ in[1] = 0;
+ if (inout != out_end) {
+ /* remove last segment */
+ do {
+ out_end--;
+ } while ((inout != out_end) && (*out_end != '/'));
+ }
+ }
+ /* otherwise */
+ /* Step 2d:
+ * if the input buffer consists only of "." or "..", then remove
+ * that from the input buffer;
+ */
+ else if (!strcmp(in, ".") || !strcmp(in, "..")) {
+ *in = 0;
+ }
+ /* otherwise */
+ /* Step 2e:
+ * move the first path segment in the input buffer to the end of
+ * the output buffer, including the initial "/" character (if
+ * any) and any subsequent characters up to, but not including,
+ * the next "/" character or the end of the input buffer.
+ */
+ else {
+ do {
+ *out_end = *in;
+ out_end++;
+ in++;
+ } while ((*in != 0) && (*in != '/'));
+ }
+ }
+
+ /* Step 3:
+ * Finally, the output buffer is returned as the result of
+ * remove_dot_segments.
+ */
+ /* Terminate output */
+ *out_end = 0;
+
+ /* For Windows, the files/folders "x" and "x." (with a dot but without
+ * extension) are identical. Replace all "./" by "/" and remove a "." at
+ * the end. Also replace all "//" by "/". Repeat until there is no "./"
+ * or "//" anymore.
+ */
+ out_end = in = inout;
+ while (*in) {
+ if (*in == '.') {
+ /* remove . at the end or preceding of / */
+ char *in_ahead = in;
+ do {
+ in_ahead++;
+ } while (*in_ahead == '.');
+ if (*in_ahead == '/') {
+ in = in_ahead;
+ if ((out_end != inout) && (out_end[-1] == '/')) {
+ /* remove generated // */
+ out_end--;
+ }
+ } else if (*in_ahead == 0) {
+ in = in_ahead;
+ } else {
+ do {
+ *out_end++ = '.';
+ in++;
+ } while (in != in_ahead);
+ }
+ } else if (*in == '/') {
+ /* replace // by / */
+ *out_end++ = '/';
+ do {
+ in++;
+ } while (*in == '/');
+ } else {
+ *out_end++ = *in;
+ in++;
+ }
+ }
+ *out_end = 0;
+}
+
+
+static const struct {
+ const char *extension;
+ size_t ext_len;
+ const char *mime_type;
+} builtin_mime_types[] = {
+ /* IANA registered MIME types
+ * (http://www.iana.org/assignments/media-types)
+ * application types */
+ {".bin", 4, "application/octet-stream"},
+ {".cer", 4, "application/pkix-cert"},
+ {".crl", 4, "application/pkix-crl"},
+ {".crt", 4, "application/pkix-cert"},
+ {".deb", 4, "application/octet-stream"},
+ {".dmg", 4, "application/octet-stream"},
+ {".dll", 4, "application/octet-stream"},
+ {".doc", 4, "application/msword"},
+ {".eps", 4, "application/postscript"},
+ {".exe", 4, "application/octet-stream"},
+ {".iso", 4, "application/octet-stream"},
+ {".js", 3, "application/javascript"},
+ {".json", 5, "application/json"},
+ {".mjs", 4, "application/javascript"},
+ {".msi", 4, "application/octet-stream"},
+ {".pem", 4, "application/x-pem-file"},
+ {".pdf", 4, "application/pdf"},
+ {".ps", 3, "application/postscript"},
+ {".rtf", 4, "application/rtf"},
+ {".wasm", 5, "application/wasm"},
+ {".xhtml", 6, "application/xhtml+xml"},
+ {".xsl", 4, "application/xml"},
+ {".xslt", 5, "application/xml"},
+
+ /* fonts */
+ {".ttf", 4, "application/font-sfnt"},
+ {".cff", 4, "application/font-sfnt"},
+ {".otf", 4, "application/font-sfnt"},
+ {".aat", 4, "application/font-sfnt"},
+ {".sil", 4, "application/font-sfnt"},
+ {".pfr", 4, "application/font-tdpfr"},
+ {".woff", 5, "application/font-woff"},
+ {".woff2", 6, "application/font-woff2"},
+
+ /* audio */
+ {".mp3", 4, "audio/mpeg"},
+ {".oga", 4, "audio/ogg"},
+ {".ogg", 4, "audio/ogg"},
+
+ /* image */
+ {".gif", 4, "image/gif"},
+ {".ief", 4, "image/ief"},
+ {".jpeg", 5, "image/jpeg"},
+ {".jpg", 4, "image/jpeg"},
+ {".jpm", 4, "image/jpm"},
+ {".jpx", 4, "image/jpx"},
+ {".png", 4, "image/png"},
+ {".svg", 4, "image/svg+xml"},
+ {".tif", 4, "image/tiff"},
+ {".tiff", 5, "image/tiff"},
+
+ /* model */
+ {".wrl", 4, "model/vrml"},
+
+ /* text */
+ {".css", 4, "text/css"},
+ {".csv", 4, "text/csv"},
+ {".htm", 4, "text/html"},
+ {".html", 5, "text/html"},
+ {".sgm", 4, "text/sgml"},
+ {".shtm", 5, "text/html"},
+ {".shtml", 6, "text/html"},
+ {".txt", 4, "text/plain"},
+ {".xml", 4, "text/xml"},
+
+ /* video */
+ {".mov", 4, "video/quicktime"},
+ {".mp4", 4, "video/mp4"},
+ {".mpeg", 5, "video/mpeg"},
+ {".mpg", 4, "video/mpeg"},
+ {".ogv", 4, "video/ogg"},
+ {".qt", 3, "video/quicktime"},
+
+ /* not registered types
+ * (http://reference.sitepoint.com/html/mime-types-full,
+ * http://www.hansenb.pdx.edu/DMKB/dict/tutorials/mime_typ.php, ..) */
+ {".arj", 4, "application/x-arj-compressed"},
+ {".gz", 3, "application/x-gunzip"},
+ {".rar", 4, "application/x-arj-compressed"},
+ {".swf", 4, "application/x-shockwave-flash"},
+ {".tar", 4, "application/x-tar"},
+ {".tgz", 4, "application/x-tar-gz"},
+ {".torrent", 8, "application/x-bittorrent"},
+ {".ppt", 4, "application/x-mspowerpoint"},
+ {".xls", 4, "application/x-msexcel"},
+ {".zip", 4, "application/x-zip-compressed"},
+ {".aac",
+ 4,
+ "audio/aac"}, /* http://en.wikipedia.org/wiki/Advanced_Audio_Coding */
+ {".flac", 5, "audio/flac"},
+ {".aif", 4, "audio/x-aif"},
+ {".m3u", 4, "audio/x-mpegurl"},
+ {".mid", 4, "audio/x-midi"},
+ {".ra", 3, "audio/x-pn-realaudio"},
+ {".ram", 4, "audio/x-pn-realaudio"},
+ {".wav", 4, "audio/x-wav"},
+ {".bmp", 4, "image/bmp"},
+ {".ico", 4, "image/x-icon"},
+ {".pct", 4, "image/x-pct"},
+ {".pict", 5, "image/pict"},
+ {".rgb", 4, "image/x-rgb"},
+ {".webm", 5, "video/webm"}, /* http://en.wikipedia.org/wiki/WebM */
+ {".asf", 4, "video/x-ms-asf"},
+ {".avi", 4, "video/x-msvideo"},
+ {".m4v", 4, "video/x-m4v"},
+ {NULL, 0, NULL}};
+
+
+CIVETWEB_API const char *
+mg_get_builtin_mime_type(const char *path)
+{
+ const char *ext;
+ size_t i, path_len;
+
+ path_len = strlen(path);
+
+ for (i = 0; builtin_mime_types[i].extension != NULL; i++) {
+ ext = path + (path_len - builtin_mime_types[i].ext_len);
+ if ((path_len > builtin_mime_types[i].ext_len)
+ && (mg_strcasecmp(ext, builtin_mime_types[i].extension) == 0)) {
+ return builtin_mime_types[i].mime_type;
+ }
+ }
+
+ return "text/plain";
+}
+
+
+/* Look at the "path" extension and figure what mime type it has.
+ * Store mime type in the vector. */
+static void
+get_mime_type(struct mg_connection *conn, const char *path, struct vec *vec)
+{
+ struct vec ext_vec, mime_vec;
+ const char *list, *ext;
+ size_t path_len;
+
+ path_len = strlen(path);
+
+ if ((conn == NULL) || (vec == NULL)) {
+ if (vec != NULL) {
+ memset(vec, '\0', sizeof(struct vec));
+ }
+ return;
+ }
+
+ /* Scan user-defined mime types first, in case user wants to
+ * override default mime types. */
+ list = conn->dom_ctx->config[EXTRA_MIME_TYPES];
+ while ((list = next_option(list, &ext_vec, &mime_vec)) != NULL) {
+ /* ext now points to the path suffix */
+ ext = path + path_len - ext_vec.len;
+ if (mg_strncasecmp(ext, ext_vec.ptr, ext_vec.len) == 0) {
+ *vec = mime_vec;
+ return;
+ }
+ }
+
+ vec->ptr = mg_get_builtin_mime_type(path);
+ vec->len = strlen(vec->ptr);
+}
+
+
+/* Stringify binary data. Output buffer must be twice as big as input,
+ * because each byte takes 2 bytes in string representation */
+static void
+bin2str(char *to, const unsigned char *p, size_t len)
+{
+ static const char *hex = "0123456789abcdef";
+
+ for (; len--; p++) {
+ *to++ = hex[p[0] >> 4];
+ *to++ = hex[p[0] & 0x0f];
+ }
+ *to = '\0';
+}
+
+
+/* Return stringified MD5 hash for list of strings. Buffer must be 33 bytes.
+ */
+CIVETWEB_API char *
+mg_md5(char buf[33], ...)
+{
+ md5_byte_t hash[16];
+ const char *p;
+ va_list ap;
+ md5_state_t ctx;
+
+ md5_init(&ctx);
+
+ va_start(ap, buf);
+ while ((p = va_arg(ap, const char *)) != NULL) {
+ md5_append(&ctx, (const md5_byte_t *)p, strlen(p));
+ }
+ va_end(ap);
+
+ md5_finish(&ctx, hash);
+ bin2str(buf, hash, sizeof(hash));
+ return buf;
+}
+
+
+/* Check the user's password, return 1 if OK */
+static int
+check_password_digest(const char *method,
+ const char *ha1,
+ const char *uri,
+ const char *nonce,
+ const char *nc,
+ const char *cnonce,
+ const char *qop,
+ const char *response)
+{
+ char ha2[32 + 1], expected_response[32 + 1];
+
+ /* Some of the parameters may be NULL */
+ if ((method == NULL) || (nonce == NULL) || (nc == NULL) || (cnonce == NULL)
+ || (qop == NULL) || (response == NULL)) {
+ return 0;
+ }
+
+ /* NOTE(lsm): due to a bug in MSIE, we do not compare the URI */
+ if (strlen(response) != 32) {
+ return 0;
+ }
+
+ mg_md5(ha2, method, ":", uri, NULL);
+ mg_md5(expected_response,
+ ha1,
+ ":",
+ nonce,
+ ":",
+ nc,
+ ":",
+ cnonce,
+ ":",
+ qop,
+ ":",
+ ha2,
+ NULL);
+
+ return mg_strcasecmp(response, expected_response) == 0;
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+/* Use the global passwords file, if specified by auth_gpass option,
+ * or search for .htpasswd in the requested directory. */
+static void
+open_auth_file(struct mg_connection *conn,
+ const char *path,
+ struct mg_file *filep)
+{
+ if ((conn != NULL) && (conn->dom_ctx != NULL)) {
+ char name[UTF8_PATH_MAX];
+ const char *p, *e,
+ *gpass = conn->dom_ctx->config[GLOBAL_PASSWORDS_FILE];
+ int truncated;
+
+ if (gpass != NULL) {
+ /* Use global passwords file */
+ if (!mg_fopen(conn, gpass, MG_FOPEN_MODE_READ, filep)) {
+#if defined(DEBUG)
+ /* Use mg_cry_internal here, since gpass has been
+ * configured. */
+ mg_cry_internal(conn, "fopen(%s): %s", gpass, strerror(ERRNO));
+#endif
+ }
+ /* Important: using local struct mg_file to test path for
+ * is_directory flag. If filep is used, mg_stat() makes it
+ * appear as if auth file was opened.
+ * TODO(mid): Check if this is still required after rewriting
+ * mg_stat */
+ } else if (mg_stat(conn, path, &filep->stat)
+ && filep->stat.is_directory) {
+ mg_snprintf(conn,
+ &truncated,
+ name,
+ sizeof(name),
+ "%s/%s",
+ path,
+ PASSWORDS_FILE_NAME);
+
+ if (truncated || !mg_fopen(conn, name, MG_FOPEN_MODE_READ, filep)) {
+#if defined(DEBUG)
+ /* Don't use mg_cry_internal here, but only a trace, since
+ * this is a typical case. It will occur for every directory
+ * without a password file. */
+ DEBUG_TRACE("fopen(%s): %s", name, strerror(ERRNO));
+#endif
+ }
+ } else {
+ /* Try to find .htpasswd in requested directory. */
+ for (p = path, e = p + strlen(p) - 1; e > p; e--) {
+ if (e[0] == '/') {
+ break;
+ }
+ }
+ mg_snprintf(conn,
+ &truncated,
+ name,
+ sizeof(name),
+ "%.*s/%s",
+ (int)(e - p),
+ p,
+ PASSWORDS_FILE_NAME);
+
+ if (truncated || !mg_fopen(conn, name, MG_FOPEN_MODE_READ, filep)) {
+#if defined(DEBUG)
+ /* Don't use mg_cry_internal here, but only a trace, since
+ * this is a typical case. It will occur for every directory
+ * without a password file. */
+ DEBUG_TRACE("fopen(%s): %s", name, strerror(ERRNO));
+#endif
+ }
+ }
+ }
+}
+#endif /* NO_FILESYSTEMS */
+
+
+/* Parsed Authorization header */
+struct auth_header {
+ char *user;
+ int type; /* 1 = basic, 2 = digest */
+ char *plain_password; /* Basic only */
+ char *uri, *cnonce, *response, *qop, *nc, *nonce; /* Digest only */
+};
+
+
+/* Return 1 on success. Always initializes the auth_header structure. */
+static int
+parse_auth_header(struct mg_connection *conn,
+ char *buf,
+ size_t buf_size,
+ struct auth_header *auth_header)
+{
+ char *name, *value, *s;
+ const char *ah;
+ uint64_t nonce;
+
+ if (!auth_header || !conn) {
+ return 0;
+ }
+
+ (void)memset(auth_header, 0, sizeof(*auth_header));
+ ah = mg_get_header(conn, "Authorization");
+
+ if (ah == NULL) {
+ /* No Authorization header at all */
+ return 0;
+ }
+ if (0 == mg_strncasecmp(ah, "Basic ", 6)) {
+ /* Basic Auth (we never asked for this, but some client may send it) */
+ char *split;
+ const char *userpw_b64 = ah + 6;
+ size_t userpw_b64_len = strlen(userpw_b64);
+ size_t buf_len_r = buf_size;
+ if (mg_base64_decode(
+ userpw_b64, userpw_b64_len, (unsigned char *)buf, &buf_len_r)
+ != -1) {
+ return 0; /* decode error */
+ }
+ split = strchr(buf, ':');
+ if (!split) {
+ return 0; /* Format error */
+ }
+
+ /* Separate string at ':' */
+ *split = 0;
+
+ /* User name is before ':', Password is after ':' */
+ auth_header->user = buf;
+ auth_header->type = 1;
+ auth_header->plain_password = split + 1;
+
+ return 1;
+
+ } else if (0 == mg_strncasecmp(ah, "Digest ", 7)) {
+ /* Digest Auth ... implemented below */
+ auth_header->type = 2;
+
+ } else {
+ /* Unknown or invalid Auth method */
+ return 0;
+ }
+
+ /* Make modifiable copy of the auth header */
+ (void)mg_strlcpy(buf, ah + 7, buf_size);
+ s = buf;
+
+ /* Parse authorization header */
+ for (;;) {
+ /* Gobble initial spaces */
+ while (isspace((unsigned char)*s)) {
+ s++;
+ }
+ name = skip_quoted(&s, "=", " ", 0);
+ /* Value is either quote-delimited, or ends at first comma or space.
+ */
+ if (s[0] == '\"') {
+ s++;
+ value = skip_quoted(&s, "\"", " ", '\\');
+ if (s[0] == ',') {
+ s++;
+ }
+ } else {
+ value = skip_quoted(&s, ", ", " ", 0); /* IE uses commas, FF
+ * uses spaces */
+ }
+ if (*name == '\0') {
+ break;
+ }
+
+ if (!strcmp(name, "username")) {
+ auth_header->user = value;
+ } else if (!strcmp(name, "cnonce")) {
+ auth_header->cnonce = value;
+ } else if (!strcmp(name, "response")) {
+ auth_header->response = value;
+ } else if (!strcmp(name, "uri")) {
+ auth_header->uri = value;
+ } else if (!strcmp(name, "qop")) {
+ auth_header->qop = value;
+ } else if (!strcmp(name, "nc")) {
+ auth_header->nc = value;
+ } else if (!strcmp(name, "nonce")) {
+ auth_header->nonce = value;
+ }
+ }
+
+#if !defined(NO_NONCE_CHECK)
+ /* Read the nonce from the response. */
+ if (auth_header->nonce == NULL) {
+ return 0;
+ }
+ s = NULL;
+ nonce = strtoull(auth_header->nonce, &s, 10);
+ if ((s == NULL) || (*s != 0)) {
+ return 0;
+ }
+
+ /* Convert the nonce from the client to a number. */
+ nonce ^= conn->dom_ctx->auth_nonce_mask;
+
+ /* The converted number corresponds to the time the nounce has been
+ * created. This should not be earlier than the server start. */
+ /* Server side nonce check is valuable in all situations but one:
+ * if the server restarts frequently, but the client should not see
+ * that, so the server should accept nonces from previous starts. */
+ /* However, the reasonable default is to not accept a nonce from a
+ * previous start, so if anyone changed the access rights between
+ * two restarts, a new login is required. */
+ if (nonce < (uint64_t)conn->phys_ctx->start_time) {
+ /* nonce is from a previous start of the server and no longer valid
+ * (replay attack?) */
+ return 0;
+ }
+ /* Check if the nonce is too high, so it has not (yet) been used by the
+ * server. */
+ if (nonce >= ((uint64_t)conn->phys_ctx->start_time
+ + conn->dom_ctx->nonce_count)) {
+ return 0;
+ }
+#else
+ (void)nonce;
+#endif
+
+ return (auth_header->user != NULL);
+}
+
+
+static const char *
+mg_fgets(char *buf, size_t size, struct mg_file *filep)
+{
+ if (!filep) {
+ return NULL;
+ }
+
+ if (filep->access.fp != NULL) {
+ return fgets(buf, (int)size, filep->access.fp);
+ } else {
+ return NULL;
+ }
+}
+
+/* Define the initial recursion depth for procesesing htpasswd files that
+ * include other htpasswd
+ * (or even the same) files. It is not difficult to provide a file or files
+ * s.t. they force civetweb
+ * to infinitely recurse and then crash.
+ */
+#define INITIAL_DEPTH 9
+#if INITIAL_DEPTH <= 0
+#error Bad INITIAL_DEPTH for recursion, set to at least 1
+#endif
+
+#if !defined(NO_FILESYSTEMS)
+struct read_auth_file_struct {
+ struct mg_connection *conn;
+ struct auth_header auth_header;
+ const char *domain;
+ char buf[256 + 256 + 40];
+ const char *f_user;
+ const char *f_domain;
+ const char *f_ha1;
+};
+
+
+static int
+read_auth_file(struct mg_file *filep,
+ struct read_auth_file_struct *workdata,
+ int depth)
+{
+ int is_authorized = 0;
+ struct mg_file fp;
+ size_t l;
+
+ if (!filep || !workdata || (0 == depth)) {
+ return 0;
+ }
+
+ /* Loop over passwords file */
+ while (mg_fgets(workdata->buf, sizeof(workdata->buf), filep) != NULL) {
+ l = strlen(workdata->buf);
+ while (l > 0) {
+ if (isspace((unsigned char)workdata->buf[l - 1])
+ || iscntrl((unsigned char)workdata->buf[l - 1])) {
+ l--;
+ workdata->buf[l] = 0;
+ } else
+ break;
+ }
+ if (l < 1) {
+ continue;
+ }
+
+ workdata->f_user = workdata->buf;
+
+ if (workdata->f_user[0] == ':') {
+ /* user names may not contain a ':' and may not be empty,
+ * so lines starting with ':' may be used for a special purpose
+ */
+ if (workdata->f_user[1] == '#') {
+ /* :# is a comment */
+ continue;
+ } else if (!strncmp(workdata->f_user + 1, "include=", 8)) {
+ if (mg_fopen(workdata->conn,
+ workdata->f_user + 9,
+ MG_FOPEN_MODE_READ,
+ &fp)) {
+ is_authorized = read_auth_file(&fp, workdata, depth - 1);
+ (void)mg_fclose(
+ &fp.access); /* ignore error on read only file */
+
+ /* No need to continue processing files once we have a
+ * match, since nothing will reset it back
+ * to 0.
+ */
+ if (is_authorized) {
+ return is_authorized;
+ }
+ } else {
+ mg_cry_internal(workdata->conn,
+ "%s: cannot open authorization file: %s",
+ __func__,
+ workdata->buf);
+ }
+ continue;
+ }
+ /* everything is invalid for the moment (might change in the
+ * future) */
+ mg_cry_internal(workdata->conn,
+ "%s: syntax error in authorization file: %s",
+ __func__,
+ workdata->buf);
+ continue;
+ }
+
+ workdata->f_domain = strchr(workdata->f_user, ':');
+ if (workdata->f_domain == NULL) {
+ mg_cry_internal(workdata->conn,
+ "%s: syntax error in authorization file: %s",
+ __func__,
+ workdata->buf);
+ continue;
+ }
+ *(char *)(workdata->f_domain) = 0;
+ (workdata->f_domain)++;
+
+ workdata->f_ha1 = strchr(workdata->f_domain, ':');
+ if (workdata->f_ha1 == NULL) {
+ mg_cry_internal(workdata->conn,
+ "%s: syntax error in authorization file: %s",
+ __func__,
+ workdata->buf);
+ continue;
+ }
+ *(char *)(workdata->f_ha1) = 0;
+ (workdata->f_ha1)++;
+
+ if (!strcmp(workdata->auth_header.user, workdata->f_user)
+ && !strcmp(workdata->domain, workdata->f_domain)) {
+ switch (workdata->auth_header.type) {
+ case 1: /* Basic */
+ {
+ char md5[33];
+ mg_md5(md5,
+ workdata->f_user,
+ ":",
+ workdata->domain,
+ ":",
+ workdata->auth_header.plain_password,
+ NULL);
+ return 0 == memcmp(workdata->f_ha1, md5, 33);
+ }
+ case 2: /* Digest */
+ return check_password_digest(
+ workdata->conn->request_info.request_method,
+ workdata->f_ha1,
+ workdata->auth_header.uri,
+ workdata->auth_header.nonce,
+ workdata->auth_header.nc,
+ workdata->auth_header.cnonce,
+ workdata->auth_header.qop,
+ workdata->auth_header.response);
+ default: /* None/Other/Unknown */
+ return 0;
+ }
+ }
+ }
+
+ return is_authorized;
+}
+
+
+/* Authorize against the opened passwords file. Return 1 if authorized. */
+static int
+authorize(struct mg_connection *conn, struct mg_file *filep, const char *realm)
+{
+ struct read_auth_file_struct workdata;
+ char buf[MG_BUF_LEN];
+
+ if (!conn || !conn->dom_ctx) {
+ return 0;
+ }
+
+ memset(&workdata, 0, sizeof(workdata));
+ workdata.conn = conn;
+
+ if (!parse_auth_header(conn, buf, sizeof(buf), &workdata.auth_header)) {
+ return 0;
+ }
+
+ /* CGI needs it as REMOTE_USER */
+ conn->request_info.remote_user =
+ mg_strdup_ctx(workdata.auth_header.user, conn->phys_ctx);
+
+ if (realm) {
+ workdata.domain = realm;
+ } else {
+ workdata.domain = conn->dom_ctx->config[AUTHENTICATION_DOMAIN];
+ }
+
+ return read_auth_file(filep, &workdata, INITIAL_DEPTH);
+}
+
+
+/* Public function to check http digest authentication header */
+CIVETWEB_API int
+mg_check_digest_access_authentication(struct mg_connection *conn,
+ const char *realm,
+ const char *filename)
+{
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ int auth;
+
+ if (!conn || !filename) {
+ return -1;
+ }
+ if (!mg_fopen(conn, filename, MG_FOPEN_MODE_READ, &file)) {
+ return -2;
+ }
+
+ auth = authorize(conn, &file, realm);
+
+ mg_fclose(&file.access);
+
+ return auth;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+/* Return 1 if request is authorised, 0 otherwise. */
+static int
+check_authorization(struct mg_connection *conn, const char *path)
+{
+#if !defined(NO_FILESYSTEMS)
+ char fname[UTF8_PATH_MAX];
+ struct vec uri_vec, filename_vec;
+ const char *list;
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ int authorized = 1, truncated;
+
+ if (!conn || !conn->dom_ctx) {
+ return 0;
+ }
+
+ list = conn->dom_ctx->config[PROTECT_URI];
+ while ((list = next_option(list, &uri_vec, &filename_vec)) != NULL) {
+ if (!memcmp(conn->request_info.local_uri, uri_vec.ptr, uri_vec.len)) {
+ mg_snprintf(conn,
+ &truncated,
+ fname,
+ sizeof(fname),
+ "%.*s",
+ (int)filename_vec.len,
+ filename_vec.ptr);
+
+ if (truncated
+ || !mg_fopen(conn, fname, MG_FOPEN_MODE_READ, &file)) {
+ mg_cry_internal(conn,
+ "%s: cannot open %s: %s",
+ __func__,
+ fname,
+ strerror(errno));
+ }
+ break;
+ }
+ }
+
+ if (!is_file_opened(&file.access)) {
+ open_auth_file(conn, path, &file);
+ }
+
+ if (is_file_opened(&file.access)) {
+ authorized = authorize(conn, &file, NULL);
+ (void)mg_fclose(&file.access); /* ignore error on read only file */
+ }
+
+ return authorized;
+#else
+ (void)conn;
+ (void)path;
+ return 1;
+#endif /* NO_FILESYSTEMS */
+}
+
+
+/* Internal function. Assumes conn is valid */
+static void
+send_authorization_request(struct mg_connection *conn, const char *realm)
+{
+ uint64_t nonce = (uint64_t)(conn->phys_ctx->start_time);
+ int trunc = 0;
+ char buf[128];
+
+ if (!realm) {
+ realm = conn->dom_ctx->config[AUTHENTICATION_DOMAIN];
+ }
+
+ mg_lock_context(conn->phys_ctx);
+ nonce += conn->dom_ctx->nonce_count;
+ ++conn->dom_ctx->nonce_count;
+ mg_unlock_context(conn->phys_ctx);
+
+ nonce ^= conn->dom_ctx->auth_nonce_mask;
+ conn->must_close = 1;
+
+ /* Create 401 response */
+ mg_response_header_start(conn, 401);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+
+ /* Content for "WWW-Authenticate" header */
+ mg_snprintf(conn,
+ &trunc,
+ buf,
+ sizeof(buf),
+ "Digest qop=\"auth\", realm=\"%s\", "
+ "nonce=\"%" UINT64_FMT "\"",
+ realm,
+ nonce);
+
+ if (!trunc) {
+ /* !trunc should always be true */
+ mg_response_header_add(conn, "WWW-Authenticate", buf, -1);
+ }
+
+ /* Send all headers */
+ mg_response_header_send(conn);
+}
+
+
+/* Interface function. Parameters are provided by the user, so do
+ * at least some basic checks.
+ */
+CIVETWEB_API int
+mg_send_digest_access_authentication_request(struct mg_connection *conn,
+ const char *realm)
+{
+ if (conn && conn->dom_ctx) {
+ send_authorization_request(conn, realm);
+ return 0;
+ }
+ return -1;
+}
+
+
+#if !defined(NO_FILES)
+static int
+is_authorized_for_put(struct mg_connection *conn)
+{
+ int ret = 0;
+
+ if (conn) {
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ const char *passfile = conn->dom_ctx->config[PUT_DELETE_PASSWORDS_FILE];
+
+ if (passfile != NULL
+ && mg_fopen(conn, passfile, MG_FOPEN_MODE_READ, &file)) {
+ ret = authorize(conn, &file, NULL);
+ (void)mg_fclose(&file.access); /* ignore error on read only file */
+ }
+ }
+
+ DEBUG_TRACE("file write authorization: %i", ret);
+ return ret;
+}
+#endif
+
+
+CIVETWEB_API int
+mg_modify_passwords_file_ha1(const char *fname,
+ const char *domain,
+ const char *user,
+ const char *ha1)
+{
+ int found = 0, i, result = 1;
+ char line[512], u[256], d[256], h[256];
+ struct stat st = {0};
+ FILE *fp = NULL;
+ char *temp_file = NULL;
+ int temp_file_offs = 0;
+
+ /* Regard empty password as no password - remove user record. */
+ if ((ha1 != NULL) && (ha1[0] == '\0')) {
+ ha1 = NULL;
+ }
+
+ /* Other arguments must not be empty */
+ if ((fname == NULL) || (domain == NULL) || (user == NULL)) {
+ return 0;
+ }
+
+ /* Using the given file format, user name and domain must not contain
+ * the ':' character */
+ if (strchr(user, ':') != NULL) {
+ return 0;
+ }
+ if (strchr(domain, ':') != NULL) {
+ return 0;
+ }
+
+ /* Do not allow control characters like newline in user name and domain.
+ * Do not allow excessively long names either. */
+ for (i = 0; ((i < 255) && (user[i] != 0)); i++) {
+ if (iscntrl((unsigned char)user[i])) {
+ return 0;
+ }
+ }
+ if (user[i]) {
+ return 0; /* user name too long */
+ }
+ for (i = 0; ((i < 255) && (domain[i] != 0)); i++) {
+ if (iscntrl((unsigned char)domain[i])) {
+ return 0;
+ }
+ }
+ if (domain[i]) {
+ return 0; /* domain name too long */
+ }
+
+ /* The maximum length of the path to the password file is limited */
+ if (strlen(fname) >= UTF8_PATH_MAX) {
+ return 0;
+ }
+
+ /* Check if the file exists, and get file size */
+ if (0 == stat(fname, &st)) {
+ int temp_buf_len;
+ if (st.st_size > 10485760) {
+ /* Some funster provided a >10 MB text file */
+ return 0;
+ }
+
+ /* Add enough space for one more line */
+ temp_buf_len = (int)st.st_size + 1024;
+
+ /* Allocate memory (instead of using a temporary file) */
+ temp_file = (char *)mg_calloc((size_t)temp_buf_len, 1);
+ if (!temp_file) {
+ /* Out of memory */
+ return 0;
+ }
+
+ /* File exists. Read it into a memory buffer. */
+ fp = fopen(fname, "r");
+ if (fp == NULL) {
+ /* Cannot read file. No permission? */
+ mg_free(temp_file);
+ return 0;
+ }
+
+ /* Read content and store in memory */
+ while ((fgets(line, sizeof(line), fp) != NULL)
+ && ((temp_file_offs + 600) < temp_buf_len)) {
+ /* file format is "user:domain:hash\n" */
+ if (sscanf(line, "%255[^:]:%255[^:]:%255s", u, d, h) != 3) {
+ continue;
+ }
+ u[255] = 0;
+ d[255] = 0;
+ h[255] = 0;
+
+ if (!strcmp(u, user) && !strcmp(d, domain)) {
+ /* Found the user: change the password hash or drop the user
+ */
+ if ((ha1 != NULL) && (!found)) {
+ i = sprintf(temp_file + temp_file_offs,
+ "%s:%s:%s\n",
+ user,
+ domain,
+ ha1);
+ if (i < 1) {
+ fclose(fp);
+ mg_free(temp_file);
+ return 0;
+ }
+ temp_file_offs += i;
+ }
+ found = 1;
+ } else {
+ /* Copy existing user, including password hash */
+ i = sprintf(temp_file + temp_file_offs, "%s:%s:%s\n", u, d, h);
+ if (i < 1) {
+ fclose(fp);
+ mg_free(temp_file);
+ return 0;
+ }
+ temp_file_offs += i;
+ }
+ }
+ fclose(fp);
+ }
+
+ /* Create new file */
+ fp = fopen(fname, "w");
+ if (!fp) {
+ mg_free(temp_file);
+ return 0;
+ }
+
+#if !defined(_WIN32)
+ /* On Linux & co., restrict file read/write permissions to the owner */
+ if (fchmod(fileno(fp), S_IRUSR | S_IWUSR) != 0) {
+ result = 0;
+ }
+#endif
+
+ if ((temp_file != NULL) && (temp_file_offs > 0)) {
+ /* Store buffered content of old file */
+ if (fwrite(temp_file, 1, (size_t)temp_file_offs, fp)
+ != (size_t)temp_file_offs) {
+ result = 0;
+ }
+ }
+
+ /* If new user, just add it */
+ if ((ha1 != NULL) && (!found)) {
+ if (fprintf(fp, "%s:%s:%s\n", user, domain, ha1) < 6) {
+ result = 0;
+ }
+ }
+
+ /* All data written */
+ if (fclose(fp) != 0) {
+ result = 0;
+ }
+
+ mg_free(temp_file);
+ return result;
+}
+
+
+CIVETWEB_API int
+mg_modify_passwords_file(const char *fname,
+ const char *domain,
+ const char *user,
+ const char *pass)
+{
+ char ha1buf[33];
+ if ((fname == NULL) || (domain == NULL) || (user == NULL)) {
+ return 0;
+ }
+ if ((pass == NULL) || (pass[0] == 0)) {
+ return mg_modify_passwords_file_ha1(fname, domain, user, NULL);
+ }
+
+ mg_md5(ha1buf, user, ":", domain, ":", pass, NULL);
+ return mg_modify_passwords_file_ha1(fname, domain, user, ha1buf);
+}
+
+
+static int
+is_valid_port(unsigned long port)
+{
+ return (port <= 0xffff);
+}
+
+
+static int
+mg_inet_pton(int af, const char *src, void *dst, size_t dstlen, int resolve_src)
+{
+ struct addrinfo hints, *res, *ressave;
+ int func_ret = 0;
+ int gai_ret;
+
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = af;
+ if (!resolve_src) {
+ hints.ai_flags = AI_NUMERICHOST;
+ }
+
+ gai_ret = getaddrinfo(src, NULL, &hints, &res);
+ if (gai_ret != 0) {
+ /* gai_strerror could be used to convert gai_ret to a string */
+ /* POSIX return values: see
+ * http://pubs.opengroup.org/onlinepubs/9699919799/functions/freeaddrinfo.html
+ */
+ /* Windows return values: see
+ * https://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx
+ */
+ return 0;
+ }
+
+ ressave = res;
+
+ while (res) {
+ if ((dstlen >= (size_t)res->ai_addrlen)
+ && (res->ai_addr->sa_family == af)) {
+ memcpy(dst, res->ai_addr, res->ai_addrlen);
+ func_ret = 1;
+ }
+ res = res->ai_next;
+ }
+
+ freeaddrinfo(ressave);
+ return func_ret;
+}
+
+
+static int
+connect_socket(
+ struct mg_context *ctx /* may be NULL */,
+ const char *host,
+ int port, /* 1..65535, or -99 for domain sockets (may be changed) */
+ int use_ssl, /* 0 or 1 */
+ struct mg_error_data *error,
+ SOCKET *sock /* output: socket, must not be NULL */,
+ union usa *sa /* output: socket address, must not be NULL */
+)
+{
+ int ip_ver = 0;
+ int conn_ret = -1;
+ int sockerr = 0;
+ *sock = INVALID_SOCKET;
+ memset(sa, 0, sizeof(*sa));
+
+ if (host == NULL) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "NULL host");
+ }
+ return 0;
+ }
+
+#if defined(USE_X_DOM_SOCKET)
+ if (port == -99) {
+ /* Unix domain socket */
+ size_t hostlen = strlen(host);
+ if (hostlen >= sizeof(sa->sun.sun_path)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "host length exceeds limit");
+ }
+ return 0;
+ }
+ } else
+#endif
+ if ((port <= 0) || !is_valid_port((unsigned)port)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "invalid port");
+ }
+ return 0;
+ }
+
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) && !defined(USE_GNUTLS) \
+ && !defined(NO_SSL_DL)
+#if defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0)
+ if (use_ssl && (TLS_client_method == NULL)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_LIBRARY_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "SSL is not initialized");
+ }
+ return 0;
+ }
+#else
+ if (use_ssl && (SSLv23_client_method == NULL)) {
+ if (error != 0) {
+ error->code = MG_ERROR_DATA_CODE_INIT_LIBRARY_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "SSL is not initialized");
+ }
+ return 0;
+ }
+#endif /* OPENSSL_API_1_1 || OPENSSL_API_3_0*/
+#else
+ (void)use_ssl;
+#endif /* NO SSL */
+
+#if defined(USE_X_DOM_SOCKET)
+ if (port == -99) {
+ size_t hostlen = strlen(host);
+ /* check (hostlen < sizeof(sun.sun_path)) already passed above */
+ ip_ver = -99;
+ sa->sun.sun_family = AF_UNIX;
+ memset(sa->sun.sun_path, 0, sizeof(sa->sun.sun_path));
+ memcpy(sa->sun.sun_path, host, hostlen);
+ } else
+#endif
+ if (mg_inet_pton(AF_INET, host, &sa->sin, sizeof(sa->sin), 1)) {
+ sa->sin.sin_port = htons((uint16_t)port);
+ ip_ver = 4;
+#if defined(USE_IPV6)
+ } else if (mg_inet_pton(AF_INET6, host, &sa->sin6, sizeof(sa->sin6), 1)) {
+ sa->sin6.sin6_port = htons((uint16_t)port);
+ ip_ver = 6;
+ } else if (host[0] == '[') {
+ /* While getaddrinfo on Windows will work with [::1],
+ * getaddrinfo on Linux only works with ::1 (without []). */
+ size_t l = strlen(host + 1);
+ char *h = (l > 1) ? mg_strdup_ctx(host + 1, ctx) : NULL;
+ if (h) {
+ h[l - 1] = 0;
+ if (mg_inet_pton(AF_INET6, h, &sa->sin6, sizeof(sa->sin6), 0)) {
+ sa->sin6.sin6_port = htons((uint16_t)port);
+ ip_ver = 6;
+ }
+ mg_free(h);
+ }
+#endif
+ }
+
+ if (ip_ver == 0) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_HOST_NOT_FOUND;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "host not found");
+ }
+ return 0;
+ }
+
+ if (ip_ver == 4) {
+ *sock = socket(PF_INET, SOCK_STREAM, 0);
+ }
+#if defined(USE_IPV6)
+ else if (ip_ver == 6) {
+ *sock = socket(PF_INET6, SOCK_STREAM, 0);
+ }
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ else if (ip_ver == -99) {
+ *sock = socket(AF_UNIX, SOCK_STREAM, 0);
+ }
+#endif
+
+ if (*sock == INVALID_SOCKET) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "socket(): %s",
+ strerror(ERRNO));
+ }
+ return 0;
+ }
+
+ if (0 != set_non_blocking_mode(*sock)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "Cannot set socket to non-blocking: %s",
+ strerror(ERRNO));
+ }
+ closesocket(*sock);
+ *sock = INVALID_SOCKET;
+ return 0;
+ }
+
+ set_close_on_exec(*sock, NULL, ctx);
+
+ if (ip_ver == 4) {
+ /* connected with IPv4 */
+ conn_ret = connect(*sock,
+ (struct sockaddr *)((void *)&sa->sin),
+ sizeof(sa->sin));
+ }
+#if defined(USE_IPV6)
+ else if (ip_ver == 6) {
+ /* connected with IPv6 */
+ conn_ret = connect(*sock,
+ (struct sockaddr *)((void *)&sa->sin6),
+ sizeof(sa->sin6));
+ }
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ else if (ip_ver == -99) {
+ /* connected to domain socket */
+ conn_ret = connect(*sock,
+ (struct sockaddr *)((void *)&sa->sun),
+ sizeof(sa->sun));
+ }
+#endif
+
+ if (conn_ret != 0) {
+ sockerr = ERRNO;
+ }
+
+#if defined(_WIN32)
+ if ((conn_ret != 0) && (sockerr == WSAEWOULDBLOCK)) {
+#else
+ if ((conn_ret != 0) && (sockerr == EINPROGRESS)) {
+#endif
+ /* Data for getsockopt */
+ void *psockerr = &sockerr;
+ int ret;
+
+#if defined(_WIN32)
+ int len = (int)sizeof(sockerr);
+#else
+ socklen_t len = (socklen_t)sizeof(sockerr);
+#endif
+
+ /* Data for poll */
+ struct mg_pollfd pfd[2];
+ int pollres;
+ int ms_wait = 10000; /* 10 second timeout */
+ stop_flag_t nonstop = 0; /* STOP_FLAG_ASSIGN(&nonstop, 0); */
+ unsigned int num_sock = 1; /* use one or two sockets */
+
+ /* For a non-blocking socket, the connect sequence is:
+ * 1) call connect (will not block)
+ * 2) wait until the socket is ready for writing (select or poll)
+ * 3) check connection state with getsockopt
+ */
+ pfd[0].fd = *sock;
+ pfd[0].events = POLLOUT;
+
+ if (ctx && (ctx->context_type == CONTEXT_SERVER)) {
+ pfd[num_sock].fd = ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ pollres =
+ mg_poll(pfd, num_sock, ms_wait, ctx ? &(ctx->stop_flag) : &nonstop);
+
+ if (pollres != 1) {
+ /* Not connected */
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_CONNECT_TIMEOUT;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "connect(%s:%d): timeout",
+ host,
+ port);
+ }
+ closesocket(*sock);
+ *sock = INVALID_SOCKET;
+ return 0;
+ }
+
+#if defined(_WIN32)
+ ret = getsockopt(*sock, SOL_SOCKET, SO_ERROR, (char *)psockerr, &len);
+#else
+ ret = getsockopt(*sock, SOL_SOCKET, SO_ERROR, psockerr, &len);
+#endif
+
+ if ((ret == 0) && (sockerr == 0)) {
+ conn_ret = 0;
+ }
+ }
+
+ if (conn_ret != 0) {
+ /* Not connected */
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_CONNECT_FAILED;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "connect(%s:%d): error %s",
+ host,
+ port,
+ strerror(sockerr));
+ }
+ closesocket(*sock);
+ *sock = INVALID_SOCKET;
+ return 0;
+ }
+
+ return 1;
+}
+
+
+CIVETWEB_API int
+mg_url_encode(const char *src, char *dst, size_t dst_len)
+{
+ static const char *dont_escape = "._-$,;~()";
+ static const char *hex = "0123456789abcdef";
+ char *pos = dst;
+ const char *end = dst + dst_len - 1;
+
+ for (; ((*src != '\0') && (pos < end)); src++, pos++) {
+ if (isalnum((unsigned char)*src)
+ || (strchr(dont_escape, *src) != NULL)) {
+ *pos = *src;
+ } else if (pos + 2 < end) {
+ pos[0] = '%';
+ pos[1] = hex[(unsigned char)*src >> 4];
+ pos[2] = hex[(unsigned char)*src & 0xf];
+ pos += 2;
+ } else {
+ break;
+ }
+ }
+
+ *pos = '\0';
+ return (*src == '\0') ? (int)(pos - dst) : -1;
+}
+
+/* Return 0 on success, non-zero if an error occurs. */
+
+static int
+print_dir_entry(struct mg_connection *conn, struct de *de)
+{
+ size_t namesize, escsize, i;
+ char *href, *esc, *p;
+ char size[64], mod[64];
+#if defined(REENTRANT_TIME)
+ struct tm _tm;
+ struct tm *tm = &_tm;
+#else
+ struct tm *tm;
+#endif
+
+ /* Estimate worst case size for encoding and escaping */
+ namesize = strlen(de->file_name) + 1;
+ escsize = de->file_name[strcspn(de->file_name, "&<>")] ? namesize * 5 : 0;
+ href = (char *)mg_malloc(namesize * 3 + escsize);
+ if (href == NULL) {
+ return -1;
+ }
+ mg_url_encode(de->file_name, href, namesize * 3);
+ esc = NULL;
+ if (escsize > 0) {
+ /* HTML escaping needed */
+ esc = href + namesize * 3;
+ for (i = 0, p = esc; de->file_name[i]; i++, p += strlen(p)) {
+ mg_strlcpy(p, de->file_name + i, 2);
+ if (*p == '&') {
+ strcpy(p, "&");
+ } else if (*p == '<') {
+ strcpy(p, "<");
+ } else if (*p == '>') {
+ strcpy(p, ">");
+ }
+ }
+ }
+
+ if (de->file.is_directory) {
+ mg_snprintf(conn,
+ NULL, /* Buffer is big enough */
+ size,
+ sizeof(size),
+ "%s",
+ "[DIRECTORY]");
+ } else {
+ /* We use (signed) cast below because MSVC 6 compiler cannot
+ * convert unsigned __int64 to double. Sigh. */
+ if (de->file.size < 1024) {
+ mg_snprintf(conn,
+ NULL, /* Buffer is big enough */
+ size,
+ sizeof(size),
+ "%d",
+ (int)de->file.size);
+ } else if (de->file.size < 0x100000) {
+ mg_snprintf(conn,
+ NULL, /* Buffer is big enough */
+ size,
+ sizeof(size),
+ "%.1fk",
+ (double)de->file.size / 1024.0);
+ } else if (de->file.size < 0x40000000) {
+ mg_snprintf(conn,
+ NULL, /* Buffer is big enough */
+ size,
+ sizeof(size),
+ "%.1fM",
+ (double)de->file.size / 1048576);
+ } else {
+ mg_snprintf(conn,
+ NULL, /* Buffer is big enough */
+ size,
+ sizeof(size),
+ "%.1fG",
+ (double)de->file.size / 1073741824);
+ }
+ }
+
+ /* Note: mg_snprintf will not cause a buffer overflow above.
+ * So, string truncation checks are not required here. */
+
+#if defined(REENTRANT_TIME)
+ localtime_r(&de->file.last_modified, tm);
+#else
+ tm = localtime(&de->file.last_modified);
+#endif
+ if (tm != NULL) {
+ strftime(mod, sizeof(mod), "%d-%b-%Y %H:%M", tm);
+ } else {
+ mg_strlcpy(mod, "01-Jan-1970 00:00", sizeof(mod));
+ }
+ mg_printf(conn,
+ "%s%s "
+ " %s %s \n",
+ href,
+ de->file.is_directory ? "/" : "",
+ esc ? esc : de->file_name,
+ de->file.is_directory ? "/" : "",
+ mod,
+ size);
+ mg_free(href);
+ return 0;
+}
+
+
+/* This function is called from send_directory() and used for
+ * sorting directory entries by size, name, or modification time. */
+static int
+compare_dir_entries(const void *p1, const void *p2, void *arg)
+{
+ const char *query_string = (const char *)(arg != NULL ? arg : "");
+ if (p1 && p2) {
+ const struct de *a = (const struct de *)p1, *b = (const struct de *)p2;
+ int cmp_result = 0;
+
+ if ((query_string == NULL) || (query_string[0] == '\0')) {
+ query_string = "n";
+ }
+
+ /* Sort Directories vs Files */
+ if (a->file.is_directory && !b->file.is_directory) {
+ return -1; /* Always put directories on top */
+ } else if (!a->file.is_directory && b->file.is_directory) {
+ return 1; /* Always put directories on top */
+ }
+
+ /* Sort by size or date */
+ if (*query_string == 's') {
+ cmp_result = (a->file.size == b->file.size)
+ ? 0
+ : ((a->file.size > b->file.size) ? 1 : -1);
+ } else if (*query_string == 'd') {
+ cmp_result =
+ (a->file.last_modified == b->file.last_modified)
+ ? 0
+ : ((a->file.last_modified > b->file.last_modified) ? 1
+ : -1);
+ }
+
+ /* Sort by name:
+ * if (*query_string == 'n') ...
+ * but also sort files of same size/date by name as secondary criterion.
+ */
+ if (cmp_result == 0) {
+ cmp_result = strcmp(a->file_name, b->file_name);
+ }
+
+ /* For descending order, invert result */
+ return (query_string[1] == 'd') ? -cmp_result : cmp_result;
+ }
+ return 0;
+}
+
+
+static int
+must_hide_file(struct mg_connection *conn, const char *path)
+{
+ if (conn && conn->dom_ctx) {
+ const char *pw_pattern = "**" PASSWORDS_FILE_NAME "$";
+ const char *pattern = conn->dom_ctx->config[HIDE_FILES];
+ return (match_prefix_strlen(pw_pattern, path) > 0)
+ || (match_prefix_strlen(pattern, path) > 0);
+ }
+ return 0;
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+static int
+scan_directory(struct mg_connection *conn,
+ const char *dir,
+ void *data,
+ int (*cb)(struct de *, void *))
+{
+ char path[UTF8_PATH_MAX];
+ struct dirent *dp;
+ DIR *dirp;
+ struct de de;
+ int truncated;
+
+ if ((dirp = mg_opendir(conn, dir)) == NULL) {
+ return 0;
+ } else {
+
+ while ((dp = mg_readdir(dirp)) != NULL) {
+ /* Do not show current dir and hidden files */
+ if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")
+ || must_hide_file(conn, dp->d_name)) {
+ continue;
+ }
+
+ mg_snprintf(
+ conn, &truncated, path, sizeof(path), "%s/%s", dir, dp->d_name);
+
+ /* If we don't memset stat structure to zero, mtime will have
+ * garbage and strftime() will segfault later on in
+ * print_dir_entry(). memset is required only if mg_stat()
+ * fails. For more details, see
+ * http://code.google.com/p/mongoose/issues/detail?id=79 */
+ memset(&de.file, 0, sizeof(de.file));
+
+ if (truncated) {
+ /* If the path is not complete, skip processing. */
+ continue;
+ }
+
+ if (!mg_stat(conn, path, &de.file)) {
+ mg_cry_internal(conn,
+ "%s: mg_stat(%s) failed: %s",
+ __func__,
+ path,
+ strerror(ERRNO));
+ }
+ de.file_name = dp->d_name;
+ if (cb(&de, data)) {
+ /* stopped */
+ break;
+ }
+ }
+ (void)mg_closedir(dirp);
+ }
+ return 1;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+#if !defined(NO_FILES)
+static int
+remove_directory(struct mg_connection *conn, const char *dir)
+{
+ char path[UTF8_PATH_MAX];
+ struct dirent *dp;
+ DIR *dirp;
+ struct de de;
+ int truncated;
+ int ok = 1;
+
+ if ((dirp = mg_opendir(conn, dir)) == NULL) {
+ return 0;
+ } else {
+
+ while ((dp = mg_readdir(dirp)) != NULL) {
+ /* Do not show current dir (but show hidden files as they will
+ * also be removed) */
+ if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) {
+ continue;
+ }
+
+ mg_snprintf(
+ conn, &truncated, path, sizeof(path), "%s/%s", dir, dp->d_name);
+
+ /* If we don't memset stat structure to zero, mtime will have
+ * garbage and strftime() will segfault later on in
+ * print_dir_entry(). memset is required only if mg_stat()
+ * fails. For more details, see
+ * http://code.google.com/p/mongoose/issues/detail?id=79 */
+ memset(&de.file, 0, sizeof(de.file));
+
+ if (truncated) {
+ /* Do not delete anything shorter */
+ ok = 0;
+ continue;
+ }
+
+ if (!mg_stat(conn, path, &de.file)) {
+ mg_cry_internal(conn,
+ "%s: mg_stat(%s) failed: %s",
+ __func__,
+ path,
+ strerror(ERRNO));
+ ok = 0;
+ }
+
+ if (de.file.is_directory) {
+ if (remove_directory(conn, path) == 0) {
+ ok = 0;
+ }
+ } else {
+ /* This will fail file is the file is in memory */
+ if (mg_remove(conn, path) == 0) {
+ ok = 0;
+ }
+ }
+ }
+ (void)mg_closedir(dirp);
+
+ IGNORE_UNUSED_RESULT(rmdir(dir));
+ }
+
+ return ok;
+}
+#endif
+
+
+struct dir_scan_data {
+ struct de *entries;
+ size_t num_entries;
+ size_t arr_size;
+};
+
+
+#if !defined(NO_FILESYSTEMS)
+static int
+dir_scan_callback(struct de *de, void *data)
+{
+ struct dir_scan_data *dsd = (struct dir_scan_data *)data;
+ struct de *entries = dsd->entries;
+
+ if ((entries == NULL) || (dsd->num_entries >= dsd->arr_size)) {
+ /* Here "entries" is a temporary pointer and can be replaced,
+ * "dsd->entries" is the original pointer */
+ entries =
+ (struct de *)mg_realloc(entries,
+ dsd->arr_size * 2 * sizeof(entries[0]));
+ if (entries == NULL) {
+ /* stop scan */
+ return 1;
+ }
+ dsd->entries = entries;
+ dsd->arr_size *= 2;
+ }
+ entries[dsd->num_entries].file_name = mg_strdup(de->file_name);
+ if (entries[dsd->num_entries].file_name == NULL) {
+ /* stop scan */
+ return 1;
+ }
+ entries[dsd->num_entries].file = de->file;
+ dsd->num_entries++;
+
+ return 0;
+}
+
+
+static void
+handle_directory_request(struct mg_connection *conn, const char *dir)
+{
+ size_t i;
+ int sort_direction;
+ struct dir_scan_data data = {NULL, 0, 128};
+ char date[64], *esc, *p;
+ const char *title;
+ time_t curtime = time(NULL);
+
+ if (!conn) {
+ return;
+ }
+
+ if (!scan_directory(conn, dir, &data, dir_scan_callback)) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: Cannot open directory\nopendir(%s): %s",
+ dir,
+ strerror(ERRNO));
+ return;
+ }
+
+ gmt_time_string(date, sizeof(date), &curtime);
+
+ esc = NULL;
+ title = conn->request_info.local_uri;
+ if (title[strcspn(title, "&<>")]) {
+ /* HTML escaping needed */
+ esc = (char *)mg_malloc(strlen(title) * 5 + 1);
+ if (esc) {
+ for (i = 0, p = esc; title[i]; i++, p += strlen(p)) {
+ mg_strlcpy(p, title + i, 2);
+ if (*p == '&') {
+ strcpy(p, "&");
+ } else if (*p == '<') {
+ strcpy(p, "<");
+ } else if (*p == '>') {
+ strcpy(p, ">");
+ }
+ }
+ } else {
+ title = "";
+ }
+ }
+
+ sort_direction = ((conn->request_info.query_string != NULL)
+ && (conn->request_info.query_string[0] != '\0')
+ && (conn->request_info.query_string[1] == 'd'))
+ ? 'a'
+ : 'd';
+
+ conn->must_close = 1;
+
+ /* Create 200 OK response */
+ mg_response_header_start(conn, 200);
+ send_static_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn,
+ "Content-Type",
+ "text/html; charset=utf-8",
+ -1);
+
+ /* Send all headers */
+ mg_response_header_send(conn);
+
+ /* Body */
+ mg_printf(conn,
+ ""
+ "Index of %s "
+ ""
+ "Index of %s "
+ "Name "
+ "Modified "
+ "Size "
+ " ",
+ esc ? esc : title,
+ esc ? esc : title,
+ sort_direction,
+ sort_direction,
+ sort_direction);
+ mg_free(esc);
+
+ /* Print first entry - link to a parent directory */
+ mg_printf(conn,
+ "%s "
+ " %s %s \n",
+ "..",
+ "Parent directory",
+ "-",
+ "-");
+
+ /* Sort and print directory entries */
+ if (data.entries != NULL) {
+ mg_sort(data.entries,
+ data.num_entries,
+ sizeof(data.entries[0]),
+ compare_dir_entries,
+ (void *)conn->request_info.query_string);
+ for (i = 0; i < data.num_entries; i++) {
+ print_dir_entry(conn, &data.entries[i]);
+ mg_free(data.entries[i].file_name);
+ }
+ mg_free(data.entries);
+ }
+
+ mg_printf(conn, "%s", "
");
+ conn->status_code = 200;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+/* Send len bytes from the opened file to the client. */
+static void
+send_file_data(struct mg_connection *conn,
+ struct mg_file *filep,
+ int64_t offset,
+ int64_t len,
+ int no_buffering)
+{
+ char buf[MG_BUF_LEN];
+ int to_read, num_read, num_written;
+ int64_t size;
+
+ if (!filep || !conn) {
+ return;
+ }
+
+ /* Sanity check the offset */
+ size = (filep->stat.size > INT64_MAX) ? INT64_MAX
+ : (int64_t)(filep->stat.size);
+ offset = (offset < 0) ? 0 : ((offset > size) ? size : offset);
+
+ if (len > 0 && filep->access.fp != NULL) {
+ /* file stored on disk */
+#if defined(__linux__)
+ /* sendfile is only available for Linux */
+ if ((conn->ssl == 0) && (conn->throttle == 0)
+ && (!mg_strcasecmp(conn->dom_ctx->config[ALLOW_SENDFILE_CALL],
+ "yes"))) {
+ off_t sf_offs = (off_t)offset;
+ ssize_t sf_sent;
+ int sf_file = fileno(filep->access.fp);
+ int loop_cnt = 0;
+
+ do {
+ /* 2147479552 (0x7FFFF000) is a limit found by experiment on
+ * 64 bit Linux (2^31 minus one memory page of 4k?). */
+ size_t sf_tosend =
+ (size_t)((len < 0x7FFFF000) ? len : 0x7FFFF000);
+ sf_sent =
+ sendfile(conn->client.sock, sf_file, &sf_offs, sf_tosend);
+ if (sf_sent > 0) {
+ len -= sf_sent;
+ offset += sf_sent;
+ } else if (loop_cnt == 0) {
+ /* This file can not be sent using sendfile.
+ * This might be the case for pseudo-files in the
+ * /sys/ and /proc/ file system.
+ * Use the regular user mode copy code instead. */
+ break;
+ } else if (sf_sent == 0) {
+ /* No error, but 0 bytes sent. May be EOF? */
+ return;
+ }
+ loop_cnt++;
+
+ } while ((len > 0) && (sf_sent >= 0));
+
+ if (sf_sent > 0) {
+ return; /* OK */
+ }
+
+ /* sf_sent<0 means error, thus fall back to the classic way */
+ /* This is always the case, if sf_file is not a "normal" file,
+ * e.g., for sending data from the output of a CGI process. */
+ offset = (int64_t)sf_offs;
+ }
+#endif
+ if ((offset > 0) && (fseeko(filep->access.fp, offset, SEEK_SET) != 0)) {
+ mg_cry_internal(conn,
+ "%s: fseeko() failed: %s",
+ __func__,
+ strerror(ERRNO));
+ mg_send_http_error(
+ conn,
+ 500,
+ "%s",
+ "Error: Unable to access file at requested position.");
+ } else {
+ while (len > 0) {
+ /* Calculate how much to read from the file into the buffer. */
+ /* If no_buffering is set, we should not wait until the
+ * CGI->Server buffer is filled, but send everything
+ * immediately. In theory buffering could be turned off using
+ * setbuf(filep->access.fp, NULL);
+ * setvbuf(filep->access.fp, NULL, _IONBF, 0);
+ * but in practice this does not work. A "Linux only" solution
+ * may be to use select(). The only portable way is to read byte
+ * by byte, but this is quite inefficient from a performance
+ * point of view. */
+ to_read = no_buffering ? 1 : sizeof(buf);
+ if ((int64_t)to_read > len) {
+ to_read = (int)len;
+ }
+
+ /* Read from file, exit the loop on error */
+ if ((num_read = pull_inner(filep->access.fp,
+ NULL,
+ buf,
+ to_read,
+ /* unused */ 0.0))
+ <= 0) {
+ break;
+ }
+
+ /* Send read bytes to the client, exit the loop on error */
+ if ((num_written = mg_write(conn, buf, (size_t)num_read))
+ != num_read) {
+ break;
+ }
+
+ /* Both read and were successful, adjust counters */
+ len -= num_written;
+ }
+ }
+ }
+}
+
+
+static int
+parse_range_header(const char *header, int64_t *a, int64_t *b)
+{
+ return sscanf(header,
+ "bytes=%" INT64_FMT "-%" INT64_FMT,
+ a,
+ b); // NOLINT(cert-err34-c) 'sscanf' used to convert a string
+ // to an integer value, but function will not report
+ // conversion errors; consider using 'strtol' instead
+}
+
+
+static void
+construct_etag(char *buf, size_t buf_len, const struct mg_file_stat *filestat)
+{
+ if ((filestat != NULL) && (buf != NULL)) {
+ mg_snprintf(NULL,
+ NULL, /* All calls to construct_etag use 64 byte buffer */
+ buf,
+ buf_len,
+ "\"%lx.%" INT64_FMT "\"",
+ (unsigned long)filestat->last_modified,
+ filestat->size);
+ }
+}
+
+
+static void
+fclose_on_exec(struct mg_file_access *filep, struct mg_connection *conn)
+{
+ if (filep != NULL && filep->fp != NULL) {
+#if defined(_WIN32)
+ (void)conn; /* Unused. */
+#else
+ if (fcntl(fileno(filep->fp), F_SETFD, FD_CLOEXEC) != 0) {
+ mg_cry_internal(conn,
+ "%s: fcntl(F_SETFD FD_CLOEXEC) failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+#endif
+ }
+}
+
+
+#if defined(USE_ZLIB)
+#include "mod_zlib.inl"
+#endif
+
+
+#if !defined(NO_FILESYSTEMS)
+static void
+handle_static_file_request(struct mg_connection *conn,
+ const char *path,
+ struct mg_file *filep,
+ const char *mime_type,
+ const char *additional_headers)
+{
+ char lm[64], etag[64];
+ char range[128]; /* large enough, so there will be no overflow */
+ const char *range_hdr;
+ int64_t cl, r1, r2;
+ struct vec mime_vec;
+ int n, truncated;
+ char gz_path[UTF8_PATH_MAX];
+ const char *encoding = 0;
+ int is_head_request;
+
+#if defined(USE_ZLIB)
+ /* Compression is allowed, unless there is a reason not to use
+ * compression. If the file is already compressed, too small or a
+ * "range" request was made, on the fly compression is not possible. */
+ int allow_on_the_fly_compression = 1;
+#endif
+
+ if ((conn == NULL) || (conn->dom_ctx == NULL) || (filep == NULL)) {
+ return;
+ }
+
+ is_head_request = !strcmp(conn->request_info.request_method, "HEAD");
+
+ if (mime_type == NULL) {
+ get_mime_type(conn, path, &mime_vec);
+ } else {
+ mime_vec.ptr = mime_type;
+ mime_vec.len = strlen(mime_type);
+ }
+ if (filep->stat.size > INT64_MAX) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: File size is too large to send\n%" INT64_FMT,
+ filep->stat.size);
+ return;
+ }
+ cl = (int64_t)filep->stat.size;
+ conn->status_code = 200;
+ range[0] = '\0';
+
+#if defined(USE_ZLIB)
+ /* if this file is in fact a pre-gzipped file, rewrite its filename
+ * it's important to rewrite the filename after resolving
+ * the mime type from it, to preserve the actual file's type */
+ if (!conn->accept_gzip) {
+ allow_on_the_fly_compression = 0;
+ }
+#endif
+
+ /* Check if there is a range header */
+ range_hdr = mg_get_header(conn, "Range");
+
+ /* For gzipped files, add *.gz */
+ if (filep->stat.is_gzipped) {
+ mg_snprintf(conn, &truncated, gz_path, sizeof(gz_path), "%s.gz", path);
+
+ if (truncated) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: Path of zipped file too long (%s)",
+ path);
+ return;
+ }
+
+ path = gz_path;
+ encoding = "gzip";
+
+#if defined(USE_ZLIB)
+ /* File is already compressed. No "on the fly" compression. */
+ allow_on_the_fly_compression = 0;
+#endif
+ } else if ((conn->accept_gzip) && (range_hdr == NULL)
+ && (filep->stat.size >= MG_FILE_COMPRESSION_SIZE_LIMIT)) {
+ struct mg_file_stat file_stat;
+
+ mg_snprintf(conn, &truncated, gz_path, sizeof(gz_path), "%s.gz", path);
+
+ if (!truncated && mg_stat(conn, gz_path, &file_stat)
+ && !file_stat.is_directory) {
+ file_stat.is_gzipped = 1;
+ filep->stat = file_stat;
+ cl = (int64_t)filep->stat.size;
+ path = gz_path;
+ encoding = "gzip";
+
+#if defined(USE_ZLIB)
+ /* File is already compressed. No "on the fly" compression. */
+ allow_on_the_fly_compression = 0;
+#endif
+ }
+ }
+
+ if (!mg_fopen(conn, path, MG_FOPEN_MODE_READ, filep)) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: Cannot open file\nfopen(%s): %s",
+ path,
+ strerror(ERRNO));
+ return;
+ }
+
+ fclose_on_exec(&filep->access, conn);
+
+ /* If "Range" request was made: parse header, send only selected part
+ * of the file. */
+ r1 = r2 = 0;
+ if ((range_hdr != NULL)
+ && ((n = parse_range_header(range_hdr, &r1, &r2)) > 0) && (r1 >= 0)
+ && (r2 >= 0)) {
+ /* actually, range requests don't play well with a pre-gzipped
+ * file (since the range is specified in the uncompressed space) */
+ if (filep->stat.is_gzipped) {
+ mg_send_http_error(
+ conn,
+ 416, /* 416 = Range Not Satisfiable */
+ "%s",
+ "Error: Range requests in gzipped files are not supported");
+ (void)mg_fclose(
+ &filep->access); /* ignore error on read only file */
+ return;
+ }
+ conn->status_code = 206;
+ cl = (n == 2) ? (((r2 > cl) ? cl : r2) - r1 + 1) : (cl - r1);
+ mg_snprintf(conn,
+ NULL, /* range buffer is big enough */
+ range,
+ sizeof(range),
+ "bytes "
+ "%" INT64_FMT "-%" INT64_FMT "/%" INT64_FMT,
+ r1,
+ r1 + cl - 1,
+ filep->stat.size);
+
+#if defined(USE_ZLIB)
+ /* Do not compress ranges. */
+ allow_on_the_fly_compression = 0;
+#endif
+ }
+
+ /* Do not compress small files. Small files do not benefit from file
+ * compression, but there is still some overhead. */
+#if defined(USE_ZLIB)
+ if (filep->stat.size < MG_FILE_COMPRESSION_SIZE_LIMIT) {
+ /* File is below the size limit. */
+ allow_on_the_fly_compression = 0;
+ }
+#endif
+
+ /* Prepare Etag, and Last-Modified headers. */
+ gmt_time_string(lm, sizeof(lm), &filep->stat.last_modified);
+ construct_etag(etag, sizeof(etag), &filep->stat);
+
+ /* Create 2xx (200, 206) response */
+ mg_response_header_start(conn, conn->status_code);
+ send_static_cache_header(conn);
+ send_additional_header(conn);
+ send_cors_header(conn);
+ mg_response_header_add(conn,
+ "Content-Type",
+ mime_vec.ptr,
+ (int)mime_vec.len);
+ mg_response_header_add(conn, "Last-Modified", lm, -1);
+ mg_response_header_add(conn, "Etag", etag, -1);
+
+#if defined(USE_ZLIB)
+ /* On the fly compression allowed */
+ if (allow_on_the_fly_compression) {
+ /* For on the fly compression, we don't know the content size in
+ * advance, so we have to use chunked encoding */
+ encoding = "gzip";
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP1) {
+ /* HTTP/2 is always using "chunks" (frames) */
+ mg_response_header_add(conn, "Transfer-Encoding", "chunked", -1);
+ }
+
+ } else
+#endif
+ {
+ /* Without on-the-fly compression, we know the content-length
+ * and we can use ranges (with on-the-fly compression we cannot).
+ * So we send these response headers only in this case. */
+ char len[32];
+ int trunc = 0;
+ mg_snprintf(conn, &trunc, len, sizeof(len), "%" INT64_FMT, cl);
+
+ if (!trunc) {
+ mg_response_header_add(conn, "Content-Length", len, -1);
+ }
+
+ mg_response_header_add(conn, "Accept-Ranges", "bytes", -1);
+ }
+
+ if (encoding) {
+ mg_response_header_add(conn, "Content-Encoding", encoding, -1);
+ }
+ if (range[0] != 0) {
+ mg_response_header_add(conn, "Content-Range", range, -1);
+ }
+
+ /* The code above does not add any header starting with X- to make
+ * sure no one of the additional_headers is included twice */
+ if ((additional_headers != NULL) && (*additional_headers != 0)) {
+ mg_response_header_add_lines(conn, additional_headers);
+ }
+
+ /* Send all headers */
+ mg_response_header_send(conn);
+
+ if (!is_head_request) {
+#if defined(USE_ZLIB)
+ if (allow_on_the_fly_compression) {
+ /* Compress and send */
+ send_compressed_data(conn, filep);
+ } else
+#endif
+ {
+ /* Send file directly */
+ send_file_data(conn, filep, r1, cl, 0); /* send static file */
+ }
+ }
+ (void)mg_fclose(&filep->access); /* ignore error on read only file */
+}
+
+
+CIVETWEB_API int
+mg_send_file_body(struct mg_connection *conn, const char *path)
+{
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ if (!mg_fopen(conn, path, MG_FOPEN_MODE_READ, &file)) {
+ return -1;
+ }
+ fclose_on_exec(&file.access, conn);
+ send_file_data(conn, &file, 0, INT64_MAX, 0); /* send static file */
+ (void)mg_fclose(&file.access); /* Ignore errors for readonly files */
+ return 0; /* >= 0 for OK */
+}
+#endif /* NO_FILESYSTEMS */
+
+
+#if !defined(NO_CACHING)
+/* Return True if we should reply 304 Not Modified. */
+static int
+is_not_modified(const struct mg_connection *conn,
+ const struct mg_file_stat *filestat)
+{
+ char etag[64];
+ const char *ims = mg_get_header(conn, "If-Modified-Since");
+ const char *inm = mg_get_header(conn, "If-None-Match");
+ construct_etag(etag, sizeof(etag), filestat);
+
+ if (inm) {
+ return !mg_strcasecmp(etag, inm);
+ }
+ if (ims) {
+ return (filestat->last_modified <= parse_date_string(ims));
+ }
+ return 0;
+}
+
+
+static void
+handle_not_modified_static_file_request(struct mg_connection *conn,
+ struct mg_file *filep)
+{
+ char lm[64], etag[64];
+
+ if ((conn == NULL) || (filep == NULL)) {
+ return;
+ }
+
+ gmt_time_string(lm, sizeof(lm), &filep->stat.last_modified);
+ construct_etag(etag, sizeof(etag), &filep->stat);
+
+ /* Create 304 "not modified" response */
+ mg_response_header_start(conn, 304);
+ send_static_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Last-Modified", lm, -1);
+ mg_response_header_add(conn, "Etag", etag, -1);
+
+ /* Send all headers */
+ mg_response_header_send(conn);
+}
+#endif
+
+
+#if !defined(NO_FILESYSTEMS)
+CIVETWEB_API void
+mg_send_file(struct mg_connection *conn, const char *path)
+{
+ mg_send_mime_file2(conn, path, NULL, NULL);
+}
+
+
+CIVETWEB_API void
+mg_send_mime_file(struct mg_connection *conn,
+ const char *path,
+ const char *mime_type)
+{
+ mg_send_mime_file2(conn, path, mime_type, NULL);
+}
+
+
+CIVETWEB_API void
+mg_send_mime_file2(struct mg_connection *conn,
+ const char *path,
+ const char *mime_type,
+ const char *additional_headers)
+{
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+
+ if (!conn) {
+ /* No conn */
+ return;
+ }
+
+ if (mg_stat(conn, path, &file.stat)) {
+#if !defined(NO_CACHING)
+ if (is_not_modified(conn, &file.stat)) {
+ /* Send 304 "Not Modified" - this must not send any body data */
+ handle_not_modified_static_file_request(conn, &file);
+ } else
+#endif /* NO_CACHING */
+ if (file.stat.is_directory) {
+ if (!mg_strcasecmp(conn->dom_ctx->config[ENABLE_DIRECTORY_LISTING],
+ "yes")) {
+ handle_directory_request(conn, path);
+ } else {
+ mg_send_http_error(conn,
+ 403,
+ "%s",
+ "Error: Directory listing denied");
+ }
+ } else {
+ handle_static_file_request(
+ conn, path, &file, mime_type, additional_headers);
+ }
+ } else {
+ mg_send_http_error(conn, 404, "%s", "Error: File not found");
+ }
+}
+
+
+/* For a given PUT path, create all intermediate subdirectories.
+ * Return 0 if the path itself is a directory.
+ * Return 1 if the path leads to a file.
+ * Return -1 for if the path is too long.
+ * Return -2 if path can not be created.
+ */
+static int
+put_dir(struct mg_connection *conn, const char *path)
+{
+ char buf[UTF8_PATH_MAX];
+ const char *s, *p;
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ size_t len;
+ int res = 1;
+
+ for (s = p = path + 2; (p = strchr(s, '/')) != NULL; s = ++p) {
+ len = (size_t)(p - path);
+ if (len >= sizeof(buf)) {
+ /* path too long */
+ res = -1;
+ break;
+ }
+ memcpy(buf, path, len);
+ buf[len] = '\0';
+
+ /* Try to create intermediate directory */
+ DEBUG_TRACE("mkdir(%s)", buf);
+ if (!mg_stat(conn, buf, &file.stat) && mg_mkdir(conn, buf, 0755) != 0) {
+ /* path does not exist and can not be created */
+ res = -2;
+ break;
+ }
+
+ /* Is path itself a directory? */
+ if (p[1] == '\0') {
+ res = 0;
+ }
+ }
+
+ return res;
+}
+
+
+static void
+remove_bad_file(const struct mg_connection *conn, const char *path)
+{
+ int r = mg_remove(conn, path);
+ if (r != 0) {
+ mg_cry_internal(conn,
+ "%s: Cannot remove invalid file %s",
+ __func__,
+ path);
+ }
+}
+
+
+CIVETWEB_API long long
+mg_store_body(struct mg_connection *conn, const char *path)
+{
+ char buf[MG_BUF_LEN];
+ long long len = 0;
+ int ret, n;
+ struct mg_file fi;
+
+ if (conn->consumed_content != 0) {
+ mg_cry_internal(conn, "%s: Contents already consumed", __func__);
+ return -11;
+ }
+
+ ret = put_dir(conn, path);
+ if (ret < 0) {
+ /* -1 for path too long,
+ * -2 for path can not be created. */
+ return ret;
+ }
+ if (ret != 1) {
+ /* Return 0 means, path itself is a directory. */
+ return 0;
+ }
+
+ if (mg_fopen(conn, path, MG_FOPEN_MODE_WRITE, &fi) == 0) {
+ return -12;
+ }
+
+ ret = mg_read(conn, buf, sizeof(buf));
+ while (ret > 0) {
+ n = (int)fwrite(buf, 1, (size_t)ret, fi.access.fp);
+ if (n != ret) {
+ (void)mg_fclose(
+ &fi.access); /* File is bad and will be removed anyway. */
+ remove_bad_file(conn, path);
+ return -13;
+ }
+ len += ret;
+ ret = mg_read(conn, buf, sizeof(buf));
+ }
+
+ /* File is open for writing. If fclose fails, there was probably an
+ * error flushing the buffer to disk, so the file on disk might be
+ * broken. Delete it and return an error to the caller. */
+ if (mg_fclose(&fi.access) != 0) {
+ remove_bad_file(conn, path);
+ return -14;
+ }
+
+ return len;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+/* Parse a buffer:
+ * Forward the string pointer till the end of a word, then
+ * terminate it and forward till the begin of the next word.
+ */
+static int
+skip_to_end_of_word_and_terminate(char **ppw, int eol)
+{
+ /* Forward until a space is found - use isgraph here */
+ /* Extended ASCII characters are also treated as word characters. */
+ /* See http://www.cplusplus.com/reference/cctype/ */
+ while ((unsigned char)**ppw > 127 || isgraph((unsigned char)**ppw)) {
+ (*ppw)++;
+ }
+
+ /* Check end of word */
+ if (eol) {
+ /* must be a end of line */
+ if ((**ppw != '\r') && (**ppw != '\n')) {
+ return -1;
+ }
+ } else {
+ /* must be a end of a word, but not a line */
+ if (**ppw != ' ') {
+ return -1;
+ }
+ }
+
+ /* Terminate and forward to the next word */
+ do {
+ **ppw = 0;
+ (*ppw)++;
+ } while (isspace((unsigned char)**ppw));
+
+ /* Check after term */
+ if (!eol) {
+ /* if it's not the end of line, there must be a next word */
+ if (!isgraph((unsigned char)**ppw)) {
+ return -1;
+ }
+ }
+
+ /* ok */
+ return 1;
+}
+
+
+/* Parse HTTP headers from the given buffer, advance buf pointer
+ * to the point where parsing stopped.
+ * All parameters must be valid pointers (not NULL).
+ * Return <0 on error. */
+static int
+parse_http_headers(char **buf, struct mg_header hdr[MG_MAX_HEADERS])
+{
+ int i;
+ int num_headers = 0;
+
+ for (i = 0; i < (int)MG_MAX_HEADERS; i++) {
+ char *dp = *buf;
+
+ /* Skip all ASCII characters (>SPACE, <127), to find a ':' */
+ while ((*dp != ':') && (*dp >= 33) && (*dp <= 126)) {
+ dp++;
+ }
+ if (dp == *buf) {
+ /* End of headers reached. */
+ break;
+ }
+
+ /* Drop all spaces after header name before : */
+ while (*dp == ' ') {
+ *dp = 0;
+ dp++;
+ }
+ if (*dp != ':') {
+ /* This is not a valid field. */
+ return -1;
+ }
+
+ /* End of header key (*dp == ':') */
+ /* Truncate here and set the key name */
+ *dp = 0;
+ hdr[i].name = *buf;
+
+ /* Skip all spaces */
+ do {
+ dp++;
+ } while ((*dp == ' ') || (*dp == '\t'));
+
+ /* The rest of the line is the value */
+ hdr[i].value = dp;
+
+ /* Find end of line */
+ while ((*dp != 0) && (*dp != '\r') && (*dp != '\n')) {
+ dp++;
+ };
+
+ /* eliminate \r */
+ if (*dp == '\r') {
+ *dp = 0;
+ dp++;
+ if (*dp != '\n') {
+ /* This is not a valid line. */
+ return -1;
+ }
+ }
+
+ /* here *dp is either 0 or '\n' */
+ /* in any case, we have found a complete header */
+ num_headers = i + 1;
+
+ if (*dp) {
+ *dp = 0;
+ dp++;
+ *buf = dp;
+
+ if ((dp[0] == '\r') || (dp[0] == '\n')) {
+ /* We've had CRLF twice in a row
+ * This is the end of the headers */
+ break;
+ }
+ /* continue within the loop, find the next header */
+ } else {
+ *buf = dp;
+ break;
+ }
+ }
+ return num_headers;
+}
+
+
+struct mg_http_method_info {
+ const char *name;
+ int request_has_body;
+ int response_has_body;
+ int is_safe;
+ int is_idempotent;
+ int is_cacheable;
+};
+
+
+/* https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods */
+static const struct mg_http_method_info http_methods[] = {
+ /* HTTP (RFC 2616) */
+ {"GET", 0, 1, 1, 1, 1},
+ {"POST", 1, 1, 0, 0, 0},
+ {"PUT", 1, 0, 0, 1, 0},
+ {"DELETE", 0, 0, 0, 1, 0},
+ {"HEAD", 0, 0, 1, 1, 1},
+ {"OPTIONS", 0, 0, 1, 1, 0},
+ {"CONNECT", 1, 1, 0, 0, 0},
+ /* TRACE method (RFC 2616) is not supported for security reasons */
+
+ /* PATCH method (RFC 5789) */
+ {"PATCH", 1, 0, 0, 0, 0},
+ /* PATCH method only allowed for CGI/Lua/LSP and callbacks. */
+
+ /* WEBDAV (RFC 2518) */
+ {"PROPFIND", 0, 1, 1, 1, 0},
+ /* http://www.webdav.org/specs/rfc4918.html, 9.1:
+ * Some PROPFIND results MAY be cached, with care,
+ * as there is no cache validation mechanism for
+ * most properties. This method is both safe and
+ * idempotent (see Section 9.1 of [RFC2616]). */
+ {"MKCOL", 0, 0, 0, 1, 0},
+ /* http://www.webdav.org/specs/rfc4918.html, 9.1:
+ * When MKCOL is invoked without a request body,
+ * the newly created collection SHOULD have no
+ * members. A MKCOL request message may contain
+ * a message body. The precise behavior of a MKCOL
+ * request when the body is present is undefined,
+ * ... ==> We do not support MKCOL with body data.
+ * This method is idempotent, but not safe (see
+ * Section 9.1 of [RFC2616]). Responses to this
+ * method MUST NOT be cached. */
+
+ /* Methods for write access to files on WEBDAV (RFC 2518) */
+ {"LOCK", 1, 1, 0, 0, 0},
+ {"UNLOCK", 1, 0, 0, 0, 0},
+ {"PROPPATCH", 1, 1, 0, 0, 0},
+ {"COPY", 1, 0, 0, 0, 0},
+ {"MOVE", 1, 1, 0, 0, 0},
+
+ /* Unsupported WEBDAV Methods: */
+ /* + 11 methods from RFC 3253 */
+ /* ORDERPATCH (RFC 3648) */
+ /* ACL (RFC 3744) */
+ /* SEARCH (RFC 5323) */
+ /* + MicroSoft extensions
+ * https://msdn.microsoft.com/en-us/library/aa142917.aspx */
+
+ /* REPORT method (RFC 3253) */
+ {"REPORT", 1, 1, 1, 1, 1},
+ /* REPORT method only allowed for CGI/Lua/LSP and callbacks. */
+ /* It was defined for WEBDAV in RFC 3253, Sec. 3.6
+ * (https://tools.ietf.org/html/rfc3253#section-3.6), but seems
+ * to be useful for REST in case a "GET request with body" is
+ * required. */
+
+ {NULL, 0, 0, 0, 0, 0}
+ /* end of list */
+};
+
+
+/* All method names */
+static char *all_methods = NULL; /* Built by mg_init_library */
+
+
+static const struct mg_http_method_info *
+get_http_method_info(const char *method)
+{
+ /* Check if the method is known to the server. The list of all known
+ * HTTP methods can be found here at
+ * http://www.iana.org/assignments/http-methods/http-methods.xhtml
+ */
+ const struct mg_http_method_info *m = http_methods;
+
+ while (m->name) {
+ if (!strcmp(m->name, method)) {
+ return m;
+ }
+ m++;
+ }
+ return NULL;
+}
+
+
+static int
+is_valid_http_method(const char *method)
+{
+ return (get_http_method_info(method) != NULL);
+}
+
+
+/* Parse HTTP request, fill in mg_request_info structure.
+ * This function modifies the buffer by NUL-terminating
+ * HTTP request components, header names and header values.
+ * Parameters:
+ * buf (in/out): pointer to the HTTP header to parse and split
+ * len (in): length of HTTP header buffer
+ * re (out): parsed header as mg_request_info
+ * buf and ri must be valid pointers (not NULL), len>0.
+ * Returns <0 on error. */
+static int
+parse_http_request(char *buf, int len, struct mg_request_info *ri)
+{
+ int request_length;
+ int init_skip = 0;
+
+ /* Reset attributes. DO NOT TOUCH is_ssl, remote_addr,
+ * remote_port */
+ ri->remote_user = ri->request_method = ri->request_uri = ri->http_version =
+ NULL;
+ ri->num_headers = 0;
+
+ /* RFC says that all initial whitespaces should be ignored */
+ /* This included all leading \r and \n (isspace) */
+ /* See table: http://www.cplusplus.com/reference/cctype/ */
+ while ((len > 0) && isspace((unsigned char)*buf)) {
+ buf++;
+ len--;
+ init_skip++;
+ }
+
+ if (len == 0) {
+ /* Incomplete request */
+ return 0;
+ }
+
+ /* Control characters are not allowed, including zero */
+ if (iscntrl((unsigned char)*buf)) {
+ return -1;
+ }
+
+ /* Find end of HTTP header */
+ request_length = get_http_header_len(buf, len);
+ if (request_length <= 0) {
+ return request_length;
+ }
+ buf[request_length - 1] = '\0';
+
+ if ((*buf == 0) || (*buf == '\r') || (*buf == '\n')) {
+ return -1;
+ }
+
+ /* The first word has to be the HTTP method */
+ ri->request_method = buf;
+
+ if (skip_to_end_of_word_and_terminate(&buf, 0) <= 0) {
+ return -1;
+ }
+
+ /* The second word is the URI */
+ ri->request_uri = buf;
+
+ if (skip_to_end_of_word_and_terminate(&buf, 0) <= 0) {
+ return -1;
+ }
+
+ /* Next would be the HTTP version */
+ ri->http_version = buf;
+
+ if (skip_to_end_of_word_and_terminate(&buf, 1) <= 0) {
+ return -1;
+ }
+
+ /* Check for a valid HTTP version key */
+ if (strncmp(ri->http_version, "HTTP/", 5) != 0) {
+ /* Invalid request */
+ return -1;
+ }
+ ri->http_version += 5;
+
+ /* Check for a valid http method */
+ if (!is_valid_http_method(ri->request_method)) {
+ return -1;
+ }
+
+ /* Parse all HTTP headers */
+ ri->num_headers = parse_http_headers(&buf, ri->http_headers);
+ if (ri->num_headers < 0) {
+ /* Error while parsing headers */
+ return -1;
+ }
+
+ return request_length + init_skip;
+}
+
+
+static int
+parse_http_response(char *buf, int len, struct mg_response_info *ri)
+{
+ int response_length;
+ int init_skip = 0;
+ char *tmp, *tmp2;
+ long l;
+
+ /* Initialize elements. */
+ ri->http_version = ri->status_text = NULL;
+ ri->num_headers = ri->status_code = 0;
+
+ /* RFC says that all initial whitespaces should be ignored */
+ /* This included all leading \r and \n (isspace) */
+ /* See table: http://www.cplusplus.com/reference/cctype/ */
+ while ((len > 0) && isspace((unsigned char)*buf)) {
+ buf++;
+ len--;
+ init_skip++;
+ }
+
+ if (len == 0) {
+ /* Incomplete request */
+ return 0;
+ }
+
+ /* Control characters are not allowed, including zero */
+ if (iscntrl((unsigned char)*buf)) {
+ return -1;
+ }
+
+ /* Find end of HTTP header */
+ response_length = get_http_header_len(buf, len);
+ if (response_length <= 0) {
+ return response_length;
+ }
+ buf[response_length - 1] = '\0';
+
+ if ((*buf == 0) || (*buf == '\r') || (*buf == '\n')) {
+ return -1;
+ }
+
+ /* The first word is the HTTP version */
+ /* Check for a valid HTTP version key */
+ if (strncmp(buf, "HTTP/", 5) != 0) {
+ /* Invalid request */
+ return -1;
+ }
+ buf += 5;
+ if (!isgraph((unsigned char)buf[0])) {
+ /* Invalid request */
+ return -1;
+ }
+ ri->http_version = buf;
+
+ if (skip_to_end_of_word_and_terminate(&buf, 0) <= 0) {
+ return -1;
+ }
+
+ /* The second word is the status as a number */
+ tmp = buf;
+
+ if (skip_to_end_of_word_and_terminate(&buf, 0) <= 0) {
+ return -1;
+ }
+
+ l = strtol(tmp, &tmp2, 10);
+ if ((l < 100) || (l >= 1000) || ((tmp2 - tmp) != 3) || (*tmp2 != 0)) {
+ /* Everything else but a 3 digit code is invalid */
+ return -1;
+ }
+ ri->status_code = (int)l;
+
+ /* The rest of the line is the status text */
+ ri->status_text = buf;
+
+ /* Find end of status text */
+ /* isgraph or isspace = isprint */
+ while (isprint((unsigned char)*buf)) {
+ buf++;
+ }
+ if ((*buf != '\r') && (*buf != '\n')) {
+ return -1;
+ }
+ /* Terminate string and forward buf to next line */
+ do {
+ *buf = 0;
+ buf++;
+ } while (isspace((unsigned char)*buf));
+
+ /* Parse all HTTP headers */
+ ri->num_headers = parse_http_headers(&buf, ri->http_headers);
+ if (ri->num_headers < 0) {
+ /* Error while parsing headers */
+ return -1;
+ }
+
+ return response_length + init_skip;
+}
+
+
+/* Keep reading the input (either opened file descriptor fd, or socket sock,
+ * or SSL descriptor ssl) into buffer buf, until \r\n\r\n appears in the
+ * buffer (which marks the end of HTTP request). Buffer buf may already
+ * have some data. The length of the data is stored in nread.
+ * Upon every read operation, increase nread by the number of bytes read. */
+static int
+read_message(FILE *fp,
+ struct mg_connection *conn,
+ char *buf,
+ int bufsiz,
+ int *nread)
+{
+ int request_len, n = 0;
+ struct timespec last_action_time;
+ double request_timeout;
+
+ if (!conn) {
+ return 0;
+ }
+
+ memset(&last_action_time, 0, sizeof(last_action_time));
+
+ if (conn->dom_ctx->config[REQUEST_TIMEOUT]) {
+ /* value of request_timeout is in seconds, config in milliseconds */
+ request_timeout =
+ strtod(conn->dom_ctx->config[REQUEST_TIMEOUT], NULL) / 1000.0;
+ } else {
+ request_timeout =
+ strtod(config_options[REQUEST_TIMEOUT].default_value, NULL)
+ / 1000.0;
+ }
+ if (conn->handled_requests > 0) {
+ if (conn->dom_ctx->config[KEEP_ALIVE_TIMEOUT]) {
+ request_timeout =
+ strtod(conn->dom_ctx->config[KEEP_ALIVE_TIMEOUT], NULL)
+ / 1000.0;
+ }
+ }
+
+ request_len = get_http_header_len(buf, *nread);
+
+ while (request_len == 0) {
+ /* Full request not yet received */
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ /* Server is to be stopped. */
+ return -1;
+ }
+
+ if (*nread >= bufsiz) {
+ /* Request too long */
+ return -2;
+ }
+
+ n = pull_inner(
+ fp, conn, buf + *nread, bufsiz - *nread, request_timeout);
+ if (n == -2) {
+ /* Receive error */
+ return -1;
+ }
+
+ /* update clock after every read request */
+ clock_gettime(CLOCK_MONOTONIC, &last_action_time);
+
+ if (n > 0) {
+ *nread += n;
+ request_len = get_http_header_len(buf, *nread);
+ }
+
+ if ((n <= 0) && (request_timeout >= 0)) {
+ if (mg_difftimespec(&last_action_time, &(conn->req_time))
+ > request_timeout) {
+ /* Timeout */
+ return -3;
+ }
+ }
+ }
+
+ return request_len;
+}
+
+
+#if !defined(NO_CGI) || !defined(NO_FILES)
+static int
+forward_body_data(struct mg_connection *conn, FILE *fp, SOCKET sock, SSL *ssl)
+{
+ const char *expect;
+ char buf[MG_BUF_LEN];
+ int success = 0;
+
+ if (!conn) {
+ return 0;
+ }
+
+ expect = mg_get_header(conn, "Expect");
+ DEBUG_ASSERT(fp != NULL);
+ if (!fp) {
+ mg_send_http_error(conn, 500, "%s", "Error: NULL File");
+ return 0;
+ }
+
+ if ((expect != NULL) && (mg_strcasecmp(expect, "100-continue") != 0)) {
+ /* Client sent an "Expect: xyz" header and xyz is not 100-continue.
+ */
+ mg_send_http_error(conn, 417, "Error: Can not fulfill expectation");
+ } else {
+ if (expect != NULL) {
+ (void)mg_printf(conn, "%s", "HTTP/1.1 100 Continue\r\n\r\n");
+ conn->status_code = 100;
+ } else {
+ conn->status_code = 200;
+ }
+
+ DEBUG_ASSERT(conn->consumed_content == 0);
+
+ if (conn->consumed_content != 0) {
+ mg_send_http_error(conn, 500, "%s", "Error: Size mismatch");
+ return 0;
+ }
+
+ for (;;) {
+ int nread = mg_read(conn, buf, sizeof(buf));
+ if (nread <= 0) {
+ success = (nread == 0);
+ break;
+ }
+ if (push_all(conn->phys_ctx, fp, sock, ssl, buf, nread) != nread) {
+ break;
+ }
+ }
+
+ /* Each error code path in this function must send an error */
+ if (!success) {
+ /* NOTE: Maybe some data has already been sent. */
+ /* TODO (low): If some data has been sent, a correct error
+ * reply can no longer be sent, so just close the connection */
+ mg_send_http_error(conn, 500, "%s", "");
+ }
+ }
+
+ return success;
+}
+#endif
+
+
+#if defined(USE_TIMERS)
+
+#define TIMER_API static
+#include "timer.inl"
+
+#endif /* USE_TIMERS */
+
+
+#if !defined(NO_CGI)
+/* This structure helps to create an environment for the spawned CGI
+ * program.
+ * Environment is an array of "VARIABLE=VALUE\0" ASCII strings,
+ * last element must be NULL.
+ * However, on Windows there is a requirement that all these
+ * VARIABLE=VALUE\0
+ * strings must reside in a contiguous buffer. The end of the buffer is
+ * marked by two '\0' characters.
+ * We satisfy both worlds: we create an envp array (which is vars), all
+ * entries are actually pointers inside buf. */
+struct cgi_environment {
+ struct mg_connection *conn;
+ /* Data block */
+ char *buf; /* Environment buffer */
+ size_t buflen; /* Space available in buf */
+ size_t bufused; /* Space taken in buf */
+ /* Index block */
+ char **var; /* char **envp */
+ size_t varlen; /* Number of variables available in var */
+ size_t varused; /* Number of variables stored in var */
+};
+
+
+static void addenv(struct cgi_environment *env,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(2, 3);
+
+/* Append VARIABLE=VALUE\0 string to the buffer, and add a respective
+ * pointer into the vars array. Assumes env != NULL and fmt != NULL. */
+static void
+addenv(struct cgi_environment *env, const char *fmt, ...)
+{
+ size_t i, n, space;
+ int truncated = 0;
+ char *added;
+ va_list ap;
+
+ if ((env->varlen - env->varused) < 2) {
+ mg_cry_internal(env->conn,
+ "%s: Cannot register CGI variable [%s]",
+ __func__,
+ fmt);
+ return;
+ }
+
+ /* Calculate how much space is left in the buffer */
+ space = (env->buflen - env->bufused);
+
+ do {
+ /* Space for "\0\0" is always needed. */
+ if (space <= 2) {
+ /* Allocate new buffer */
+ n = env->buflen + CGI_ENVIRONMENT_SIZE;
+ added = (char *)mg_realloc_ctx(env->buf, n, env->conn->phys_ctx);
+ if (!added) {
+ /* Out of memory */
+ mg_cry_internal(
+ env->conn,
+ "%s: Cannot allocate memory for CGI variable [%s]",
+ __func__,
+ fmt);
+ return;
+ }
+ /* Retarget pointers */
+ env->buf = added;
+ env->buflen = n;
+ for (i = 0, n = 0; i < env->varused; i++) {
+ env->var[i] = added + n;
+ n += strlen(added + n) + 1;
+ }
+ space = (env->buflen - env->bufused);
+ }
+
+ /* Make a pointer to the free space int the buffer */
+ added = env->buf + env->bufused;
+
+ /* Copy VARIABLE=VALUE\0 string into the free space */
+ va_start(ap, fmt);
+ mg_vsnprintf(env->conn, &truncated, added, space - 1, fmt, ap);
+ va_end(ap);
+
+ /* Do not add truncated strings to the environment */
+ if (truncated) {
+ /* Reallocate the buffer */
+ space = 0;
+ }
+ } while (truncated);
+
+ /* Calculate number of bytes added to the environment */
+ n = strlen(added) + 1;
+ env->bufused += n;
+
+ /* Append a pointer to the added string into the envp array */
+ env->var[env->varused] = added;
+ env->varused++;
+}
+
+/* Return 0 on success, non-zero if an error occurs. */
+
+static int
+prepare_cgi_environment(struct mg_connection *conn,
+ const char *prog,
+ struct cgi_environment *env,
+ int cgi_config_idx)
+{
+ const char *s;
+ struct vec var_vec;
+ char *p, src_addr[IP_ADDR_STR_LEN], http_var_name[128];
+ int i, truncated, uri_len;
+
+ if ((conn == NULL) || (prog == NULL) || (env == NULL)) {
+ return -1;
+ }
+
+ env->conn = conn;
+ env->buflen = CGI_ENVIRONMENT_SIZE;
+ env->bufused = 0;
+ env->buf = (char *)mg_malloc_ctx(env->buflen, conn->phys_ctx);
+ if (env->buf == NULL) {
+ mg_cry_internal(conn,
+ "%s: Not enough memory for environmental buffer",
+ __func__);
+ return -1;
+ }
+ env->varlen = MAX_CGI_ENVIR_VARS;
+ env->varused = 0;
+ env->var =
+ (char **)mg_malloc_ctx(env->varlen * sizeof(char *), conn->phys_ctx);
+ if (env->var == NULL) {
+ mg_cry_internal(conn,
+ "%s: Not enough memory for environmental variables",
+ __func__);
+ mg_free(env->buf);
+ return -1;
+ }
+
+ addenv(env, "SERVER_NAME=%s", conn->dom_ctx->config[AUTHENTICATION_DOMAIN]);
+ addenv(env, "SERVER_ROOT=%s", conn->dom_ctx->config[DOCUMENT_ROOT]);
+ addenv(env, "DOCUMENT_ROOT=%s", conn->dom_ctx->config[DOCUMENT_ROOT]);
+ if (conn->dom_ctx->config[FALLBACK_DOCUMENT_ROOT]) {
+ addenv(env,
+ "FALLBACK_DOCUMENT_ROOT=%s",
+ conn->dom_ctx->config[FALLBACK_DOCUMENT_ROOT]);
+ }
+ addenv(env, "SERVER_SOFTWARE=CivetWeb/%s", mg_version());
+
+ /* Prepare the environment block */
+ addenv(env, "%s", "GATEWAY_INTERFACE=CGI/1.1");
+ addenv(env, "%s", "SERVER_PROTOCOL=HTTP/1.1");
+ addenv(env, "%s", "REDIRECT_STATUS=200"); /* For PHP */
+
+ addenv(env, "SERVER_PORT=%d", conn->request_info.server_port);
+
+ sockaddr_to_string(src_addr, sizeof(src_addr), &conn->client.rsa);
+ addenv(env, "REMOTE_ADDR=%s", src_addr);
+
+ addenv(env, "REQUEST_METHOD=%s", conn->request_info.request_method);
+ addenv(env, "REMOTE_PORT=%d", conn->request_info.remote_port);
+
+ addenv(env, "REQUEST_URI=%s", conn->request_info.request_uri);
+ addenv(env, "LOCAL_URI=%s", conn->request_info.local_uri);
+ addenv(env, "LOCAL_URI_RAW=%s", conn->request_info.local_uri_raw);
+
+ /* SCRIPT_NAME */
+ uri_len = (int)strlen(conn->request_info.local_uri);
+ if (conn->path_info == NULL) {
+ if (conn->request_info.local_uri[uri_len - 1] != '/') {
+ /* URI: /path_to_script/script.cgi */
+ addenv(env, "SCRIPT_NAME=%s", conn->request_info.local_uri);
+ } else {
+ /* URI: /path_to_script/ ... using index.cgi */
+ const char *index_file = strrchr(prog, '/');
+ if (index_file) {
+ addenv(env,
+ "SCRIPT_NAME=%s%s",
+ conn->request_info.local_uri,
+ index_file + 1);
+ }
+ }
+ } else {
+ /* URI: /path_to_script/script.cgi/path_info */
+ addenv(env,
+ "SCRIPT_NAME=%.*s",
+ uri_len - (int)strlen(conn->path_info),
+ conn->request_info.local_uri);
+ }
+
+ addenv(env, "SCRIPT_FILENAME=%s", prog);
+ if (conn->path_info == NULL) {
+ addenv(env, "PATH_TRANSLATED=%s", conn->dom_ctx->config[DOCUMENT_ROOT]);
+ } else {
+ addenv(env,
+ "PATH_TRANSLATED=%s%s",
+ conn->dom_ctx->config[DOCUMENT_ROOT],
+ conn->path_info);
+ }
+
+ addenv(env, "HTTPS=%s", (conn->ssl == NULL) ? "off" : "on");
+
+ if ((s = mg_get_header(conn, "Content-Type")) != NULL) {
+ addenv(env, "CONTENT_TYPE=%s", s);
+ }
+ if (conn->request_info.query_string != NULL) {
+ addenv(env, "QUERY_STRING=%s", conn->request_info.query_string);
+ }
+ if ((s = mg_get_header(conn, "Content-Length")) != NULL) {
+ addenv(env, "CONTENT_LENGTH=%s", s);
+ }
+ if ((s = getenv("PATH")) != NULL) {
+ addenv(env, "PATH=%s", s);
+ }
+ if (conn->path_info != NULL) {
+ addenv(env, "PATH_INFO=%s", conn->path_info);
+ }
+
+ if (conn->status_code > 0) {
+ /* CGI error handler should show the status code */
+ addenv(env, "STATUS=%d", conn->status_code);
+ }
+
+#if defined(_WIN32)
+ if ((s = getenv("COMSPEC")) != NULL) {
+ addenv(env, "COMSPEC=%s", s);
+ }
+ if ((s = getenv("SYSTEMROOT")) != NULL) {
+ addenv(env, "SYSTEMROOT=%s", s);
+ }
+ if ((s = getenv("SystemDrive")) != NULL) {
+ addenv(env, "SystemDrive=%s", s);
+ }
+ if ((s = getenv("ProgramFiles")) != NULL) {
+ addenv(env, "ProgramFiles=%s", s);
+ }
+ if ((s = getenv("ProgramFiles(x86)")) != NULL) {
+ addenv(env, "ProgramFiles(x86)=%s", s);
+ }
+#else
+ if ((s = getenv("LD_LIBRARY_PATH")) != NULL) {
+ addenv(env, "LD_LIBRARY_PATH=%s", s);
+ }
+#endif /* _WIN32 */
+
+ if ((s = getenv("PERLLIB")) != NULL) {
+ addenv(env, "PERLLIB=%s", s);
+ }
+
+ if (conn->request_info.remote_user != NULL) {
+ addenv(env, "REMOTE_USER=%s", conn->request_info.remote_user);
+ addenv(env, "%s", "AUTH_TYPE=Digest");
+ }
+
+ /* Add all headers as HTTP_* variables */
+ for (i = 0; i < conn->request_info.num_headers; i++) {
+
+ (void)mg_snprintf(conn,
+ &truncated,
+ http_var_name,
+ sizeof(http_var_name),
+ "HTTP_%s",
+ conn->request_info.http_headers[i].name);
+
+ if (truncated) {
+ mg_cry_internal(conn,
+ "%s: HTTP header variable too long [%s]",
+ __func__,
+ conn->request_info.http_headers[i].name);
+ continue;
+ }
+
+ /* Convert variable name into uppercase, and change - to _ */
+ for (p = http_var_name; *p != '\0'; p++) {
+ if (*p == '-') {
+ *p = '_';
+ }
+ *p = (char)toupper((unsigned char)*p);
+ }
+
+ addenv(env,
+ "%s=%s",
+ http_var_name,
+ conn->request_info.http_headers[i].value);
+ }
+
+ /* Add user-specified variables */
+ s = conn->dom_ctx->config[CGI_ENVIRONMENT + cgi_config_idx];
+ while ((s = next_option(s, &var_vec, NULL)) != NULL) {
+ addenv(env, "%.*s", (int)var_vec.len, var_vec.ptr);
+ }
+
+ env->var[env->varused] = NULL;
+ env->buf[env->bufused] = '\0';
+
+ return 0;
+}
+
+
+/* Data for CGI process control: PID and number of references */
+struct process_control_data {
+ pid_t pid;
+ ptrdiff_t references;
+};
+
+static int
+abort_cgi_process(void *data)
+{
+ /* Waitpid checks for child status and won't work for a pid that does
+ * not identify a child of the current process. Thus, if the pid is
+ * reused, we will not affect a different process. */
+ struct process_control_data *proc = (struct process_control_data *)data;
+ int status = 0;
+ ptrdiff_t refs;
+ pid_t ret_pid;
+
+ ret_pid = waitpid(proc->pid, &status, WNOHANG);
+ if ((ret_pid != (pid_t)-1) && (status == 0)) {
+ /* Stop child process */
+ DEBUG_TRACE("CGI timer: Stop child process %d\n", proc->pid);
+ kill(proc->pid, SIGABRT);
+
+ /* Wait until process is terminated (don't leave zombies) */
+ while (waitpid(proc->pid, &status, 0) != (pid_t)-1) /* nop */
+ ;
+ } else {
+ DEBUG_TRACE("CGI timer: Child process %d already stopped\n", proc->pid);
+ }
+ /* Dec reference counter */
+ refs = mg_atomic_dec(&proc->references);
+ if (refs == 0) {
+ /* no more references - free data */
+ mg_free(data);
+ }
+
+ return 0;
+}
+
+
+/* Local (static) function assumes all arguments are valid. */
+static void
+handle_cgi_request(struct mg_connection *conn,
+ const char *prog,
+ int cgi_config_idx)
+{
+ char *buf;
+ size_t buflen;
+ int headers_len, data_len, i, truncated;
+ int fdin[2] = {-1, -1}, fdout[2] = {-1, -1}, fderr[2] = {-1, -1};
+ const char *status, *status_text;
+ char *pbuf, dir[UTF8_PATH_MAX], *p;
+ struct mg_request_info ri;
+ struct cgi_environment blk;
+ FILE *in = NULL, *out = NULL, *err = NULL;
+ struct mg_file fout = STRUCT_FILE_INITIALIZER;
+ pid_t pid = (pid_t)-1;
+ struct process_control_data *proc = NULL;
+ char *cfg_buffering = conn->dom_ctx->config[CGI_BUFFERING + cgi_config_idx];
+ int no_buffering = 0;
+
+#if defined(USE_TIMERS)
+ double cgi_timeout;
+ if (conn->dom_ctx->config[CGI_TIMEOUT + cgi_config_idx]) {
+ /* Get timeout in seconds */
+ cgi_timeout =
+ atof(conn->dom_ctx->config[CGI_TIMEOUT + cgi_config_idx]) * 0.001;
+ } else {
+ cgi_timeout =
+ atof(config_options[REQUEST_TIMEOUT].default_value) * 0.001;
+ }
+#endif
+ if (cfg_buffering != NULL) {
+ if (!mg_strcasecmp(cfg_buffering, "no")) {
+ no_buffering = 1;
+ }
+ }
+
+ buf = NULL;
+ buflen = conn->phys_ctx->max_request_size;
+ i = prepare_cgi_environment(conn, prog, &blk, cgi_config_idx);
+ if (i != 0) {
+ blk.buf = NULL;
+ blk.var = NULL;
+ goto done;
+ }
+
+ /* CGI must be executed in its own directory. 'dir' must point to the
+ * directory containing executable program, 'p' must point to the
+ * executable program name relative to 'dir'. */
+ (void)mg_snprintf(conn, &truncated, dir, sizeof(dir), "%s", prog);
+
+ if (truncated) {
+ mg_cry_internal(conn, "Error: CGI program \"%s\": Path too long", prog);
+ mg_send_http_error(conn, 500, "Error: %s", "CGI path too long");
+ goto done;
+ }
+
+ if ((p = strrchr(dir, '/')) != NULL) {
+ *p++ = '\0';
+ } else {
+ dir[0] = '.';
+ dir[1] = '\0';
+ p = (char *)prog;
+ }
+
+ if ((pipe(fdin) != 0) || (pipe(fdout) != 0) || (pipe(fderr) != 0)) {
+ status = strerror(ERRNO);
+ mg_cry_internal(
+ conn,
+ "Error: CGI program \"%s\": Can not create CGI pipes: %s",
+ prog,
+ status);
+ mg_send_http_error(conn,
+ 500,
+ "Error: Cannot create CGI pipe: %s",
+ status);
+ goto done;
+ }
+
+ proc = (struct process_control_data *)
+ mg_malloc_ctx(sizeof(struct process_control_data), conn->phys_ctx);
+ if (proc == NULL) {
+ mg_cry_internal(conn, "Error: CGI program \"%s\": Out or memory", prog);
+ mg_send_http_error(conn, 500, "Error: Out of memory [%s]", prog);
+ goto done;
+ }
+
+ DEBUG_TRACE("CGI: spawn %s %s\n", dir, p);
+ pid = spawn_process(
+ conn, p, blk.buf, blk.var, fdin, fdout, fderr, dir, cgi_config_idx);
+
+ if (pid == (pid_t)-1) {
+ status = strerror(ERRNO);
+ mg_cry_internal(
+ conn,
+ "Error: CGI program \"%s\": Can not spawn CGI process: %s",
+ prog,
+ status);
+ mg_send_http_error(conn, 500, "Error: Cannot spawn CGI process");
+ mg_free(proc);
+ proc = NULL;
+ goto done;
+ }
+
+ /* Store data in shared process_control_data */
+ proc->pid = pid;
+ proc->references = 1;
+
+#if defined(USE_TIMERS)
+ if (cgi_timeout > 0.0) {
+ proc->references = 2;
+
+ // Start a timer for CGI
+ timer_add(conn->phys_ctx,
+ cgi_timeout /* in seconds */,
+ 0.0,
+ 1,
+ abort_cgi_process,
+ (void *)proc,
+ NULL);
+ }
+#endif
+
+ /* Parent closes only one side of the pipes.
+ * If we don't mark them as closed, close() attempt before
+ * return from this function throws an exception on Windows.
+ * Windows does not like when closed descriptor is closed again. */
+ (void)close(fdin[0]);
+ (void)close(fdout[1]);
+ (void)close(fderr[1]);
+ fdin[0] = fdout[1] = fderr[1] = -1;
+
+ if (((in = fdopen(fdin[1], "wb")) == NULL)
+ || ((out = fdopen(fdout[0], "rb")) == NULL)
+ || ((err = fdopen(fderr[0], "rb")) == NULL)) {
+ status = strerror(ERRNO);
+ mg_cry_internal(conn,
+ "Error: CGI program \"%s\": Can not open fd: %s",
+ prog,
+ status);
+ mg_send_http_error(conn,
+ 500,
+ "Error: CGI can not open fd\nfdopen: %s",
+ status);
+ goto done;
+ }
+
+ setbuf(in, NULL);
+ setbuf(out, NULL);
+ setbuf(err, NULL);
+ fout.access.fp = out;
+
+ if ((conn->content_len != 0) || (conn->is_chunked)) {
+ DEBUG_TRACE("CGI: send body data (%" INT64_FMT ")\n",
+ conn->content_len);
+
+ /* This is a POST/PUT request, or another request with body data. */
+ if (!forward_body_data(conn, in, INVALID_SOCKET, NULL)) {
+ /* Error sending the body data */
+ mg_cry_internal(
+ conn,
+ "Error: CGI program \"%s\": Forward body data failed",
+ prog);
+ goto done;
+ }
+ }
+
+ /* Close so child gets an EOF. */
+ fclose(in);
+ in = NULL;
+ fdin[1] = -1;
+
+ /* Now read CGI reply into a buffer. We need to set correct
+ * status code, thus we need to see all HTTP headers first.
+ * Do not send anything back to client, until we buffer in all
+ * HTTP headers. */
+ data_len = 0;
+ buf = (char *)mg_malloc_ctx(buflen, conn->phys_ctx);
+ if (buf == NULL) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: Not enough memory for CGI buffer (%u bytes)",
+ (unsigned int)buflen);
+ mg_cry_internal(
+ conn,
+ "Error: CGI program \"%s\": Not enough memory for buffer (%u "
+ "bytes)",
+ prog,
+ (unsigned int)buflen);
+ goto done;
+ }
+
+ DEBUG_TRACE("CGI: %s", "wait for response");
+ headers_len = read_message(out, conn, buf, (int)buflen, &data_len);
+ DEBUG_TRACE("CGI: response: %li", (signed long)headers_len);
+
+ if (headers_len <= 0) {
+
+ /* Could not parse the CGI response. Check if some error message on
+ * stderr. */
+ i = pull_all(err, conn, buf, (int)buflen);
+ if (i > 0) {
+ /* CGI program explicitly sent an error */
+ /* Write the error message to the internal log */
+ mg_cry_internal(conn,
+ "Error: CGI program \"%s\" sent error "
+ "message: [%.*s]",
+ prog,
+ i,
+ buf);
+ /* Don't send the error message back to the client */
+ mg_send_http_error(conn,
+ 500,
+ "Error: CGI program \"%s\" failed.",
+ prog);
+ } else {
+ /* CGI program did not explicitly send an error, but a broken
+ * respon header */
+ mg_cry_internal(conn,
+ "Error: CGI program sent malformed or too big "
+ "(>%u bytes) HTTP headers: [%.*s]",
+ (unsigned)buflen,
+ data_len,
+ buf);
+
+ mg_send_http_error(conn,
+ 500,
+ "Error: CGI program sent malformed or too big "
+ "(>%u bytes) HTTP headers: [%.*s]",
+ (unsigned)buflen,
+ data_len,
+ buf);
+ }
+
+ /* in both cases, abort processing CGI */
+ goto done;
+ }
+
+ pbuf = buf;
+ buf[headers_len - 1] = '\0';
+ ri.num_headers = parse_http_headers(&pbuf, ri.http_headers);
+
+ /* Make up and send the status line */
+ status_text = "OK";
+ if ((status = get_header(ri.http_headers, ri.num_headers, "Status"))
+ != NULL) {
+ conn->status_code = atoi(status);
+ status_text = status;
+ while (isdigit((unsigned char)*status_text) || *status_text == ' ') {
+ status_text++;
+ }
+ } else if (get_header(ri.http_headers, ri.num_headers, "Location")
+ != NULL) {
+ conn->status_code = 307;
+ } else {
+ conn->status_code = 200;
+ }
+
+ if (!should_keep_alive(conn)) {
+ conn->must_close = 1;
+ }
+
+ DEBUG_TRACE("CGI: response %u %s", conn->status_code, status_text);
+
+ (void)mg_printf(conn, "HTTP/1.1 %d %s\r\n", conn->status_code, status_text);
+
+ /* Send headers */
+ for (i = 0; i < ri.num_headers; i++) {
+ DEBUG_TRACE("CGI header: %s: %s",
+ ri.http_headers[i].name,
+ ri.http_headers[i].value);
+ mg_printf(conn,
+ "%s: %s\r\n",
+ ri.http_headers[i].name,
+ ri.http_headers[i].value);
+ }
+ mg_write(conn, "\r\n", 2);
+
+ /* Send chunk of data that may have been read after the headers */
+ mg_write(conn, buf + headers_len, (size_t)(data_len - headers_len));
+
+ /* Read the rest of CGI output and send to the client */
+ DEBUG_TRACE("CGI: %s", "forward all data");
+ send_file_data(conn, &fout, 0, INT64_MAX, no_buffering); /* send CGI data */
+ DEBUG_TRACE("CGI: %s", "all data sent");
+
+done:
+ mg_free(blk.var);
+ mg_free(blk.buf);
+
+ if (pid != (pid_t)-1) {
+ abort_cgi_process((void *)proc);
+ }
+
+ if (fdin[0] != -1) {
+ close(fdin[0]);
+ }
+ if (fdout[1] != -1) {
+ close(fdout[1]);
+ }
+ if (fderr[1] != -1) {
+ close(fderr[1]);
+ }
+
+ if (in != NULL) {
+ fclose(in);
+ } else if (fdin[1] != -1) {
+ close(fdin[1]);
+ }
+
+ if (out != NULL) {
+ fclose(out);
+ } else if (fdout[0] != -1) {
+ close(fdout[0]);
+ }
+
+ if (err != NULL) {
+ fclose(err);
+ } else if (fderr[0] != -1) {
+ close(fderr[0]);
+ }
+
+ mg_free(buf);
+}
+#endif /* !NO_CGI */
+
+
+#if !defined(NO_FILES)
+static void
+dav_mkcol(struct mg_connection *conn, const char *path)
+{
+ int rc, body_len;
+ struct de de;
+
+ if (conn == NULL) {
+ return;
+ }
+
+ /* TODO (mid): Check the mg_send_http_error situations in this function
+ */
+
+ memset(&de.file, 0, sizeof(de.file));
+ if (!mg_stat(conn, path, &de.file)) {
+ mg_cry_internal(conn,
+ "%s: mg_stat(%s) failed: %s",
+ __func__,
+ path,
+ strerror(ERRNO));
+ }
+
+ if (de.file.last_modified) {
+ /* TODO (mid): This check does not seem to make any sense ! */
+ /* TODO (mid): Add a webdav unit test first, before changing
+ * anything here. */
+ mg_send_http_error(
+ conn, 405, "Error: mkcol(%s): %s", path, strerror(ERRNO));
+ return;
+ }
+
+ body_len = conn->data_len - conn->request_len;
+ if (body_len > 0) {
+ mg_send_http_error(
+ conn, 415, "Error: mkcol(%s): %s", path, strerror(ERRNO));
+ return;
+ }
+
+ rc = mg_mkdir(conn, path, 0755);
+ DEBUG_TRACE("mkdir %s: %i", path, rc);
+ if (rc == 0) {
+ /* Create 201 "Created" response */
+ mg_response_header_start(conn, 201);
+ send_static_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+
+ /* Send all headers - there is no body */
+ mg_response_header_send(conn);
+ } else {
+ int http_status = 500;
+ switch (errno) {
+ case EEXIST:
+ http_status = 405;
+ break;
+ case EACCES:
+ http_status = 403;
+ break;
+ case ENOENT:
+ http_status = 409;
+ break;
+ }
+
+ mg_send_http_error(conn,
+ http_status,
+ "Error processing %s: %s",
+ path,
+ strerror(ERRNO));
+ }
+}
+
+
+/* Forward decrlaration */
+static int get_uri_type(const char *uri);
+static const char *
+get_rel_url_at_current_server(const char *uri,
+ const struct mg_connection *conn);
+
+
+static void
+dav_move_file(struct mg_connection *conn, const char *path, int do_copy)
+{
+ const char *overwrite_hdr;
+ const char *destination_hdr;
+ const char *root;
+ int rc, dest_uri_type;
+ int http_status = 400;
+ int do_overwrite = 0;
+ int destination_ok = 0;
+ char dest_path[UTF8_PATH_MAX];
+ struct mg_file_stat ignored;
+
+ if (conn == NULL) {
+ return;
+ }
+
+ root = conn->dom_ctx->config[DOCUMENT_ROOT];
+ overwrite_hdr = mg_get_header(conn, "Overwrite");
+ destination_hdr = mg_get_header(conn, "Destination");
+ if ((overwrite_hdr != NULL) && (toupper(overwrite_hdr[0]) == 'T')) {
+ do_overwrite = 1;
+ }
+
+ if ((destination_hdr == NULL) || (destination_hdr[0] == 0)) {
+ mg_send_http_error(conn, 400, "%s", "Missing destination");
+ return;
+ }
+
+ if (root != NULL) {
+ char *local_dest = NULL;
+ dest_uri_type = get_uri_type(destination_hdr);
+ if (dest_uri_type == 2) {
+ local_dest = mg_strdup_ctx(destination_hdr, conn->phys_ctx);
+ } else if ((dest_uri_type == 3) || (dest_uri_type == 4)) {
+ const char *h =
+ get_rel_url_at_current_server(destination_hdr, conn);
+ if (h) {
+ size_t len = strlen(h);
+ local_dest = mg_malloc_ctx(len + 1, conn->phys_ctx);
+ mg_url_decode(h, (int)len, local_dest, (int)len + 1, 0);
+ }
+ }
+ if (local_dest != NULL) {
+ remove_dot_segments(local_dest);
+ if (local_dest[0] == '/') {
+ int trunc_check = 0;
+ mg_snprintf(conn,
+ &trunc_check,
+ dest_path,
+ sizeof(dest_path),
+ "%s/%s",
+ root,
+ local_dest);
+ if (trunc_check == 0) {
+ destination_ok = 1;
+ }
+ }
+ mg_free(local_dest);
+ }
+ }
+
+ if (!destination_ok) {
+ mg_send_http_error(conn, 502, "%s", "Illegal destination");
+ return;
+ }
+
+ /* Check now if this file exists */
+ if (mg_stat(conn, dest_path, &ignored)) {
+ /* File exists */
+ if (do_overwrite) {
+ /* Overwrite allowed: delete the file first */
+ if (0 != remove(dest_path)) {
+ /* No overwrite: return error */
+ mg_send_http_error(conn,
+ 403,
+ "Cannot overwrite file: %s",
+ dest_path);
+ return;
+ }
+ } else {
+ /* No overwrite: return error */
+ mg_send_http_error(conn,
+ 412,
+ "Destination already exists: %s",
+ dest_path);
+ return;
+ }
+ }
+
+ /* Copy / Move / Rename operation. */
+ DEBUG_TRACE("%s %s to %s", (do_copy ? "copy" : "move"), path, dest_path);
+#if defined(_WIN32)
+ {
+ /* For Windows, we need to convert from UTF-8 to UTF-16 first. */
+ wchar_t wSource[UTF16_PATH_MAX];
+ wchar_t wDest[UTF16_PATH_MAX];
+ BOOL ok;
+
+ path_to_unicode(conn, path, wSource, ARRAY_SIZE(wSource));
+ path_to_unicode(conn, dest_path, wDest, ARRAY_SIZE(wDest));
+ if (do_copy) {
+ ok = CopyFileW(wSource, wDest, do_overwrite ? FALSE : TRUE);
+ } else {
+ ok = MoveFileExW(wSource,
+ wDest,
+ do_overwrite ? MOVEFILE_REPLACE_EXISTING : 0);
+ }
+ if (ok) {
+ rc = 0;
+ } else {
+ DWORD lastErr = GetLastError();
+ if (lastErr == ERROR_ALREADY_EXISTS) {
+ mg_send_http_error(conn,
+ 412,
+ "Destination already exists: %s",
+ dest_path);
+ return;
+ }
+ rc = -1;
+ http_status = 400;
+ }
+ }
+
+#else
+ {
+ /* Linux uses already UTF-8, we don't need to convert file names. */
+
+ if (do_copy) {
+ /* TODO: COPY for Linux. */
+ mg_send_http_error(conn, 403, "%s", "COPY forbidden");
+ return;
+ }
+
+ rc = rename(path, dest_path);
+ if (rc) {
+ switch (errno) {
+ case EEXIST:
+ http_status = 412;
+ break;
+ case EACCES:
+ http_status = 403;
+ break;
+ case ENOENT:
+ http_status = 409;
+ break;
+ }
+ }
+ }
+#endif
+
+ if (rc == 0) {
+ /* Create 204 "No Content" response */
+ mg_response_header_start(conn, 204);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+
+ /* Send all headers - there is no body */
+ mg_response_header_send(conn);
+ } else {
+ mg_send_http_error(conn, http_status, "Operation failed");
+ }
+}
+
+
+static void
+put_file(struct mg_connection *conn, const char *path)
+{
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ const char *range;
+ int64_t r1, r2;
+ int rc;
+
+ if (conn == NULL) {
+ return;
+ }
+
+ DEBUG_TRACE("store %s", path);
+
+ if (mg_stat(conn, path, &file.stat)) {
+ /* File already exists */
+ conn->status_code = 200;
+
+ if (file.stat.is_directory) {
+ /* This is an already existing directory,
+ * so there is nothing to do for the server. */
+ rc = 0;
+
+ } else {
+ /* File exists and is not a directory. */
+ /* Can it be replaced? */
+
+ /* Check if the server may write this file */
+ if (access(path, W_OK) == 0) {
+ /* Access granted */
+ rc = 1;
+ } else {
+ mg_send_http_error(
+ conn,
+ 403,
+ "Error: Put not possible\nReplacing %s is not allowed",
+ path);
+ return;
+ }
+ }
+ } else {
+ /* File should be created */
+ conn->status_code = 201;
+ rc = put_dir(conn, path);
+ }
+
+ if (rc == 0) {
+ /* put_dir returns 0 if path is a directory */
+
+ /* Create response */
+ mg_response_header_start(conn, conn->status_code);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+
+ /* Send all headers - there is no body */
+ mg_response_header_send(conn);
+
+ /* Request to create a directory has been fulfilled successfully.
+ * No need to put a file. */
+ return;
+ }
+
+ if (rc == -1) {
+ /* put_dir returns -1 if the path is too long */
+ mg_send_http_error(conn,
+ 414,
+ "Error: Path too long\nput_dir(%s): %s",
+ path,
+ strerror(ERRNO));
+ return;
+ }
+
+ if (rc == -2) {
+ /* put_dir returns -2 if the directory can not be created */
+ mg_send_http_error(conn,
+ 500,
+ "Error: Can not create directory\nput_dir(%s): %s",
+ path,
+ strerror(ERRNO));
+ return;
+ }
+
+ /* A file should be created or overwritten. */
+ /* Currently CivetWeb does not need read+write access. */
+ if (!mg_fopen(conn, path, MG_FOPEN_MODE_WRITE, &file)
+ || file.access.fp == NULL) {
+ (void)mg_fclose(&file.access);
+ mg_send_http_error(conn,
+ 500,
+ "Error: Can not create file\nfopen(%s): %s",
+ path,
+ strerror(ERRNO));
+ return;
+ }
+
+ fclose_on_exec(&file.access, conn);
+ range = mg_get_header(conn, "Content-Range");
+ r1 = r2 = 0;
+ if ((range != NULL) && parse_range_header(range, &r1, &r2) > 0) {
+ conn->status_code = 206; /* Partial content */
+ if (0 != fseeko(file.access.fp, r1, SEEK_SET)) {
+ mg_send_http_error(conn,
+ 500,
+ "Error: Internal error processing file %s",
+ path);
+ return;
+ }
+ }
+
+ if (!forward_body_data(conn, file.access.fp, INVALID_SOCKET, NULL)) {
+ /* forward_body_data failed.
+ * The error code has already been sent to the client,
+ * and conn->status_code is already set. */
+ (void)mg_fclose(&file.access);
+ return;
+ }
+
+ if (mg_fclose(&file.access) != 0) {
+ /* fclose failed. This might have different reasons, but a likely
+ * one is "no space on disk", http 507. */
+ conn->status_code = 507;
+ }
+
+ /* Create response (status_code has been set before) */
+ mg_response_header_start(conn, conn->status_code);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+
+ /* Send all headers - there is no body */
+ mg_response_header_send(conn);
+}
+
+
+static void
+delete_file(struct mg_connection *conn, const char *path)
+{
+ struct de de;
+ memset(&de.file, 0, sizeof(de.file));
+ if (!mg_stat(conn, path, &de.file)) {
+ /* mg_stat returns 0 if the file does not exist */
+ mg_send_http_error(conn,
+ 404,
+ "Error: Cannot delete file\nFile %s not found",
+ path);
+ return;
+ }
+
+ DEBUG_TRACE("delete %s", path);
+
+ if (de.file.is_directory) {
+ if (remove_directory(conn, path)) {
+ /* Delete is successful: Return 204 without content. */
+ mg_send_http_error(conn, 204, "%s", "");
+ } else {
+ /* Delete is not successful: Return 500 (Server error). */
+ mg_send_http_error(conn, 500, "Error: Could not delete %s", path);
+ }
+ return;
+ }
+
+ /* This is an existing file (not a directory).
+ * Check if write permission is granted. */
+ if (access(path, W_OK) != 0) {
+ /* File is read only */
+ mg_send_http_error(
+ conn,
+ 403,
+ "Error: Delete not possible\nDeleting %s is not allowed",
+ path);
+ return;
+ }
+
+ /* Try to delete it. */
+ if (mg_remove(conn, path) == 0) {
+ /* Delete was successful: Return 204 without content. */
+ mg_response_header_start(conn, 204);
+ send_no_cache_header(conn);
+ send_additional_header(conn);
+ mg_response_header_add(conn, "Content-Length", "0", -1);
+ mg_response_header_send(conn);
+
+ } else {
+ /* Delete not successful (file locked). */
+ mg_send_http_error(conn,
+ 423,
+ "Error: Cannot delete file\nremove(%s): %s",
+ path,
+ strerror(ERRNO));
+ }
+}
+#endif /* !NO_FILES */
+
+
+#if !defined(NO_FILESYSTEMS)
+static void
+send_ssi_file(struct mg_connection *, const char *, struct mg_file *, int);
+
+
+static void
+do_ssi_include(struct mg_connection *conn,
+ const char *ssi,
+ char *tag,
+ int include_level)
+{
+ char file_name[MG_BUF_LEN], path[512], *p;
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ size_t len;
+ int truncated = 0;
+
+ if (conn == NULL) {
+ return;
+ }
+
+ /* sscanf() is safe here, since send_ssi_file() also uses buffer
+ * of size MG_BUF_LEN to get the tag. So strlen(tag) is
+ * always < MG_BUF_LEN. */
+ if (sscanf(tag, " virtual=\"%511[^\"]\"", file_name) == 1) {
+ /* File name is relative to the webserver root */
+ file_name[511] = 0;
+ (void)mg_snprintf(conn,
+ &truncated,
+ path,
+ sizeof(path),
+ "%s/%s",
+ conn->dom_ctx->config[DOCUMENT_ROOT],
+ file_name);
+
+ } else if (sscanf(tag, " abspath=\"%511[^\"]\"", file_name) == 1) {
+ /* File name is relative to the webserver working directory
+ * or it is absolute system path */
+ file_name[511] = 0;
+ (void)
+ mg_snprintf(conn, &truncated, path, sizeof(path), "%s", file_name);
+
+ } else if ((sscanf(tag, " file=\"%511[^\"]\"", file_name) == 1)
+ || (sscanf(tag, " \"%511[^\"]\"", file_name) == 1)) {
+ /* File name is relative to the current document */
+ file_name[511] = 0;
+ (void)mg_snprintf(conn, &truncated, path, sizeof(path), "%s", ssi);
+
+ if (!truncated) {
+ if ((p = strrchr(path, '/')) != NULL) {
+ p[1] = '\0';
+ }
+ len = strlen(path);
+ (void)mg_snprintf(conn,
+ &truncated,
+ path + len,
+ sizeof(path) - len,
+ "%s",
+ file_name);
+ }
+
+ } else {
+ mg_cry_internal(conn, "Bad SSI #include: [%s]", tag);
+ return;
+ }
+
+ if (truncated) {
+ mg_cry_internal(conn, "SSI #include path length overflow: [%s]", tag);
+ return;
+ }
+
+ if (!mg_fopen(conn, path, MG_FOPEN_MODE_READ, &file)) {
+ mg_cry_internal(conn,
+ "Cannot open SSI #include: [%s]: fopen(%s): %s",
+ tag,
+ path,
+ strerror(ERRNO));
+ } else {
+ fclose_on_exec(&file.access, conn);
+ if (match_prefix_strlen(conn->dom_ctx->config[SSI_EXTENSIONS], path)
+ > 0) {
+ send_ssi_file(conn, path, &file, include_level + 1);
+ } else {
+ send_file_data(conn, &file, 0, INT64_MAX, 0); /* send static file */
+ }
+ (void)mg_fclose(&file.access); /* Ignore errors for readonly files */
+ }
+}
+
+
+#if !defined(NO_POPEN)
+static void
+do_ssi_exec(struct mg_connection *conn, char *tag)
+{
+ char cmd[1024] = "";
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+
+ if (sscanf(tag, " \"%1023[^\"]\"", cmd) != 1) {
+ mg_cry_internal(conn, "Bad SSI #exec: [%s]", tag);
+ } else {
+ cmd[1023] = 0;
+ if ((file.access.fp = popen(cmd, "r")) == NULL) {
+ mg_cry_internal(conn,
+ "Cannot SSI #exec: [%s]: %s",
+ cmd,
+ strerror(ERRNO));
+ } else {
+ send_file_data(conn, &file, 0, INT64_MAX, 0); /* send static file */
+ pclose(file.access.fp);
+ }
+ }
+}
+#endif /* !NO_POPEN */
+
+
+static int
+mg_fgetc(struct mg_file *filep)
+{
+ if (filep == NULL) {
+ return EOF;
+ }
+
+ if (filep->access.fp != NULL) {
+ return fgetc(filep->access.fp);
+ } else {
+ return EOF;
+ }
+}
+
+
+static void
+send_ssi_file(struct mg_connection *conn,
+ const char *path,
+ struct mg_file *filep,
+ int include_level)
+{
+ char buf[MG_BUF_LEN];
+ int ch, len, in_tag, in_ssi_tag;
+
+ if (include_level > 10) {
+ mg_cry_internal(conn, "SSI #include level is too deep (%s)", path);
+ return;
+ }
+
+ in_tag = in_ssi_tag = len = 0;
+
+ /* Read file, byte by byte, and look for SSI include tags */
+ while ((ch = mg_fgetc(filep)) != EOF) {
+
+ if (in_tag) {
+ /* We are in a tag, either SSI tag or html tag */
+
+ if (ch == '>') {
+ /* Tag is closing */
+ buf[len++] = '>';
+
+ if (in_ssi_tag) {
+ /* Handle SSI tag */
+ buf[len] = 0;
+
+ if ((len > 12) && !memcmp(buf + 5, "include", 7)) {
+ do_ssi_include(conn, path, buf + 12, include_level + 1);
+#if !defined(NO_POPEN)
+ } else if ((len > 9) && !memcmp(buf + 5, "exec", 4)) {
+ do_ssi_exec(conn, buf + 9);
+#endif /* !NO_POPEN */
+ } else {
+ mg_cry_internal(conn,
+ "%s: unknown SSI "
+ "command: \"%s\"",
+ path,
+ buf);
+ }
+ len = 0;
+ in_ssi_tag = in_tag = 0;
+
+ } else {
+ /* Not an SSI tag */
+ /* Flush buffer */
+ (void)mg_write(conn, buf, (size_t)len);
+ len = 0;
+ in_tag = 0;
+ }
+
+ } else {
+ /* Tag is still open */
+ buf[len++] = (char)(ch & 0xff);
+
+ if ((len == 5) && !memcmp(buf, " Error */
+ return -1;
+ }
+
+ /* Upgrade to ... */
+ if (0 != mg_strcasestr(upgrade_to, "websocket")) {
+ /* The headers "Host", "Sec-WebSocket-Key", "Sec-WebSocket-Protocol" and
+ * "Sec-WebSocket-Version" are also required.
+ * Don't check them here, since even an unsupported websocket protocol
+ * request still IS a websocket request (in contrast to a standard HTTP
+ * request). It will fail later in handle_websocket_request.
+ */
+ return PROTOCOL_TYPE_WEBSOCKET; /* Websocket */
+ }
+ if (0 != mg_strcasestr(upgrade_to, "h2")) {
+ return PROTOCOL_TYPE_HTTP2; /* Websocket */
+ }
+
+ /* Upgrade to another protocol */
+ return -1;
+}
+
+
+static int
+parse_match_net(const struct vec *vec, const union usa *sa, int no_strict)
+{
+ int n;
+ unsigned int a, b, c, d, slash;
+
+ if (sscanf(vec->ptr, "%u.%u.%u.%u/%u%n", &a, &b, &c, &d, &slash, &n)
+ != 5) { // NOLINT(cert-err34-c) 'sscanf' used to convert a string to an
+ // integer value, but function will not report conversion
+ // errors; consider using 'strtol' instead
+ slash = 32;
+ if (sscanf(vec->ptr, "%u.%u.%u.%u%n", &a, &b, &c, &d, &n)
+ != 4) { // NOLINT(cert-err34-c) 'sscanf' used to convert a string to
+ // an integer value, but function will not report conversion
+ // errors; consider using 'strtol' instead
+ n = 0;
+ }
+ }
+
+ if ((n > 0) && ((size_t)n == vec->len)) {
+ if ((a < 256) && (b < 256) && (c < 256) && (d < 256) && (slash < 33)) {
+ /* IPv4 format */
+ if (sa->sa.sa_family == AF_INET) {
+ uint32_t ip = ntohl(sa->sin.sin_addr.s_addr);
+ uint32_t net = ((uint32_t)a << 24) | ((uint32_t)b << 16)
+ | ((uint32_t)c << 8) | (uint32_t)d;
+ uint32_t mask = slash ? (0xFFFFFFFFu << (32 - slash)) : 0;
+ return (ip & mask) == net;
+ }
+ return 0;
+ }
+ }
+#if defined(USE_IPV6)
+ else {
+ char ad[50];
+ const char *p;
+
+ if (sscanf(vec->ptr, "[%49[^]]]/%u%n", ad, &slash, &n) != 2) {
+ slash = 128;
+ if (sscanf(vec->ptr, "[%49[^]]]%n", ad, &n) != 1) {
+ n = 0;
+ }
+ }
+
+ if ((n <= 0) && no_strict) {
+ /* no square brackets? */
+ p = strchr(vec->ptr, '/');
+ if (p && (p < (vec->ptr + vec->len))) {
+ if (((size_t)(p - vec->ptr) < sizeof(ad))
+ && (sscanf(p, "/%u%n", &slash, &n) == 1)) {
+ n += (int)(p - vec->ptr);
+ mg_strlcpy(ad, vec->ptr, (size_t)(p - vec->ptr) + 1);
+ } else {
+ n = 0;
+ }
+ } else if (vec->len < sizeof(ad)) {
+ n = (int)vec->len;
+ slash = 128;
+ mg_strlcpy(ad, vec->ptr, vec->len + 1);
+ }
+ }
+
+ if ((n > 0) && ((size_t)n == vec->len) && (slash < 129)) {
+ p = ad;
+ c = 0;
+ /* zone indexes are unsupported, at least two colons are needed */
+ while (isxdigit((unsigned char)*p) || (*p == '.') || (*p == ':')) {
+ if (*(p++) == ':') {
+ c++;
+ }
+ }
+ if ((*p == '\0') && (c >= 2)) {
+ struct sockaddr_in6 sin6;
+ unsigned int i;
+
+ /* for strict validation, an actual IPv6 argument is needed */
+ if (sa->sa.sa_family != AF_INET6) {
+ return 0;
+ }
+ if (mg_inet_pton(AF_INET6, ad, &sin6, sizeof(sin6), 0)) {
+ /* IPv6 format */
+ for (i = 0; i < 16; i++) {
+ uint8_t ip = sa->sin6.sin6_addr.s6_addr[i];
+ uint8_t net = sin6.sin6_addr.s6_addr[i];
+ uint8_t mask = 0;
+
+ if (8 * i + 8 < slash) {
+ mask = 0xFFu;
+ } else if (8 * i < slash) {
+ mask = (uint8_t)(0xFFu << (8 * i + 8 - slash));
+ }
+ if ((ip & mask) != net) {
+ return 0;
+ }
+ }
+ return 1;
+ }
+ }
+ }
+ }
+#else
+ (void)no_strict;
+#endif
+
+ /* malformed */
+ return -1;
+}
+
+
+static int
+set_throttle(const char *spec, const union usa *rsa, const char *uri)
+{
+ int throttle = 0;
+ struct vec vec, val;
+ char mult;
+ double v;
+
+ while ((spec = next_option(spec, &vec, &val)) != NULL) {
+ mult = ',';
+ if ((val.ptr == NULL)
+ || (sscanf(val.ptr, "%lf%c", &v, &mult)
+ < 1) // NOLINT(cert-err34-c) 'sscanf' used to convert a string
+ // to an integer value, but function will not report
+ // conversion errors; consider using 'strtol' instead
+ || (v < 0)
+ || ((lowercase(&mult) != 'k') && (lowercase(&mult) != 'm')
+ && (mult != ','))) {
+ continue;
+ }
+ v *= (lowercase(&mult) == 'k')
+ ? 1024
+ : ((lowercase(&mult) == 'm') ? 1048576 : 1);
+ if (vec.len == 1 && vec.ptr[0] == '*') {
+ throttle = (int)v;
+ } else {
+ int matched = parse_match_net(&vec, rsa, 0);
+ if (matched >= 0) {
+ /* a valid IP subnet */
+ if (matched) {
+ throttle = (int)v;
+ }
+ } else if (match_prefix(vec.ptr, vec.len, uri) > 0) {
+ throttle = (int)v;
+ }
+ }
+ }
+
+ return throttle;
+}
+
+
+/* The mg_upload function is superseded by mg_handle_form_request. */
+#include "handle_form.inl"
+
+
+static int
+get_first_ssl_listener_index(const struct mg_context *ctx)
+{
+ unsigned int i;
+ int idx = -1;
+ if (ctx) {
+ for (i = 0; ((idx == -1) && (i < ctx->num_listening_sockets)); i++) {
+ idx = ctx->listening_sockets[i].is_ssl ? ((int)(i)) : -1;
+ }
+ }
+ return idx;
+}
+
+
+/* Return host (without port) */
+static void
+get_host_from_request_info(struct vec *host, const struct mg_request_info *ri)
+{
+ const char *host_header =
+ get_header(ri->http_headers, ri->num_headers, "Host");
+
+ host->ptr = NULL;
+ host->len = 0;
+
+ if (host_header != NULL) {
+ const char *pos;
+
+ /* If the "Host" is an IPv6 address, like [::1], parse until ]
+ * is found. */
+ if (*host_header == '[') {
+ pos = strchr(host_header, ']');
+ if (!pos) {
+ /* Malformed hostname starts with '[', but no ']' found */
+ DEBUG_TRACE("%s", "Host name format error '[' without ']'");
+ return;
+ }
+ /* terminate after ']' */
+ host->ptr = host_header;
+ host->len = (size_t)(pos + 1 - host_header);
+ } else {
+ /* Otherwise, a ':' separates hostname and port number */
+ pos = strchr(host_header, ':');
+ if (pos != NULL) {
+ host->len = (size_t)(pos - host_header);
+ } else {
+ host->len = strlen(host_header);
+ }
+ host->ptr = host_header;
+ }
+ }
+}
+
+
+static int
+switch_domain_context(struct mg_connection *conn)
+{
+ struct vec host;
+
+ get_host_from_request_info(&host, &conn->request_info);
+
+ if (host.ptr) {
+ if (conn->ssl) {
+ /* This is a HTTPS connection, maybe we have a hostname
+ * from SNI (set in ssl_servername_callback). */
+ const char *sslhost = conn->dom_ctx->config[AUTHENTICATION_DOMAIN];
+ if (sslhost && (conn->dom_ctx != &(conn->phys_ctx->dd))) {
+ /* We are not using the default domain */
+ if ((strlen(sslhost) != host.len)
+ || mg_strncasecmp(host.ptr, sslhost, host.len)) {
+ /* Mismatch between SNI domain and HTTP domain */
+ DEBUG_TRACE("Host mismatch: SNI: %s, HTTPS: %.*s",
+ sslhost,
+ (int)host.len,
+ host.ptr);
+ return 0;
+ }
+ }
+
+ } else {
+ struct mg_domain_context *dom = &(conn->phys_ctx->dd);
+ while (dom) {
+ const char *domName = dom->config[AUTHENTICATION_DOMAIN];
+ size_t domNameLen = strlen(domName);
+ if ((domNameLen == host.len)
+ && !mg_strncasecmp(host.ptr, domName, host.len)) {
+
+ /* Found matching domain */
+ DEBUG_TRACE("HTTP domain %s found",
+ dom->config[AUTHENTICATION_DOMAIN]);
+
+ /* TODO: Check if this is a HTTP or HTTPS domain */
+ conn->dom_ctx = dom;
+ break;
+ }
+ mg_lock_context(conn->phys_ctx);
+ dom = dom->next;
+ mg_unlock_context(conn->phys_ctx);
+ }
+ }
+
+ DEBUG_TRACE("HTTP%s Host: %.*s",
+ conn->ssl ? "S" : "",
+ (int)host.len,
+ host.ptr);
+
+ } else {
+ DEBUG_TRACE("HTTP%s Host is not set", conn->ssl ? "S" : "");
+ return 1;
+ }
+
+ return 1;
+}
+
+
+static void
+redirect_to_https_port(struct mg_connection *conn, int port)
+{
+ char target_url[MG_BUF_LEN];
+ int truncated = 0;
+ const char *expect_proto =
+ (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET) ? "wss" : "https";
+
+ /* Use "308 Permanent Redirect" */
+ int redirect_code = 308;
+
+ /* In any case, close the current connection */
+ conn->must_close = 1;
+
+ /* Send host, port, uri and (if it exists) ?query_string */
+ if (mg_construct_local_link(
+ conn, target_url, sizeof(target_url), expect_proto, port, NULL)
+ < 0) {
+ truncated = 1;
+ } else if (conn->request_info.query_string != NULL) {
+ size_t slen1 = strlen(target_url);
+ size_t slen2 = strlen(conn->request_info.query_string);
+ if ((slen1 + slen2 + 2) < sizeof(target_url)) {
+ target_url[slen1] = '?';
+ memcpy(target_url + slen1 + 1,
+ conn->request_info.query_string,
+ slen2);
+ target_url[slen1 + slen2 + 1] = 0;
+ } else {
+ truncated = 1;
+ }
+ }
+
+ /* Check overflow in location buffer (will not occur if MG_BUF_LEN
+ * is used as buffer size) */
+ if (truncated) {
+ mg_send_http_error(conn, 500, "%s", "Redirect URL too long");
+ return;
+ }
+
+ /* Use redirect helper function */
+ mg_send_http_redirect(conn, target_url, redirect_code);
+}
+
+
+static void
+mg_set_handler_type(struct mg_context *phys_ctx,
+ struct mg_domain_context *dom_ctx,
+ const char *uri,
+ int handler_type,
+ int is_delete_request,
+ mg_request_handler handler,
+ struct mg_websocket_subprotocols *subprotocols,
+ mg_websocket_connect_handler connect_handler,
+ mg_websocket_ready_handler ready_handler,
+ mg_websocket_data_handler data_handler,
+ mg_websocket_close_handler close_handler,
+ mg_authorization_handler auth_handler,
+ void *cbdata)
+{
+ struct mg_handler_info *tmp_rh, **lastref;
+ size_t urilen = strlen(uri);
+
+ if (handler_type == WEBSOCKET_HANDLER) {
+ DEBUG_ASSERT(handler == NULL);
+ DEBUG_ASSERT(is_delete_request || connect_handler != NULL
+ || ready_handler != NULL || data_handler != NULL
+ || close_handler != NULL);
+
+ DEBUG_ASSERT(auth_handler == NULL);
+ if (handler != NULL) {
+ return;
+ }
+ if (!is_delete_request && (connect_handler == NULL)
+ && (ready_handler == NULL) && (data_handler == NULL)
+ && (close_handler == NULL)) {
+ return;
+ }
+ if (auth_handler != NULL) {
+ return;
+ }
+
+ } else if (handler_type == REQUEST_HANDLER) {
+ DEBUG_ASSERT(connect_handler == NULL && ready_handler == NULL
+ && data_handler == NULL && close_handler == NULL);
+ DEBUG_ASSERT(is_delete_request || (handler != NULL));
+ DEBUG_ASSERT(auth_handler == NULL);
+
+ if ((connect_handler != NULL) || (ready_handler != NULL)
+ || (data_handler != NULL) || (close_handler != NULL)) {
+ return;
+ }
+ if (!is_delete_request && (handler == NULL)) {
+ return;
+ }
+ if (auth_handler != NULL) {
+ return;
+ }
+
+ } else if (handler_type == AUTH_HANDLER) {
+ DEBUG_ASSERT(handler == NULL);
+ DEBUG_ASSERT(connect_handler == NULL && ready_handler == NULL
+ && data_handler == NULL && close_handler == NULL);
+ DEBUG_ASSERT(is_delete_request || (auth_handler != NULL));
+ if (handler != NULL) {
+ return;
+ }
+ if ((connect_handler != NULL) || (ready_handler != NULL)
+ || (data_handler != NULL) || (close_handler != NULL)) {
+ return;
+ }
+ if (!is_delete_request && (auth_handler == NULL)) {
+ return;
+ }
+ } else {
+ /* Unknown handler type. */
+ return;
+ }
+
+ if (!phys_ctx || !dom_ctx) {
+ /* no context available */
+ return;
+ }
+
+ mg_lock_context(phys_ctx);
+
+ /* first try to find an existing handler */
+ do {
+ lastref = &(dom_ctx->handlers);
+ for (tmp_rh = dom_ctx->handlers; tmp_rh != NULL;
+ tmp_rh = tmp_rh->next) {
+ if (tmp_rh->handler_type == handler_type
+ && (urilen == tmp_rh->uri_len) && !strcmp(tmp_rh->uri, uri)) {
+ if (!is_delete_request) {
+ /* update existing handler */
+ if (handler_type == REQUEST_HANDLER) {
+ /* Wait for end of use before updating */
+ if (tmp_rh->refcount) {
+ mg_unlock_context(phys_ctx);
+ mg_sleep(1);
+ mg_lock_context(phys_ctx);
+ /* tmp_rh might have been freed, search again. */
+ break;
+ }
+ /* Ok, the handler is no more use -> Update it */
+ tmp_rh->handler = handler;
+ } else if (handler_type == WEBSOCKET_HANDLER) {
+ tmp_rh->subprotocols = subprotocols;
+ tmp_rh->connect_handler = connect_handler;
+ tmp_rh->ready_handler = ready_handler;
+ tmp_rh->data_handler = data_handler;
+ tmp_rh->close_handler = close_handler;
+ } else { /* AUTH_HANDLER */
+ tmp_rh->auth_handler = auth_handler;
+ }
+ tmp_rh->cbdata = cbdata;
+ } else {
+ /* remove existing handler */
+ if (handler_type == REQUEST_HANDLER) {
+ /* Wait for end of use before removing */
+ if (tmp_rh->refcount) {
+ tmp_rh->removing = 1;
+ mg_unlock_context(phys_ctx);
+ mg_sleep(1);
+ mg_lock_context(phys_ctx);
+ /* tmp_rh might have been freed, search again. */
+ break;
+ }
+ /* Ok, the handler is no more used */
+ }
+ *lastref = tmp_rh->next;
+ mg_free(tmp_rh->uri);
+ mg_free(tmp_rh);
+ }
+ mg_unlock_context(phys_ctx);
+ return;
+ }
+ lastref = &(tmp_rh->next);
+ }
+ } while (tmp_rh != NULL);
+
+ if (is_delete_request) {
+ /* no handler to set, this was a remove request to a non-existing
+ * handler */
+ mg_unlock_context(phys_ctx);
+ return;
+ }
+
+ tmp_rh =
+ (struct mg_handler_info *)mg_calloc_ctx(1,
+ sizeof(struct mg_handler_info),
+ phys_ctx);
+ if (tmp_rh == NULL) {
+ mg_unlock_context(phys_ctx);
+ mg_cry_ctx_internal(phys_ctx,
+ "%s",
+ "Cannot create new request handler struct, OOM");
+ return;
+ }
+ tmp_rh->uri = mg_strdup_ctx(uri, phys_ctx);
+ if (!tmp_rh->uri) {
+ mg_unlock_context(phys_ctx);
+ mg_free(tmp_rh);
+ mg_cry_ctx_internal(phys_ctx,
+ "%s",
+ "Cannot create new request handler struct, OOM");
+ return;
+ }
+ tmp_rh->uri_len = urilen;
+ if (handler_type == REQUEST_HANDLER) {
+ tmp_rh->refcount = 0;
+ tmp_rh->removing = 0;
+ tmp_rh->handler = handler;
+ } else if (handler_type == WEBSOCKET_HANDLER) {
+ tmp_rh->subprotocols = subprotocols;
+ tmp_rh->connect_handler = connect_handler;
+ tmp_rh->ready_handler = ready_handler;
+ tmp_rh->data_handler = data_handler;
+ tmp_rh->close_handler = close_handler;
+ } else { /* AUTH_HANDLER */
+ tmp_rh->auth_handler = auth_handler;
+ }
+ tmp_rh->cbdata = cbdata;
+ tmp_rh->handler_type = handler_type;
+ tmp_rh->next = NULL;
+
+ *lastref = tmp_rh;
+ mg_unlock_context(phys_ctx);
+}
+
+
+CIVETWEB_API void
+mg_set_request_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_request_handler handler,
+ void *cbdata)
+{
+ mg_set_handler_type(ctx,
+ &(ctx->dd),
+ uri,
+ REQUEST_HANDLER,
+ handler == NULL,
+ handler,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ cbdata);
+}
+
+
+CIVETWEB_API void
+mg_set_websocket_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_websocket_connect_handler connect_handler,
+ mg_websocket_ready_handler ready_handler,
+ mg_websocket_data_handler data_handler,
+ mg_websocket_close_handler close_handler,
+ void *cbdata)
+{
+ mg_set_websocket_handler_with_subprotocols(ctx,
+ uri,
+ NULL,
+ connect_handler,
+ ready_handler,
+ data_handler,
+ close_handler,
+ cbdata);
+}
+
+
+CIVETWEB_API void
+mg_set_websocket_handler_with_subprotocols(
+ struct mg_context *ctx,
+ const char *uri,
+ struct mg_websocket_subprotocols *subprotocols,
+ mg_websocket_connect_handler connect_handler,
+ mg_websocket_ready_handler ready_handler,
+ mg_websocket_data_handler data_handler,
+ mg_websocket_close_handler close_handler,
+ void *cbdata)
+{
+ int is_delete_request = (connect_handler == NULL) && (ready_handler == NULL)
+ && (data_handler == NULL)
+ && (close_handler == NULL);
+ mg_set_handler_type(ctx,
+ &(ctx->dd),
+ uri,
+ WEBSOCKET_HANDLER,
+ is_delete_request,
+ NULL,
+ subprotocols,
+ connect_handler,
+ ready_handler,
+ data_handler,
+ close_handler,
+ NULL,
+ cbdata);
+}
+
+
+CIVETWEB_API void
+mg_set_auth_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_authorization_handler handler,
+ void *cbdata)
+{
+ mg_set_handler_type(ctx,
+ &(ctx->dd),
+ uri,
+ AUTH_HANDLER,
+ handler == NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ handler,
+ cbdata);
+}
+
+
+static int
+get_request_handler(struct mg_connection *conn,
+ int handler_type,
+ mg_request_handler *handler,
+ struct mg_websocket_subprotocols **subprotocols,
+ mg_websocket_connect_handler *connect_handler,
+ mg_websocket_ready_handler *ready_handler,
+ mg_websocket_data_handler *data_handler,
+ mg_websocket_close_handler *close_handler,
+ mg_authorization_handler *auth_handler,
+ void **cbdata,
+ struct mg_handler_info **handler_info)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ if (request_info) {
+ const char *uri = request_info->local_uri;
+ size_t urilen = strlen(uri);
+ struct mg_handler_info *tmp_rh;
+ int step, matched;
+
+ if (!conn || !conn->phys_ctx || !conn->dom_ctx) {
+ return 0;
+ }
+
+ mg_lock_context(conn->phys_ctx);
+
+ for (step = 0; step < 3; step++) {
+ for (tmp_rh = conn->dom_ctx->handlers; tmp_rh != NULL;
+ tmp_rh = tmp_rh->next) {
+ if (tmp_rh->handler_type != handler_type) {
+ continue;
+ }
+ if (step == 0) {
+ /* first try for an exact match */
+ matched = (tmp_rh->uri_len == urilen)
+ && (strcmp(tmp_rh->uri, uri) == 0);
+ } else if (step == 1) {
+ /* next try for a partial match, we will accept
+ uri/something */
+ matched =
+ (tmp_rh->uri_len < urilen)
+ && (uri[tmp_rh->uri_len] == '/')
+ && (memcmp(tmp_rh->uri, uri, tmp_rh->uri_len) == 0);
+ } else {
+ /* finally try for pattern match */
+ matched =
+ match_prefix(tmp_rh->uri, tmp_rh->uri_len, uri) > 0;
+ }
+ if (matched) {
+ if (handler_type == WEBSOCKET_HANDLER) {
+ *subprotocols = tmp_rh->subprotocols;
+ *connect_handler = tmp_rh->connect_handler;
+ *ready_handler = tmp_rh->ready_handler;
+ *data_handler = tmp_rh->data_handler;
+ *close_handler = tmp_rh->close_handler;
+ } else if (handler_type == REQUEST_HANDLER) {
+ if (tmp_rh->removing) {
+ /* Treat as none found */
+ step = 2;
+ break;
+ }
+ *handler = tmp_rh->handler;
+ /* Acquire handler and give it back */
+ tmp_rh->refcount++;
+ *handler_info = tmp_rh;
+ } else { /* AUTH_HANDLER */
+ *auth_handler = tmp_rh->auth_handler;
+ }
+ *cbdata = tmp_rh->cbdata;
+ mg_unlock_context(conn->phys_ctx);
+ return 1;
+ }
+ }
+ }
+
+ mg_unlock_context(conn->phys_ctx);
+ }
+ return 0; /* none found */
+}
+
+
+/* Check if the script file is in a path, allowed for script files.
+ * This can be used if uploading files is possible not only for the server
+ * admin, and the upload mechanism does not check the file extension.
+ */
+static int
+is_in_script_path(const struct mg_connection *conn, const char *path)
+{
+ /* TODO (Feature): Add config value for allowed script path.
+ * Default: All allowed. */
+ (void)conn;
+ (void)path;
+ return 1;
+}
+
+
+#if defined(USE_WEBSOCKET) && defined(MG_EXPERIMENTAL_INTERFACES)
+static int
+experimental_websocket_client_data_wrapper(struct mg_connection *conn,
+ int bits,
+ char *data,
+ size_t len,
+ void *cbdata)
+{
+ struct mg_callbacks *pcallbacks = (struct mg_callbacks *)cbdata;
+ if (pcallbacks->websocket_data) {
+ return pcallbacks->websocket_data(conn, bits, data, len);
+ }
+ /* No handler set - assume "OK" */
+ return 1;
+}
+
+
+static void
+experimental_websocket_client_close_wrapper(const struct mg_connection *conn,
+ void *cbdata)
+{
+ struct mg_callbacks *pcallbacks = (struct mg_callbacks *)cbdata;
+ if (pcallbacks->connection_close) {
+ pcallbacks->connection_close(conn);
+ }
+}
+#endif
+
+
+/* Decrement recount of handler. conn must not be NULL, handler_info may be NULL
+ */
+static void
+release_handler_ref(struct mg_connection *conn,
+ struct mg_handler_info *handler_info)
+{
+ if (handler_info != NULL) {
+ /* Use context lock for ref counter */
+ mg_lock_context(conn->phys_ctx);
+ handler_info->refcount--;
+ mg_unlock_context(conn->phys_ctx);
+ }
+}
+
+
+/* This is the heart of the Civetweb's logic.
+ * This function is called when the request is read, parsed and validated,
+ * and Civetweb must decide what action to take: serve a file, or
+ * a directory, or call embedded function, etcetera. */
+static void
+handle_request(struct mg_connection *conn)
+{
+ struct mg_request_info *ri = &conn->request_info;
+ char path[UTF8_PATH_MAX];
+ int uri_len, ssl_index;
+ int is_found = 0, is_script_resource = 0, is_websocket_request = 0,
+ is_put_or_delete_request = 0, is_callback_resource = 0,
+ is_template_text_file = 0, is_webdav_request = 0;
+ int i;
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ mg_request_handler callback_handler = NULL;
+ struct mg_handler_info *handler_info = NULL;
+ struct mg_websocket_subprotocols *subprotocols;
+ mg_websocket_connect_handler ws_connect_handler = NULL;
+ mg_websocket_ready_handler ws_ready_handler = NULL;
+ mg_websocket_data_handler ws_data_handler = NULL;
+ mg_websocket_close_handler ws_close_handler = NULL;
+ void *callback_data = NULL;
+ mg_authorization_handler auth_handler = NULL;
+ void *auth_callback_data = NULL;
+ int handler_type;
+ time_t curtime = time(NULL);
+ char date[64];
+ char *tmp;
+
+ path[0] = 0;
+
+ /* 0. Reset internal state (required for HTTP/2 proxy) */
+ conn->request_state = 0;
+
+ /* 1. get the request url */
+ /* 1.1. split into url and query string */
+ if ((conn->request_info.query_string = strchr(ri->request_uri, '?'))
+ != NULL) {
+ *((char *)conn->request_info.query_string++) = '\0';
+ }
+
+ /* 1.2. do a https redirect, if required. Do not decode URIs yet. */
+ if (!conn->client.is_ssl && conn->client.ssl_redir) {
+ ssl_index = get_first_ssl_listener_index(conn->phys_ctx);
+ if (ssl_index >= 0) {
+ int port = (int)ntohs(USA_IN_PORT_UNSAFE(
+ &(conn->phys_ctx->listening_sockets[ssl_index].lsa)));
+ redirect_to_https_port(conn, port);
+ } else {
+ /* A http to https forward port has been specified,
+ * but no https port to forward to. */
+ mg_send_http_error(conn,
+ 503,
+ "%s",
+ "Error: SSL forward not configured properly");
+ mg_cry_internal(conn,
+ "%s",
+ "Can not redirect to SSL, no SSL port available");
+ }
+ return;
+ }
+
+
+ /* 1.3. decode url (if config says so) */
+ if (should_decode_url(conn)) {
+ url_decode_in_place((char *)ri->local_uri);
+ }
+
+ /* URL decode the query-string only if explicitly set in the configuration
+ */
+ if (conn->request_info.query_string) {
+ if (should_decode_query_string(conn)) {
+ url_decode_in_place((char *)conn->request_info.query_string);
+ }
+ }
+
+ /* 1.4. clean URIs, so a path like allowed_dir/../forbidden_file is not
+ * possible. The fact that we cleaned the URI is stored in that the
+ * pointer to ri->local_ur and ri->local_uri_raw are now different.
+ * ri->local_uri_raw still points to memory allocated in
+ * worker_thread_run(). ri->local_uri is private to the request so we
+ * don't have to use preallocated memory here. */
+ tmp = mg_strdup(ri->local_uri_raw);
+ if (!tmp) {
+ /* Out of memory. We cannot do anything reasonable here. */
+ return;
+ }
+ remove_dot_segments(tmp);
+ ri->local_uri = tmp;
+#if !defined(NO_FILES) /* Only compute if later code can actually use it */
+ /* Cache URI length once; recompute only if the buffer changes later. */
+ uri_len = (int)strlen(ri->local_uri);
+#endif
+
+
+ /* step 1. completed, the url is known now */
+ DEBUG_TRACE("REQUEST: %s %s", ri->request_method, ri->local_uri);
+
+ /* 2. if this ip has limited speed, set it for this connection */
+ conn->throttle = set_throttle(conn->dom_ctx->config[THROTTLE],
+ &conn->client.rsa,
+ ri->local_uri);
+
+ /* 3. call a "handle everything" callback, if registered */
+ if (conn->phys_ctx->callbacks.begin_request != NULL) {
+ /* Note that since V1.7 the "begin_request" function is called
+ * before an authorization check. If an authorization check is
+ * required, use a request_handler instead. */
+ i = conn->phys_ctx->callbacks.begin_request(conn);
+ if (i > 0) {
+ /* callback already processed the request. Store the
+ return value as a status code for the access log. */
+ conn->status_code = i;
+ if (!conn->must_close) {
+ discard_unread_request_data(conn);
+ }
+ DEBUG_TRACE("%s", "begin_request handled request");
+ return;
+ } else if (i == 0) {
+ /* civetweb should process the request */
+ } else {
+ /* unspecified - may change with the next version */
+ DEBUG_TRACE("%s", "done (undocumented behavior)");
+ return;
+ }
+ }
+
+ /* request not yet handled by a handler or redirect, so the request
+ * is processed here */
+
+ /* 4. Check for CORS preflight requests and handle them (if configured).
+ * https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
+ */
+ if (!strcmp(ri->request_method, "OPTIONS")) {
+ /* Send a response to CORS preflights only if
+ * access_control_allow_methods is not NULL and not an empty string.
+ * In this case, scripts can still handle CORS. */
+ const char *cors_meth_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_METHODS];
+ const char *cors_orig_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_ORIGIN];
+ const char *cors_origin =
+ get_header(ri->http_headers, ri->num_headers, "Origin");
+ const char *cors_acrm = get_header(ri->http_headers,
+ ri->num_headers,
+ "Access-Control-Request-Method");
+ const char *cors_repl_asterisk_with_orig_cfg =
+ conn->dom_ctx->config[REPLACE_ASTERISK_WITH_ORIGIN];
+
+ /* Todo: check if cors_origin is in cors_orig_cfg.
+ * Or, let the client check this. */
+
+ if ((cors_meth_cfg != NULL) && (*cors_meth_cfg != 0)
+ && (cors_orig_cfg != NULL) && (*cors_orig_cfg != 0)
+ && (cors_origin != NULL) && (cors_acrm != NULL)
+ && (cors_repl_asterisk_with_orig_cfg != NULL)
+ && (*cors_repl_asterisk_with_orig_cfg != 0)) {
+ int cors_repl_asterisk_with_orig =
+ mg_strcasecmp(cors_repl_asterisk_with_orig_cfg, "yes");
+
+ /* This is a valid CORS preflight, and the server is configured
+ * to handle it automatically. */
+ const char *cors_acrh =
+ get_header(ri->http_headers,
+ ri->num_headers,
+ "Access-Control-Request-Headers");
+ const char *cors_cred_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_CREDENTIALS];
+ const char *cors_exphdr_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_EXPOSE_HEADERS];
+
+ gmt_time_string(date, sizeof(date), &curtime);
+ mg_printf(conn,
+ "HTTP/1.1 200 OK\r\n"
+ "Date: %s\r\n"
+ "Access-Control-Allow-Origin: %s\r\n"
+ "Access-Control-Allow-Methods: %s\r\n"
+ "Content-Length: 0\r\n"
+ "Connection: %s\r\n",
+ date,
+ (cors_repl_asterisk_with_orig == 0
+ && cors_orig_cfg[0] == '*')
+ ? cors_origin
+ : cors_orig_cfg,
+ ((cors_meth_cfg[0] == '*') ? cors_acrm : cors_meth_cfg),
+ suggest_connection_header(conn));
+
+ if (cors_cred_cfg && *cors_cred_cfg) {
+ mg_printf(conn,
+ "Access-Control-Allow-Credentials: %s\r\n",
+ cors_cred_cfg);
+ }
+
+ if (cors_exphdr_cfg && *cors_exphdr_cfg) {
+ mg_printf(conn,
+ "Access-Control-Expose-Headers: %s\r\n",
+ cors_exphdr_cfg);
+ }
+
+ if (cors_acrh || (cors_cred_cfg && *cors_cred_cfg)) {
+ /* CORS request is asking for additional headers */
+ const char *cors_hdr_cfg =
+ conn->dom_ctx->config[ACCESS_CONTROL_ALLOW_HEADERS];
+
+ if ((cors_hdr_cfg != NULL) && (*cors_hdr_cfg != 0)) {
+ /* Allow only if access_control_allow_headers is
+ * not NULL and not an empty string. If this
+ * configuration is set to *, allow everything.
+ * Otherwise this configuration must be a list
+ * of allowed HTTP header names. */
+ mg_printf(conn,
+ "Access-Control-Allow-Headers: %s\r\n",
+ ((cors_hdr_cfg[0] == '*') ? cors_acrh
+ : cors_hdr_cfg));
+ }
+ }
+ mg_printf(conn, "Access-Control-Max-Age: 60\r\n");
+ mg_printf(conn, "\r\n");
+ DEBUG_TRACE("%s", "OPTIONS done");
+ return;
+ }
+ }
+
+ /* 5. interpret the url to find out how the request must be handled
+ */
+ /* 5.1. first test, if the request targets the regular http(s)://
+ * protocol namespace or the websocket ws(s):// protocol namespace.
+ */
+ is_websocket_request = (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET);
+#if defined(USE_WEBSOCKET)
+ handler_type = is_websocket_request ? WEBSOCKET_HANDLER : REQUEST_HANDLER;
+#else
+ handler_type = REQUEST_HANDLER;
+#endif /* defined(USE_WEBSOCKET) */
+
+ if (is_websocket_request) {
+ HTTP1_only;
+ }
+
+ /* 5.2. check if the request will be handled by a callback */
+ if (get_request_handler(conn,
+ handler_type,
+ &callback_handler,
+ &subprotocols,
+ &ws_connect_handler,
+ &ws_ready_handler,
+ &ws_data_handler,
+ &ws_close_handler,
+ NULL,
+ &callback_data,
+ &handler_info)) {
+ /* 5.2.1. A callback will handle this request. All requests
+ * handled by a callback have to be considered as requests
+ * to a script resource. */
+ is_callback_resource = 1;
+ is_script_resource = 1;
+ is_put_or_delete_request = is_put_or_delete_method(conn);
+ /* Never handle a C callback according to File WebDav rules,
+ * even if it is a webdav method */
+ is_webdav_request = 0; /* is_civetweb_webdav_method(conn); */
+ } else {
+ no_callback_resource:
+
+ /* 5.2.2. No callback is responsible for this request. The URI
+ * addresses a file based resource (static content or Lua/cgi
+ * scripts in the file system). */
+ is_callback_resource = 0;
+ interpret_uri(conn,
+ path,
+ sizeof(path),
+ &file.stat,
+ &is_found,
+ &is_script_resource,
+ &is_websocket_request,
+ &is_put_or_delete_request,
+ &is_webdav_request,
+ &is_template_text_file);
+ }
+
+ /* 5.3. A webdav request (PROPFIND/PROPPATCH/LOCK/UNLOCK) */
+ if (is_webdav_request) {
+ /* TODO: Do we need a config option? */
+ const char *webdav_enable = conn->dom_ctx->config[ENABLE_WEBDAV];
+ if (webdav_enable[0] != 'y') {
+ mg_send_http_error(conn,
+ 405,
+ "%s method not allowed",
+ conn->request_info.request_method);
+ DEBUG_TRACE("%s", "webdav rejected");
+ return;
+ }
+ }
+
+ /* 6. authorization check */
+ /* 6.1. a custom authorization handler is installed */
+ if (get_request_handler(conn,
+ AUTH_HANDLER,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &auth_handler,
+ &auth_callback_data,
+ NULL)) {
+ if (!auth_handler(conn, auth_callback_data)) {
+
+ /* Callback handler will not be used anymore. Release it */
+ release_handler_ref(conn, handler_info);
+ DEBUG_TRACE("%s", "auth handler rejected request");
+ return;
+ }
+ } else if (is_put_or_delete_request && !is_script_resource
+ && !is_callback_resource) {
+ HTTP1_only;
+ /* 6.2. this request is a PUT/DELETE to a real file */
+ /* 6.2.1. thus, the server must have real files */
+#if defined(NO_FILES)
+ if (1) {
+#else
+ if (conn->dom_ctx->config[DOCUMENT_ROOT] == NULL
+ || conn->dom_ctx->config[PUT_DELETE_PASSWORDS_FILE] == NULL) {
+#endif
+ /* This code path will not be called for request handlers */
+ DEBUG_ASSERT(handler_info == NULL);
+
+ /* This server does not have any real files, thus the
+ * PUT/DELETE methods are not valid. */
+ mg_send_http_error(conn,
+ 405,
+ "%s method not allowed",
+ conn->request_info.request_method);
+ DEBUG_TRACE("%s", "all file based put/delete requests rejected");
+ return;
+ }
+
+#if !defined(NO_FILES)
+ /* 6.2.2. Check if put authorization for static files is
+ * available.
+ */
+ if (!is_authorized_for_put(conn)) {
+ send_authorization_request(conn, NULL);
+ DEBUG_TRACE("%s", "file write needs authorization");
+ return;
+ }
+#endif
+
+ } else {
+ /* 6.3. This is either a OPTIONS, GET, HEAD or POST request,
+ * or it is a PUT or DELETE request to a resource that does not
+ * correspond to a file. Check authorization. */
+ if (!check_authorization(conn, path)) {
+ send_authorization_request(conn, NULL);
+
+ /* Callback handler will not be used anymore. Release it */
+ release_handler_ref(conn, handler_info);
+ DEBUG_TRACE("%s", "access authorization required");
+ return;
+ }
+ }
+
+ /* request is authorized or does not need authorization */
+
+ /* 7. check if there are request handlers for this uri */
+ if (is_callback_resource) {
+ HTTP1_only;
+ if (!is_websocket_request) {
+ i = callback_handler(conn, callback_data);
+
+ /* Callback handler will not be used anymore. Release it */
+ release_handler_ref(conn, handler_info);
+
+ if (i > 0) {
+ /* Do nothing, callback has served the request. Store
+ * then return value as status code for the log and discard
+ * all data from the client not used by the callback. */
+ conn->status_code = i;
+ if (!conn->must_close) {
+ discard_unread_request_data(conn);
+ }
+ } else {
+ /* The handler did NOT handle the request. */
+ /* Some proper reactions would be:
+ * a) close the connections without sending anything
+ * b) send a 404 not found
+ * c) try if there is a file matching the URI
+ * It would be possible to do a, b or c in the callback
+ * implementation, and return 1 - we cannot do anything
+ * here, that is not possible in the callback.
+ *
+ * TODO: What would be the best reaction here?
+ * (Note: The reaction may change, if there is a better
+ * idea.)
+ */
+
+ /* For the moment, use option c: We look for a proper file,
+ * but since a file request is not always a script resource,
+ * the authorization check might be different. */
+ callback_handler = NULL;
+
+ /* Here we are at a dead end:
+ * According to URI matching, a callback should be
+ * responsible for handling the request,
+ * we called it, but the callback declared itself
+ * not responsible.
+ * We use a goto here, to get out of this dead end,
+ * and continue with the default handling.
+ * A goto here is simpler and better to understand
+ * than some curious loop. */
+ goto no_callback_resource;
+ }
+ } else {
+#if defined(USE_WEBSOCKET)
+ handle_websocket_request(conn,
+ path,
+ is_callback_resource,
+ subprotocols,
+ ws_connect_handler,
+ ws_ready_handler,
+ ws_data_handler,
+ ws_close_handler,
+ callback_data);
+#endif
+ }
+ DEBUG_TRACE("%s", "websocket handling done");
+ return;
+ }
+
+ /* 8. handle websocket requests */
+#if defined(USE_WEBSOCKET)
+ if (is_websocket_request) {
+ HTTP1_only;
+ if (is_script_resource) {
+
+ if (is_in_script_path(conn, path)) {
+ /* Websocket Lua script */
+ handle_websocket_request(conn,
+ path,
+ 0 /* Lua Script */,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ conn->phys_ctx->user_data);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ } else {
+ mg_send_http_error(conn, 404, "%s", "Not found");
+ }
+ DEBUG_TRACE("%s", "websocket script done");
+ return;
+ } else
+#endif
+
+#if defined(NO_FILES)
+ /* 9a. In case the server uses only callbacks, this uri is
+ * unknown.
+ * Then, all request handling ends here. */
+ mg_send_http_error(conn, 404, "%s", "Not Found");
+
+#else
+ /* 9b. This request is either for a static file or resource handled
+ * by a script file. Thus, a DOCUMENT_ROOT must exist. */
+ if (conn->dom_ctx->config[DOCUMENT_ROOT] == NULL) {
+ mg_send_http_error(conn, 404, "%s", "Not Found");
+ DEBUG_TRACE("%s", "no document root available");
+ return;
+ }
+
+ /* 10. Request is handled by a script */
+ if (is_script_resource) {
+ HTTP1_only;
+ handle_file_based_request(conn, path, &file);
+ DEBUG_TRACE("%s", "script handling done");
+ return;
+ }
+
+ /* Request was not handled by a callback or script. It will be
+ * handled by a server internal method. */
+
+ /* 11. Handle put/delete/mkcol requests */
+ if (is_put_or_delete_request) {
+ HTTP1_only;
+ /* 11.1. PUT method */
+ if (!strcmp(ri->request_method, "PUT")) {
+ put_file(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.2. DELETE method */
+ if (!strcmp(ri->request_method, "DELETE")) {
+ delete_file(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.3. MKCOL method */
+ if (!strcmp(ri->request_method, "MKCOL")) {
+ dav_mkcol(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.4. MOVE method */
+ if (!strcmp(ri->request_method, "MOVE")) {
+ dav_move_file(conn, path, 0);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ if (!strcmp(ri->request_method, "COPY")) {
+ dav_move_file(conn, path, 1);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.5. LOCK method */
+ if (!strcmp(ri->request_method, "LOCK")) {
+ dav_lock_file(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.6. UNLOCK method */
+ if (!strcmp(ri->request_method, "UNLOCK")) {
+ dav_unlock_file(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.7. PROPPATCH method */
+ if (!strcmp(ri->request_method, "PROPPATCH")) {
+ dav_proppatch(conn, path);
+ DEBUG_TRACE("handling %s request to %s done",
+ ri->request_method,
+ path);
+ return;
+ }
+ /* 11.8. Other methods, e.g.: PATCH
+ * This method is not supported for static resources,
+ * only for scripts (Lua, CGI) and callbacks. */
+ mg_send_http_error(conn,
+ 405,
+ "%s method not allowed",
+ conn->request_info.request_method);
+ DEBUG_TRACE("method %s on %s is not supported",
+ ri->request_method,
+ path);
+ return;
+ }
+
+ /* 11. File does not exist, or it was configured that it should be
+ * hidden */
+ if (!is_found || (must_hide_file(conn, path))) {
+ mg_send_http_error(conn, 404, "%s", "Not found");
+ DEBUG_TRACE("handling %s request to %s: file not found",
+ ri->request_method,
+ path);
+ return;
+ }
+
+ /* 12. Directory uris should end with a slash */
+ if (file.stat.is_directory && (uri_len > 0)
+ && (ri->local_uri[uri_len - 1] != '/')) {
+
+
+ /* Path + server root */
+ size_t buflen = UTF8_PATH_MAX * 2 + 2;
+ char *new_path;
+
+ if (ri->query_string) {
+ buflen += strlen(ri->query_string);
+ }
+ new_path = (char *)mg_malloc_ctx(buflen, conn->phys_ctx);
+ if (!new_path) {
+ mg_send_http_error(conn, 500, "out or memory");
+ } else {
+ mg_get_request_link(conn, new_path, buflen - 1);
+
+ size_t len = strlen(new_path);
+ if (len + 1 < buflen) {
+ new_path[len] = '/';
+ new_path[len + 1] = '\0';
+ len++;
+ }
+
+ if (ri->query_string) {
+ if (len + 1 < buflen) {
+ new_path[len] = '?';
+ new_path[len + 1] = '\0';
+ len++;
+ }
+
+ /* Append with size of space left for query string + null
+ * terminator */
+ size_t max_append = buflen - len - 1;
+ strncat(new_path, ri->query_string, max_append);
+ }
+
+ mg_send_http_redirect(conn, new_path, 301);
+ mg_free(new_path);
+ }
+ DEBUG_TRACE("%s request to %s: directory redirection sent",
+ ri->request_method,
+ path);
+ return;
+ }
+
+ /* 13. Handle other methods than GET/HEAD */
+ /* 13.1. Handle PROPFIND */
+ if (!strcmp(ri->request_method, "PROPFIND")) {
+ handle_propfind(conn, path, &file.stat);
+ DEBUG_TRACE("handling %s request to %s done", ri->request_method, path);
+ return;
+ }
+ /* 13.2. Handle OPTIONS for files */
+ if (!strcmp(ri->request_method, "OPTIONS")) {
+ /* This standard handler is only used for real files.
+ * Scripts should support the OPTIONS method themselves, to allow a
+ * maximum flexibility.
+ * Lua and CGI scripts may fully support CORS this way (including
+ * preflights). */
+ send_options(conn);
+ DEBUG_TRACE("handling %s request to %s done", ri->request_method, path);
+ return;
+ }
+ /* 13.3. everything but GET and HEAD (e.g. POST) */
+ if ((0 != strcmp(ri->request_method, "GET"))
+ && (0 != strcmp(ri->request_method, "HEAD"))) {
+ mg_send_http_error(conn,
+ 405,
+ "%s method not allowed",
+ conn->request_info.request_method);
+ DEBUG_TRACE("handling %s request to %s done", ri->request_method, path);
+ return;
+ }
+
+ /* 14. directories */
+ if (file.stat.is_directory) {
+ /* Substitute files have already been handled above. */
+ /* Here we can either generate and send a directory listing,
+ * or send an "access denied" error. */
+ if (!mg_strcasecmp(conn->dom_ctx->config[ENABLE_DIRECTORY_LISTING],
+ "yes")) {
+ handle_directory_request(conn, path);
+ } else {
+ mg_send_http_error(conn,
+ 403,
+ "%s",
+ "Error: Directory listing denied");
+ }
+ DEBUG_TRACE("handling %s request to %s done", ri->request_method, path);
+ return;
+ }
+
+ /* 15. Files with search/replace patterns: LSP and SSI */
+ if (is_template_text_file) {
+ HTTP1_only;
+ handle_file_based_request(conn, path, &file);
+ DEBUG_TRACE("handling %s request to %s done (template)",
+ ri->request_method,
+ path);
+ return;
+ }
+
+ /* 16. Static file - maybe cached */
+#if !defined(NO_CACHING)
+ if ((!conn->in_error_handler) && is_not_modified(conn, &file.stat)) {
+ /* Send 304 "Not Modified" - this must not send any body data */
+ handle_not_modified_static_file_request(conn, &file);
+ DEBUG_TRACE("handling %s request to %s done (not modified)",
+ ri->request_method,
+ path);
+ return;
+ }
+#endif /* !NO_CACHING */
+
+ /* 17. Static file - not cached */
+ handle_static_file_request(conn, path, &file, NULL, NULL);
+ DEBUG_TRACE("handling %s request to %s done (static)",
+ ri->request_method,
+ path);
+
+#endif /* !defined(NO_FILES) */
+}
+
+
+#if !defined(NO_FILESYSTEMS)
+static void
+handle_file_based_request(struct mg_connection *conn,
+ const char *path,
+ struct mg_file *file)
+{
+#if !defined(NO_CGI)
+ int cgi_config_idx, inc, max;
+#endif
+
+ if (!conn || !conn->dom_ctx) {
+ return;
+ }
+
+#if defined(USE_LUA)
+ if (match_prefix_strlen(conn->dom_ctx->config[LUA_SERVER_PAGE_EXTENSIONS],
+ path)
+ > 0) {
+ if (is_in_script_path(conn, path)) {
+ /* Lua server page: an SSI like page containing mostly plain
+ * html code plus some tags with server generated contents. */
+ handle_lsp_request(conn, path, file, NULL);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ return;
+ }
+
+ if (match_prefix_strlen(conn->dom_ctx->config[LUA_SCRIPT_EXTENSIONS], path)
+ > 0) {
+ if (is_in_script_path(conn, path)) {
+ /* Lua in-server module script: a CGI like script used to
+ * generate the entire reply. */
+ mg_exec_lua_script(conn, path, NULL);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ return;
+ }
+#endif
+
+#if defined(USE_DUKTAPE)
+ if (match_prefix_strlen(conn->dom_ctx->config[DUKTAPE_SCRIPT_EXTENSIONS],
+ path)
+ > 0) {
+ if (is_in_script_path(conn, path)) {
+ /* Call duktape to generate the page */
+ mg_exec_duktape_script(conn, path);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ return;
+ }
+#endif
+
+#if !defined(NO_CGI)
+ inc = CGI2_EXTENSIONS - CGI_EXTENSIONS;
+ max = PUT_DELETE_PASSWORDS_FILE - CGI_EXTENSIONS;
+ for (cgi_config_idx = 0; cgi_config_idx < max; cgi_config_idx += inc) {
+ if (conn->dom_ctx->config[CGI_EXTENSIONS + cgi_config_idx] != NULL) {
+ if (match_prefix_strlen(
+ conn->dom_ctx->config[CGI_EXTENSIONS + cgi_config_idx],
+ path)
+ > 0) {
+ if (is_in_script_path(conn, path)) {
+ /* CGI scripts may support all HTTP methods */
+ handle_cgi_request(conn, path, cgi_config_idx);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ return;
+ }
+ }
+ }
+#endif /* !NO_CGI */
+
+ if (match_prefix_strlen(conn->dom_ctx->config[SSI_EXTENSIONS], path) > 0) {
+ if (is_in_script_path(conn, path)) {
+ handle_ssi_file_request(conn, path, file);
+ } else {
+ /* Script was in an illegal path */
+ mg_send_http_error(conn, 403, "%s", "Forbidden");
+ }
+ return;
+ }
+
+#if !defined(NO_CACHING)
+ if ((!conn->in_error_handler) && is_not_modified(conn, &file->stat)) {
+ /* Send 304 "Not Modified" - this must not send any body data */
+ handle_not_modified_static_file_request(conn, file);
+ return;
+ }
+#endif /* !NO_CACHING */
+
+ handle_static_file_request(conn, path, file, NULL, NULL);
+}
+#endif /* NO_FILESYSTEMS */
+
+
+static void
+close_all_listening_sockets(struct mg_context *ctx)
+{
+ unsigned int i;
+ if (!ctx) {
+ return;
+ }
+
+ for (i = 0; i < ctx->num_listening_sockets; i++) {
+ closesocket(ctx->listening_sockets[i].sock);
+#if defined(USE_X_DOM_SOCKET)
+ /* For unix domain sockets, the socket name represents a file that has
+ * to be deleted. */
+ /* See
+ * https://stackoverflow.com/questions/15716302/so-reuseaddr-and-af-unix
+ */
+ if ((ctx->listening_sockets[i].lsa.sin.sin_family == AF_UNIX)
+ && (ctx->listening_sockets[i].sock != INVALID_SOCKET)) {
+ IGNORE_UNUSED_RESULT(
+ remove(ctx->listening_sockets[i].lsa.sun.sun_path));
+ }
+#endif
+ ctx->listening_sockets[i].sock = INVALID_SOCKET;
+ }
+ mg_free(ctx->listening_sockets);
+ ctx->listening_sockets = NULL;
+ mg_free(ctx->listening_socket_fds);
+ ctx->listening_socket_fds = NULL;
+}
+
+
+/* Valid listening port specification is: [ip_address:]port[s]
+ * Examples for IPv4: 80, 443s, 127.0.0.1:3128, 192.0.2.3:8080s
+ * Examples for IPv6: [::]:80, [::1]:80,
+ * [2001:0db8:7654:3210:FEDC:BA98:7654:3210]:443s
+ * see https://tools.ietf.org/html/rfc3513#section-2.2
+ * In order to bind to both, IPv4 and IPv6, you can either add
+ * both ports using 8080,[::]:8080, or the short form +8080.
+ * Both forms differ in detail: 8080,[::]:8080 create two sockets,
+ * one only accepting IPv4 the other only IPv6. +8080 creates
+ * one socket accepting IPv4 and IPv6. Depending on the IPv6
+ * environment, they might work differently, or might not work
+ * at all - it must be tested what options work best in the
+ * relevant network environment.
+ */
+static int
+parse_port_string(const struct vec *vec, struct socket *so, int *ip_version)
+{
+ unsigned int a, b, c, d;
+ unsigned port;
+ unsigned long portUL;
+ int len;
+ const char *cb;
+ char *endptr;
+#if defined(USE_IPV6)
+ char buf[100] = {0};
+#endif
+
+ /* MacOS needs that. If we do not zero it, subsequent bind() will fail.
+ * Also, all-zeroes in the socket address means binding to all addresses
+ * for both IPv4 and IPv6 (INADDR_ANY and IN6ADDR_ANY_INIT). */
+ memset(so, 0, sizeof(*so));
+ so->lsa.sin.sin_family = AF_INET;
+ *ip_version = 0;
+
+ /* Initialize len as invalid. */
+ port = 0;
+ len = 0;
+
+ /* Test for different ways to format this string */
+ if (sscanf(vec->ptr,
+ "%u.%u.%u.%u:%u%n",
+ &a,
+ &b,
+ &c,
+ &d,
+ &port,
+ &len) // NOLINT(cert-err34-c) 'sscanf' used to convert a string
+ // to an integer value, but function will not report
+ // conversion errors; consider using 'strtol' instead
+ == 5) {
+ /* Bind to a specific IPv4 address, e.g. 192.168.1.5:8080 */
+ so->lsa.sin.sin_addr.s_addr =
+ htonl((a << 24) | (b << 16) | (c << 8) | d);
+ so->lsa.sin.sin_port = htons((uint16_t)port);
+ *ip_version = 4;
+
+#if defined(USE_IPV6)
+ } else if (sscanf(vec->ptr, "[%49[^]]]:%u%n", buf, &port, &len) == 2
+ && ((size_t)len <= vec->len)
+ && mg_inet_pton(
+ AF_INET6, buf, &so->lsa.sin6, sizeof(so->lsa.sin6), 0)) {
+ /* IPv6 address, examples: see above */
+ /* so->lsa.sin6.sin6_family = AF_INET6; already set by mg_inet_pton
+ */
+ so->lsa.sin6.sin6_port = htons((uint16_t)port);
+ *ip_version = 6;
+#endif
+
+ } else if ((vec->ptr[0] == '+')
+ && (sscanf(vec->ptr + 1, "%u%n", &port, &len)
+ == 1)) { // NOLINT(cert-err34-c) 'sscanf' used to convert a
+ // string to an integer value, but function will not
+ // report conversion errors; consider using 'strtol'
+ // instead
+
+ /* Port is specified with a +, bind to IPv6 and IPv4, INADDR_ANY */
+ /* Add 1 to len for the + character we skipped before */
+ len++;
+
+#if defined(USE_IPV6)
+ /* Set socket family to IPv6, do not use IPV6_V6ONLY */
+ so->lsa.sin6.sin6_family = AF_INET6;
+ so->lsa.sin6.sin6_port = htons((uint16_t)port);
+ *ip_version = 4 + 6;
+#else
+ /* Bind to IPv4 only, since IPv6 is not built in. */
+ so->lsa.sin.sin_port = htons((uint16_t)port);
+ *ip_version = 4;
+#endif
+
+ } else if (is_valid_port(portUL = strtoul(vec->ptr, &endptr, 0))
+ && (vec->ptr != endptr)) {
+ len = (int)(endptr - vec->ptr);
+ port = (uint16_t)portUL;
+ /* If only port is specified, bind to IPv4, INADDR_ANY */
+ so->lsa.sin.sin_port = htons((uint16_t)port);
+ *ip_version = 4;
+
+ } else if ((cb = strchr(vec->ptr, ':')) != NULL) {
+ /* String could be a hostname. This check algorithm
+ * will only work for RFC 952 compliant hostnames,
+ * starting with a letter, containing only letters,
+ * digits and hyphen ('-'). Newer specs may allow
+ * more, but this is not guaranteed here, since it
+ * may interfere with rules for port option lists. */
+
+ /* According to RFC 1035, hostnames are restricted to 255 characters
+ * in total (63 between two dots). */
+ char hostname[256];
+ size_t hostnlen = (size_t)(cb - vec->ptr);
+
+ if ((hostnlen >= vec->len) || (hostnlen >= sizeof(hostname))) {
+ /* This would be invalid in any case */
+ *ip_version = 0;
+ return 0;
+ }
+
+ mg_strlcpy(hostname, vec->ptr, hostnlen + 1);
+
+ if (mg_inet_pton(
+ AF_INET, hostname, &so->lsa.sin, sizeof(so->lsa.sin), 1)) {
+ if (sscanf(cb + 1, "%u%n", &port, &len)
+ == 1) { // NOLINT(cert-err34-c) 'sscanf' used to convert a
+ // string to an integer value, but function will not
+ // report conversion errors; consider using 'strtol'
+ // instead
+ *ip_version = 4;
+ so->lsa.sin.sin_port = htons((uint16_t)port);
+ len += (int)(hostnlen + 1);
+ } else {
+ len = 0;
+ }
+#if defined(USE_IPV6)
+ } else if (mg_inet_pton(AF_INET6,
+ hostname,
+ &so->lsa.sin6,
+ sizeof(so->lsa.sin6),
+ 1)) {
+ if (sscanf(cb + 1, "%u%n", &port, &len) == 1) {
+ *ip_version = 6;
+ so->lsa.sin6.sin6_port = htons((uint16_t)port);
+ len += (int)(hostnlen + 1);
+ } else {
+ len = 0;
+ }
+#endif
+ } else {
+ len = 0;
+ }
+
+#if defined(USE_X_DOM_SOCKET)
+
+ } else if (vec->ptr[0] == 'x') {
+ /* unix (linux) domain socket */
+ if (vec->len < sizeof(so->lsa.sun.sun_path)) {
+ len = vec->len;
+ so->lsa.sun.sun_family = AF_UNIX;
+ memset(so->lsa.sun.sun_path, 0, sizeof(so->lsa.sun.sun_path));
+ memcpy(so->lsa.sun.sun_path, (char *)vec->ptr + 1, vec->len - 1);
+ port = 0;
+ *ip_version = 99;
+ } else {
+ /* String too long */
+ len = 0;
+ }
+#endif
+
+ } else {
+ /* Parsing failure. */
+ len = 0;
+ }
+
+ /* sscanf and the option splitting code ensure the following condition
+ * Make sure the port is valid and vector ends with the port, 'o', 's', or
+ * 'r' */
+ if ((len > 0) && (is_valid_port(port))) {
+ int bad_suffix = 0;
+ size_t i;
+
+ /* Parse any suffix character(s) after the port number */
+ for (i = len; i < vec->len; i++) {
+ unsigned char *opt = NULL;
+ switch (vec->ptr[i]) {
+ case 'o':
+ opt = &so->is_optional;
+ break;
+ case 'r':
+ opt = &so->ssl_redir;
+ break;
+ case 's':
+ opt = &so->is_ssl;
+ break;
+ default: /* empty */
+ break;
+ }
+
+ if ((opt) && (*opt == 0))
+ *opt = 1;
+ else {
+ bad_suffix = 1;
+ break;
+ }
+ }
+
+ if ((bad_suffix == 0) && ((so->is_ssl == 0) || (so->ssl_redir == 0))) {
+ return 1;
+ }
+ }
+
+ /* Reset ip_version to 0 if there is an error */
+ *ip_version = 0;
+ return 0;
+}
+
+
+/* Is there any SSL port in use? */
+static int
+is_ssl_port_used(const char *ports)
+{
+ if (ports) {
+ /* There are several different allowed syntax variants:
+ * - "80" for a single port using every network interface
+ * - "localhost:80" for a single port using only localhost
+ * - "80,localhost:8080" for two ports, one bound to localhost
+ * - "80,127.0.0.1:8084,[::1]:8086" for three ports, one bound
+ * to IPv4 localhost, one to IPv6 localhost
+ * - "+80" use port 80 for IPv4 and IPv6
+ * - "+80r,+443s" port 80 (HTTP) is a redirect to port 443 (HTTPS),
+ * for both: IPv4 and IPv4
+ * - "+443s,localhost:8080" port 443 (HTTPS) for every interface,
+ * additionally port 8080 bound to localhost connections
+ *
+ * If we just look for 's' anywhere in the string, "localhost:80"
+ * will be detected as SSL (false positive).
+ * Looking for 's' after a digit may cause false positives in
+ * "my24service:8080".
+ * Looking from 's' backward if there are only ':' and numbers
+ * before will not work for "24service:8080" (non SSL, port 8080)
+ * or "24s" (SSL, port 24).
+ *
+ * Remark: Initially hostnames were not allowed to start with a
+ * digit (according to RFC 952), this was allowed later (RFC 1123,
+ * Section 2.1).
+ *
+ * To get this correct, the entire string must be parsed as a whole,
+ * reading it as a list element for element and parsing with an
+ * algorithm equivalent to parse_port_string.
+ *
+ * In fact, we use local interface names here, not arbitrary
+ * hostnames, so in most cases the only name will be "localhost".
+ *
+ * So, for now, we use this simple algorithm, that may still return
+ * a false positive in bizarre cases.
+ */
+ int i;
+ int portslen = (int)strlen(ports);
+ char prevIsNumber = 0;
+
+ for (i = 0; i < portslen; i++) {
+ if (prevIsNumber) {
+ int suffixCharIdx = (ports[i] == 'o')
+ ? (i + 1)
+ : i; /* allow "os" and "or" suffixes */
+ if (ports[suffixCharIdx] == 's'
+ || ports[suffixCharIdx] == 'r') {
+ return 1;
+ }
+ }
+ if (ports[i] >= '0' && ports[i] <= '9') {
+ prevIsNumber = 1;
+ } else {
+ prevIsNumber = 0;
+ }
+ }
+ }
+ return 0;
+}
+
+
+static int
+set_ports_option(struct mg_context *phys_ctx)
+{
+ const char *list;
+ int on = 1;
+#if defined(USE_IPV6)
+ int off = 0;
+#endif
+ struct vec vec;
+ struct socket so, *ptr;
+
+ struct mg_pollfd *pfd;
+ union usa usa;
+ socklen_t len;
+ int ip_version;
+
+ int portsTotal = 0;
+ int portsOk = 0;
+
+ const char *opt_txt;
+ long opt_listen_backlog;
+
+ if (!phys_ctx) {
+ return 0;
+ }
+
+ memset(&so, 0, sizeof(so));
+ memset(&usa, 0, sizeof(usa));
+ len = sizeof(usa);
+ list = phys_ctx->dd.config[LISTENING_PORTS];
+
+ while ((list = next_option(list, &vec, NULL)) != NULL) {
+
+ portsTotal++;
+
+ if (!parse_port_string(&vec, &so, &ip_version)) {
+ mg_cry_ctx_internal(
+ phys_ctx,
+ "%.*s: invalid port spec (entry %i). Expecting list of: %s",
+ (int)vec.len,
+ vec.ptr,
+ portsTotal,
+ "[IP_ADDRESS:]PORT[s|r]");
+ continue;
+ }
+
+#if !defined(NO_SSL)
+ if (so.is_ssl && phys_ctx->dd.ssl_ctx == NULL) {
+
+ mg_cry_ctx_internal(phys_ctx,
+ "Cannot add SSL socket (entry %i)",
+ portsTotal);
+ continue;
+ }
+#endif
+ /* Create socket. */
+ /* For a list of protocol numbers (e.g., TCP==6) see:
+ * https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
+ */
+ if ((so.sock =
+ socket(so.lsa.sa.sa_family,
+ SOCK_STREAM,
+ (ip_version == 99) ? (/* LOCAL */ 0) : (/* TCP */ 6)))
+ == INVALID_SOCKET) {
+
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot create socket (entry %i)",
+ portsTotal);
+ if (so.is_optional) {
+ portsOk++; /* it's okay if we couldn't create a socket,
+ this port is optional anyway */
+ }
+ continue;
+ }
+
+#if defined(_WIN32)
+ /* Windows SO_REUSEADDR lets many procs binds to a
+ * socket, SO_EXCLUSIVEADDRUSE makes the bind fail
+ * if someone already has the socket -- DTL */
+ /* NOTE: If SO_EXCLUSIVEADDRUSE is used,
+ * Windows might need a few seconds before
+ * the same port can be used again in the
+ * same process, so a short Sleep may be
+ * required between mg_stop and mg_start.
+ */
+ if (setsockopt(so.sock,
+ SOL_SOCKET,
+ SO_EXCLUSIVEADDRUSE,
+ (SOCK_OPT_TYPE)&on,
+ sizeof(on))
+ != 0) {
+
+ /* Set reuse option, but don't abort on errors. */
+ mg_cry_ctx_internal(
+ phys_ctx,
+ "cannot set socket option SO_EXCLUSIVEADDRUSE (entry %i)",
+ portsTotal);
+ }
+#else
+ if (setsockopt(so.sock,
+ SOL_SOCKET,
+ SO_REUSEADDR,
+ (SOCK_OPT_TYPE)&on,
+ sizeof(on))
+ != 0) {
+
+ /* Set reuse option, but don't abort on errors. */
+ mg_cry_ctx_internal(
+ phys_ctx,
+ "cannot set socket option SO_REUSEADDR (entry %i)",
+ portsTotal);
+ }
+#endif
+
+#if defined(USE_X_DOM_SOCKET)
+ if (ip_version == 99) {
+ /* Unix domain socket */
+ } else
+#endif
+
+ if (ip_version > 4) {
+ /* Could be 6 for IPv6 onlyor 10 (4+6) for IPv4+IPv6 */
+#if defined(USE_IPV6)
+ if (ip_version > 6) {
+ if (so.lsa.sa.sa_family == AF_INET6
+ && setsockopt(so.sock,
+ IPPROTO_IPV6,
+ IPV6_V6ONLY,
+ (void *)&off,
+ sizeof(off))
+ != 0) {
+
+ /* Set IPv6 only option, but don't abort on errors. */
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot set socket option "
+ "IPV6_V6ONLY=off (entry %i)",
+ portsTotal);
+ }
+ } else {
+ if (so.lsa.sa.sa_family == AF_INET6
+ && setsockopt(so.sock,
+ IPPROTO_IPV6,
+ IPV6_V6ONLY,
+ (void *)&on,
+ sizeof(on))
+ != 0) {
+
+ /* Set IPv6 only option, but don't abort on errors. */
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot set socket option "
+ "IPV6_V6ONLY=on (entry %i)",
+ portsTotal);
+ }
+ }
+#else
+ mg_cry_ctx_internal(phys_ctx, "%s", "IPv6 not available");
+ closesocket(so.sock);
+ if (so.is_optional) {
+ portsOk++; /* it's okay if we couldn't set the socket option,
+ this port is optional anyway */
+ }
+ so.sock = INVALID_SOCKET;
+ continue;
+#endif
+ }
+
+ if (so.lsa.sa.sa_family == AF_INET) {
+
+ len = sizeof(so.lsa.sin);
+ if (bind(so.sock, &so.lsa.sa, len) != 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot bind to %.*s: %d (%s)",
+ (int)vec.len,
+ vec.ptr,
+ (int)ERRNO,
+ strerror(errno));
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ if (so.is_optional) {
+ portsOk++; /* it's okay if we couldn't bind, this port is
+ optional anyway */
+ }
+ continue;
+ }
+ }
+#if defined(USE_IPV6)
+ else if (so.lsa.sa.sa_family == AF_INET6) {
+
+ len = sizeof(so.lsa.sin6);
+ if (bind(so.sock, &so.lsa.sa, len) != 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot bind to IPv6 %.*s: %d (%s)",
+ (int)vec.len,
+ vec.ptr,
+ (int)ERRNO,
+ strerror(errno));
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ if (so.is_optional) {
+ portsOk++; /* it's okay if we couldn't bind, this port is
+ optional anyway */
+ }
+ continue;
+ }
+ }
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ else if (so.lsa.sa.sa_family == AF_UNIX) {
+
+ len = sizeof(so.lsa.sun);
+ if (bind(so.sock, &so.lsa.sa, len) != 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot bind to unix socket %s: %d (%s)",
+ so.lsa.sun.sun_path,
+ (int)ERRNO,
+ strerror(errno));
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ if (so.is_optional) {
+ portsOk++; /* it's okay if we couldn't bind, this port is
+ optional anyway */
+ }
+ continue;
+ }
+ }
+#endif
+ else {
+ mg_cry_ctx_internal(
+ phys_ctx,
+ "cannot bind: address family not supported (entry %i)",
+ portsTotal);
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ continue;
+ }
+
+ opt_txt = phys_ctx->dd.config[LISTEN_BACKLOG_SIZE];
+ opt_listen_backlog = strtol(opt_txt, NULL, 10);
+ if ((opt_listen_backlog > INT_MAX) || (opt_listen_backlog < 1)) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s value \"%s\" is invalid",
+ config_options[LISTEN_BACKLOG_SIZE].name,
+ opt_txt);
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ continue;
+ }
+
+ if (listen(so.sock, (int)opt_listen_backlog) != 0) {
+
+ mg_cry_ctx_internal(phys_ctx,
+ "cannot listen to %.*s: %d (%s)",
+ (int)vec.len,
+ vec.ptr,
+ (int)ERRNO,
+ strerror(errno));
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ continue;
+ }
+
+ if ((getsockname(so.sock, &(usa.sa), &len) != 0)
+ || (usa.sa.sa_family != so.lsa.sa.sa_family)) {
+
+ int err = (int)ERRNO;
+ mg_cry_ctx_internal(phys_ctx,
+ "call to getsockname failed %.*s: %d (%s)",
+ (int)vec.len,
+ vec.ptr,
+ err,
+ strerror(errno));
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ continue;
+ }
+
+ /* Update lsa port in case of random free ports */
+#if defined(USE_IPV6)
+ if (so.lsa.sa.sa_family == AF_INET6) {
+ so.lsa.sin6.sin6_port = usa.sin6.sin6_port;
+ } else
+#endif
+ {
+ so.lsa.sin.sin_port = usa.sin.sin_port;
+ }
+
+ if ((ptr = (struct socket *)
+ mg_realloc_ctx(phys_ctx->listening_sockets,
+ (phys_ctx->num_listening_sockets + 1)
+ * sizeof(phys_ctx->listening_sockets[0]),
+ phys_ctx))
+ == NULL) {
+
+ mg_cry_ctx_internal(phys_ctx, "%s", "Out of memory");
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ continue;
+ }
+
+ /* The +2 below includes the original +1 (for the socket we're about to
+ * add), plus another +1 for the thread_shutdown_notification_socket
+ * that we'll also want to poll() on so that mg_stop() can return
+ * quickly
+ */
+ if ((pfd = (struct mg_pollfd *)
+ mg_realloc_ctx(phys_ctx->listening_socket_fds,
+ (phys_ctx->num_listening_sockets + 2)
+ * sizeof(phys_ctx->listening_socket_fds[0]),
+ phys_ctx))
+ == NULL) {
+
+ mg_cry_ctx_internal(phys_ctx, "%s", "Out of memory");
+ closesocket(so.sock);
+ so.sock = INVALID_SOCKET;
+ mg_free(ptr);
+ continue;
+ }
+
+ set_close_on_exec(so.sock, NULL, phys_ctx);
+ phys_ctx->listening_sockets = ptr;
+ phys_ctx->listening_sockets[phys_ctx->num_listening_sockets] = so;
+ phys_ctx->listening_socket_fds = pfd;
+ phys_ctx->num_listening_sockets++;
+ portsOk++;
+ }
+
+ if (portsOk != portsTotal) {
+ close_all_listening_sockets(phys_ctx);
+ portsOk = 0;
+ }
+
+ return portsOk;
+}
+
+
+static const char *
+header_val(const struct mg_connection *conn, const char *header)
+{
+ const char *header_value;
+
+ if ((header_value = mg_get_header(conn, header)) == NULL) {
+ return "-";
+ } else {
+ return header_value;
+ }
+}
+
+
+#if defined(MG_EXTERNAL_FUNCTION_log_access)
+#include "external_log_access.inl"
+#elif !defined(NO_FILESYSTEMS)
+
+static void
+log_access(const struct mg_connection *conn)
+{
+ const struct mg_request_info *ri;
+ struct mg_file fi;
+ char date[64], src_addr[IP_ADDR_STR_LEN];
+#if defined(REENTRANT_TIME)
+ struct tm _tm;
+ struct tm *tm = &_tm;
+#else
+ struct tm *tm;
+#endif
+
+ const char *referer;
+ const char *user_agent;
+
+ char log_buf[4096];
+
+ if (!conn || !conn->dom_ctx) {
+ return;
+ }
+
+ /* Set log message to "empty" */
+ log_buf[0] = 0;
+
+#if defined(USE_LUA)
+ if (conn->phys_ctx->lua_bg_log_available) {
+ int ret;
+ struct mg_context *ctx = conn->phys_ctx;
+ lua_State *lstate = (lua_State *)ctx->lua_background_state;
+ pthread_mutex_lock(&ctx->lua_bg_mutex);
+ /* call "log()" in Lua */
+ lua_getglobal(lstate, "log");
+ prepare_lua_request_info_inner(conn, lstate);
+ push_lua_response_log_data(conn, lstate);
+
+ ret = lua_pcall(lstate, /* args */ 2, /* results */ 1, 0);
+ if (ret == 0) {
+ int t = lua_type(lstate, -1);
+ if (t == LUA_TBOOLEAN) {
+ if (lua_toboolean(lstate, -1) == 0) {
+ /* log() returned false: do not log */
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+ return;
+ }
+ /* log returned true: continue logging */
+ } else if (t == LUA_TSTRING) {
+ size_t len;
+ const char *txt = lua_tolstring(lstate, -1, &len);
+ if ((len == 0) || (*txt == 0)) {
+ /* log() returned empty string: do not log */
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+ return;
+ }
+ /* Copy test from Lua into log_buf */
+ if (len >= sizeof(log_buf)) {
+ len = sizeof(log_buf) - 1;
+ }
+ memcpy(log_buf, txt, len);
+ log_buf[len] = 0;
+ }
+ } else {
+ lua_cry(conn, ret, lstate, "lua_background_script", "log");
+ }
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+ }
+#endif
+
+ if (conn->dom_ctx->config[ACCESS_LOG_FILE] != NULL) {
+ if (mg_fopen(conn,
+ conn->dom_ctx->config[ACCESS_LOG_FILE],
+ MG_FOPEN_MODE_APPEND,
+ &fi)
+ == 0) {
+ fi.access.fp = NULL;
+ }
+ } else {
+ fi.access.fp = NULL;
+ }
+
+ /* Log is written to a file and/or a callback. If both are not set,
+ * executing the rest of the function is pointless. */
+ if ((fi.access.fp == NULL)
+ && (conn->phys_ctx->callbacks.log_access == NULL)) {
+ return;
+ }
+
+ /* If we did not get a log message from Lua, create it here. */
+ if (!log_buf[0]) {
+#if defined(REENTRANT_TIME)
+ localtime_r(&conn->conn_birth_time, tm);
+#else
+ tm = localtime(&conn->conn_birth_time);
+#endif
+ if (tm != NULL) {
+ strftime(date, sizeof(date), "%d/%b/%Y:%H:%M:%S %z", tm);
+ } else {
+ mg_strlcpy(date, "01/Jan/1970:00:00:00 +0000", sizeof(date));
+ }
+
+ ri = &conn->request_info;
+
+ sockaddr_to_string(src_addr, sizeof(src_addr), &conn->client.rsa);
+ referer = header_val(conn, "Referer");
+ user_agent = header_val(conn, "User-Agent");
+
+ mg_snprintf(conn,
+ NULL, /* Ignore truncation in access log */
+ log_buf,
+ sizeof(log_buf),
+ "%s - %s [%s] \"%s %s%s%s HTTP/%s\" %d %" INT64_FMT
+ " %s %s",
+ src_addr,
+ (ri->remote_user == NULL) ? "-" : ri->remote_user,
+ date,
+ ri->request_method ? ri->request_method : "-",
+ ri->request_uri ? ri->request_uri : "-",
+ ri->query_string ? "?" : "",
+ ri->query_string ? ri->query_string : "",
+ ri->http_version,
+ conn->status_code,
+ conn->num_bytes_sent,
+ referer,
+ user_agent);
+ }
+
+ /* Here we have a log message in log_buf. Call the callback */
+ if (conn->phys_ctx->callbacks.log_access) {
+ if (conn->phys_ctx->callbacks.log_access(conn, log_buf)) {
+ /* do not log if callback returns non-zero */
+ if (fi.access.fp) {
+ mg_fclose(&fi.access);
+ }
+ return;
+ }
+ }
+
+ /* Store in file */
+ if (fi.access.fp) {
+ int ok = 1;
+ flockfile(fi.access.fp);
+ if (fprintf(fi.access.fp, "%s\n", log_buf) < 1) {
+ ok = 0;
+ }
+ if (fflush(fi.access.fp) != 0) {
+ ok = 0;
+ }
+ funlockfile(fi.access.fp);
+ if (mg_fclose(&fi.access) != 0) {
+ ok = 0;
+ }
+ if (!ok) {
+ mg_cry_internal(conn,
+ "Error writing log file %s",
+ conn->dom_ctx->config[ACCESS_LOG_FILE]);
+ }
+ }
+}
+#else
+#error "Either enable filesystems or provide a custom log_access implementation"
+#endif /* Externally provided function */
+
+
+/* Verify given socket address against the ACL.
+ * Return -1 if ACL is malformed, 0 if address is disallowed, 1 if allowed.
+ */
+static int
+check_acl(struct mg_context *phys_ctx, const union usa *sa)
+{
+ int allowed, flag, matched;
+ struct vec vec;
+
+ if (phys_ctx) {
+ const char *list = phys_ctx->dd.config[ACCESS_CONTROL_LIST];
+
+ /* If any ACL is set, deny by default */
+ allowed = (list == NULL) ? '+' : '-';
+
+ while ((list = next_option(list, &vec, NULL)) != NULL) {
+ flag = vec.ptr[0];
+ matched = -1;
+ if ((vec.len > 0) && ((flag == '+') || (flag == '-'))) {
+ vec.ptr++;
+ vec.len--;
+ matched = parse_match_net(&vec, sa, 1);
+ }
+ if (matched < 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: subnet must be [+|-]IP-addr[/x]",
+ __func__);
+ return -1;
+ }
+ if (matched) {
+ allowed = flag;
+ }
+ }
+
+ return allowed == '+';
+ }
+ return -1;
+}
+
+
+#if !defined(_WIN32) && !defined(__ZEPHYR__)
+static int
+set_uid_option(struct mg_context *phys_ctx)
+{
+ int success = 0;
+
+ if (phys_ctx) {
+ /* We are currently running as curr_uid. */
+ const uid_t curr_uid = getuid();
+ /* If set, we want to run as run_as_user. */
+ const char *run_as_user = phys_ctx->dd.config[RUN_AS_USER];
+ const struct passwd *to_pw = NULL;
+
+ if ((run_as_user != NULL) && (to_pw = getpwnam(run_as_user)) == NULL) {
+ /* run_as_user does not exist on the system. We can't proceed
+ * further. */
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: unknown user [%s]",
+ __func__,
+ run_as_user);
+ } else if ((run_as_user == NULL) || (curr_uid == to_pw->pw_uid)) {
+ /* There was either no request to change user, or we're already
+ * running as run_as_user. Nothing else to do.
+ */
+ success = 1;
+ } else {
+ /* Valid change request. */
+ if (setgid(to_pw->pw_gid) == -1) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: setgid(%s): %s",
+ __func__,
+ run_as_user,
+ strerror(errno));
+ } else if (setgroups(0, NULL) == -1) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: setgroups(): %s",
+ __func__,
+ strerror(errno));
+ } else if (setuid(to_pw->pw_uid) == -1) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: setuid(%s): %s",
+ __func__,
+ run_as_user,
+ strerror(errno));
+ } else {
+ success = 1;
+ }
+ }
+ }
+
+ return success;
+}
+#endif /* !_WIN32 */
+
+
+static void
+tls_dtor(void *key)
+{
+ struct mg_workerTLS *tls = (struct mg_workerTLS *)key;
+ /* key == pthread_getspecific(sTlsKey); */
+
+ if (tls) {
+ if (tls->is_master == 2) {
+ tls->is_master = -3; /* Mark memory as dead */
+ mg_free(tls);
+ }
+ }
+ pthread_setspecific(sTlsKey, NULL);
+}
+
+
+#if defined(USE_MBEDTLS)
+/* Check if SSL is required.
+ * If so, set up ctx->ssl_ctx pointer. */
+static int
+mg_sslctx_init(struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx)
+{
+ if (!phys_ctx) {
+ return 0;
+ }
+
+ if (!dom_ctx) {
+ dom_ctx = &(phys_ctx->dd);
+ }
+
+ if (!is_ssl_port_used(dom_ctx->config[LISTENING_PORTS])) {
+ /* No SSL port is set. No need to setup SSL. */
+ return 1;
+ }
+
+ dom_ctx->ssl_ctx = (SSL_CTX *)mg_calloc(1, sizeof(*dom_ctx->ssl_ctx));
+ if (dom_ctx->ssl_ctx == NULL) {
+ fprintf(stderr, "ssl_ctx malloc failed\n");
+ return 0;
+ }
+
+ return mbed_sslctx_init(dom_ctx->ssl_ctx, dom_ctx->config[SSL_CERTIFICATE],
+ dom_ctx->config[SSL_CIPHER_LIST])
+ == 0
+ ? 1
+ : 0;
+}
+
+#elif defined(USE_GNUTLS)
+/* Check if SSL is required.
+ * If so, set up ctx->ssl_ctx pointer. */
+static int
+mg_sslctx_init(struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx)
+{
+ if (!phys_ctx) {
+ return 0;
+ }
+
+ if (!dom_ctx) {
+ dom_ctx = &(phys_ctx->dd);
+ }
+
+ if (!is_ssl_port_used(dom_ctx->config[LISTENING_PORTS])) {
+ /* No SSL port is set. No need to setup SSL. */
+ return 1;
+ }
+
+ dom_ctx->ssl_ctx = (SSL_CTX *)mg_calloc(1, sizeof(*dom_ctx->ssl_ctx));
+ if (dom_ctx->ssl_ctx == NULL) {
+ fprintf(stderr, "ssl_ctx malloc failed\n");
+ return 0;
+ }
+
+ return gtls_sslctx_init(dom_ctx->ssl_ctx, dom_ctx->config[SSL_CERTIFICATE])
+ == 0
+ ? 1
+ : 0;
+}
+
+#elif !defined(NO_SSL)
+
+static int ssl_use_pem_file(struct mg_context *phys_ctx,
+ struct mg_domain_context *dom_ctx,
+ const char *pem,
+ const char *chain);
+static const char *ssl_error(void);
+
+
+static int
+refresh_trust(struct mg_connection *conn)
+{
+ struct stat cert_buf;
+ int64_t t = 0;
+ const char *pem;
+ const char *chain;
+ int should_verify_peer;
+
+ if ((pem = conn->dom_ctx->config[SSL_CERTIFICATE]) == NULL) {
+ /* If pem is NULL and conn->phys_ctx->callbacks.init_ssl is not,
+ * refresh_trust still can not work. */
+ return 0;
+ }
+ chain = conn->dom_ctx->config[SSL_CERTIFICATE_CHAIN];
+ if (chain == NULL) {
+ /* pem is not NULL here */
+ chain = pem;
+ }
+ if (*chain == 0) {
+ chain = NULL;
+ }
+
+ if (stat(pem, &cert_buf) != -1) {
+ t = (int64_t)cert_buf.st_mtime;
+ }
+
+ mg_lock_context(conn->phys_ctx);
+ if ((t != 0) && (conn->dom_ctx->ssl_cert_last_mtime != t)) {
+ conn->dom_ctx->ssl_cert_last_mtime = t;
+
+ should_verify_peer = 0;
+ if (conn->dom_ctx->config[SSL_DO_VERIFY_PEER] != NULL) {
+ if (mg_strcasecmp(conn->dom_ctx->config[SSL_DO_VERIFY_PEER], "yes")
+ == 0) {
+ should_verify_peer = 1;
+ } else if (mg_strcasecmp(conn->dom_ctx->config[SSL_DO_VERIFY_PEER],
+ "optional")
+ == 0) {
+ should_verify_peer = 1;
+ }
+ }
+
+ if (should_verify_peer) {
+ char *ca_path = conn->dom_ctx->config[SSL_CA_PATH];
+ char *ca_file = conn->dom_ctx->config[SSL_CA_FILE];
+ if (SSL_CTX_load_verify_locations(conn->dom_ctx->ssl_ctx,
+ ca_file,
+ ca_path)
+ != 1) {
+ mg_unlock_context(conn->phys_ctx);
+ mg_cry_ctx_internal(
+ conn->phys_ctx,
+ "SSL_CTX_load_verify_locations error: %s "
+ "ssl_verify_peer requires setting "
+ "either ssl_ca_path or ssl_ca_file. Is any of them "
+ "present in "
+ "the .conf file?",
+ ssl_error());
+ return 0;
+ }
+ }
+
+ if (ssl_use_pem_file(conn->phys_ctx, conn->dom_ctx, pem, chain) == 0) {
+ mg_unlock_context(conn->phys_ctx);
+ return 0;
+ }
+ }
+ mg_unlock_context(conn->phys_ctx);
+
+ return 1;
+}
+
+#if defined(OPENSSL_API_1_1)
+#else
+static pthread_mutex_t *ssl_mutexes;
+#endif /* OPENSSL_API_1_1 */
+
+static int
+sslize(struct mg_connection *conn,
+ int (*func)(SSL *),
+ const struct mg_client_options *client_options)
+{
+ int ret, err;
+ int short_trust;
+ unsigned timeout = 1024;
+ unsigned i;
+
+ if (!conn) {
+ return 0;
+ }
+
+ short_trust =
+ (conn->dom_ctx->config[SSL_SHORT_TRUST] != NULL)
+ && (mg_strcasecmp(conn->dom_ctx->config[SSL_SHORT_TRUST], "yes") == 0);
+
+ if (short_trust) {
+ int trust_ret = refresh_trust(conn);
+ if (!trust_ret) {
+ return trust_ret;
+ }
+ }
+
+ mg_lock_context(conn->phys_ctx);
+ conn->ssl = SSL_new(conn->dom_ctx->ssl_ctx);
+ mg_unlock_context(conn->phys_ctx);
+ if (conn->ssl == NULL) {
+ mg_cry_internal(conn, "sslize error: %s", ssl_error());
+ OPENSSL_REMOVE_THREAD_STATE();
+ return 0;
+ }
+ SSL_set_app_data(conn->ssl, (char *)conn);
+
+ ret = SSL_set_fd(conn->ssl, conn->client.sock);
+ if (ret != 1) {
+ mg_cry_internal(conn, "sslize error: %s", ssl_error());
+ SSL_free(conn->ssl);
+ conn->ssl = NULL;
+ OPENSSL_REMOVE_THREAD_STATE();
+ return 0;
+ }
+
+ if (client_options) {
+ if (client_options->host_name) {
+ SSL_set_tlsext_host_name(conn->ssl, client_options->host_name);
+ }
+ }
+
+ /* Reuse the request timeout for the SSL_Accept/SSL_connect timeout */
+ if (conn->dom_ctx->config[REQUEST_TIMEOUT]) {
+ /* NOTE: The loop below acts as a back-off, so we can end
+ * up sleeping for more (or less) than the REQUEST_TIMEOUT. */
+ int to = atoi(conn->dom_ctx->config[REQUEST_TIMEOUT]);
+ if (to >= 0) {
+ timeout = (unsigned)to;
+ }
+ }
+
+ /* SSL functions may fail and require to be called again:
+ * see https://www.openssl.org/docs/manmaster/ssl/SSL_get_error.html
+ * Here "func" could be SSL_connect or SSL_accept. */
+ for (i = 0; i <= timeout; i += 50) {
+ ERR_clear_error();
+ /* conn->dom_ctx may be changed here (see ssl_servername_callback) */
+ ret = func(conn->ssl);
+ if (ret != 1) {
+ err = SSL_get_error(conn->ssl, ret);
+ if ((err == SSL_ERROR_WANT_CONNECT)
+ || (err == SSL_ERROR_WANT_ACCEPT)
+ || (err == SSL_ERROR_WANT_READ) || (err == SSL_ERROR_WANT_WRITE)
+ || (err == SSL_ERROR_WANT_X509_LOOKUP)) {
+ if (!STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)) {
+ /* Don't wait if the server is going to be stopped. */
+ break;
+ }
+ if (err == SSL_ERROR_WANT_X509_LOOKUP) {
+ /* Simply retry the function call. */
+ mg_sleep(50);
+ } else {
+ /* Need to retry the function call "later".
+ * See https://linux.die.net/man/3/ssl_get_error
+ * This is typical for non-blocking sockets. */
+ struct mg_pollfd pfd[2];
+ int pollres;
+ unsigned int num_sock = 1;
+ pfd[0].fd = conn->client.sock;
+ pfd[0].events = ((err == SSL_ERROR_WANT_CONNECT)
+ || (err == SSL_ERROR_WANT_WRITE))
+ ? POLLOUT
+ : POLLIN;
+
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ pfd[num_sock].fd =
+ conn->phys_ctx->thread_shutdown_notification_socket;
+ pfd[num_sock].events = POLLIN;
+ num_sock++;
+ }
+
+ pollres = mg_poll(pfd,
+ num_sock,
+ 50,
+ &(conn->phys_ctx->stop_flag));
+ if (pollres < 0) {
+ /* Break if error occurred (-1)
+ * or server shutdown (-2) */
+ break;
+ }
+ }
+
+ } else if (err == SSL_ERROR_SYSCALL) {
+ /* This is an IO error. Look at errno. */
+ mg_cry_internal(conn, "SSL syscall error %i", ERRNO);
+ break;
+
+ } else {
+ /* This is an SSL specific error, e.g. SSL_ERROR_SSL */
+ mg_cry_internal(conn, "sslize error: %s", ssl_error());
+ break;
+ }
+
+ } else {
+ /* success */
+ break;
+ }
+ }
+ ERR_clear_error();
+
+ if (ret != 1) {
+ SSL_free(conn->ssl);
+ conn->ssl = NULL;
+ OPENSSL_REMOVE_THREAD_STATE();
+ return 0;
+ }
+
+ return 1;
+}
+
+
+/* Return OpenSSL error message (from CRYPTO lib) */
+static const char *
+ssl_error(void)
+{
+ unsigned long err;
+ err = ERR_get_error();
+ return ((err == 0) ? "" : ERR_error_string(err, NULL));
+}
+
+
+static int
+hexdump2string(void *mem, int memlen, char *buf, int buflen)
+{
+ int i;
+ const char hexdigit[] = "0123456789abcdef";
+
+ if ((memlen <= 0) || (buflen <= 0)) {
+ return 0;
+ }
+ if (buflen < (3 * memlen)) {
+ return 0;
+ }
+
+ for (i = 0; i < memlen; i++) {
+ if (i > 0) {
+ buf[3 * i - 1] = ' ';
+ }
+ buf[3 * i] = hexdigit[(((uint8_t *)mem)[i] >> 4) & 0xF];
+ buf[3 * i + 1] = hexdigit[((uint8_t *)mem)[i] & 0xF];
+ }
+ buf[3 * memlen - 1] = 0;
+
+ return 1;
+}
+
+
+static int
+ssl_get_client_cert_info(const struct mg_connection *conn,
+ struct mg_client_cert *client_cert)
+{
+ X509 *cert = SSL_get_peer_certificate(conn->ssl);
+ if (cert) {
+ char str_buf[1024];
+ unsigned char buf[256];
+ char *str_serial = NULL;
+ unsigned int ulen;
+ int ilen;
+ unsigned char *tmp_buf;
+ unsigned char *tmp_p;
+
+ /* Handle to algorithm used for fingerprint */
+ const EVP_MD *digest = EVP_get_digestbyname("sha1");
+
+ /* Get Subject and issuer */
+ X509_NAME *subj = X509_get_subject_name(cert);
+ X509_NAME *iss = X509_get_issuer_name(cert);
+
+ /* Get serial number */
+ ASN1_INTEGER *serial = X509_get_serialNumber(cert);
+
+ /* Translate serial number to a hex string */
+ BIGNUM *serial_bn = ASN1_INTEGER_to_BN(serial, NULL);
+ if (serial_bn) {
+ str_serial = BN_bn2hex(serial_bn);
+ BN_free(serial_bn);
+ }
+ client_cert->serial =
+ str_serial ? mg_strdup_ctx(str_serial, conn->phys_ctx) : NULL;
+
+ /* Translate subject and issuer to a string */
+ (void)X509_NAME_oneline(subj, str_buf, (int)sizeof(str_buf));
+ client_cert->subject = mg_strdup_ctx(str_buf, conn->phys_ctx);
+ (void)X509_NAME_oneline(iss, str_buf, (int)sizeof(str_buf));
+ client_cert->issuer = mg_strdup_ctx(str_buf, conn->phys_ctx);
+
+ /* Calculate SHA1 fingerprint and store as a hex string */
+ ulen = 0;
+
+ /* ASN1_digest is deprecated. Do the calculation manually,
+ * using EVP_Digest. */
+ ilen = i2d_X509(cert, NULL);
+ tmp_buf = (ilen > 0)
+ ? (unsigned char *)mg_malloc_ctx((unsigned)ilen + 1,
+ conn->phys_ctx)
+ : NULL;
+ if (tmp_buf) {
+ tmp_p = tmp_buf;
+ (void)i2d_X509(cert, &tmp_p);
+ if (!EVP_Digest(
+ tmp_buf, (unsigned)ilen, buf, &ulen, digest, NULL)) {
+ ulen = 0;
+ }
+ mg_free(tmp_buf);
+ }
+
+ if (!hexdump2string(buf, (int)ulen, str_buf, (int)sizeof(str_buf))) {
+ *str_buf = 0;
+ }
+ client_cert->finger = mg_strdup_ctx(str_buf, conn->phys_ctx);
+
+ client_cert->peer_cert = (void *)cert;
+
+ /* Strings returned from bn_bn2hex must be freed using OPENSSL_free,
+ * see https://linux.die.net/man/3/bn_bn2hex */
+ OPENSSL_free(str_serial);
+ return 1;
+ }
+ return 0;
+}
+
+
+#if defined(OPENSSL_API_1_1)
+#else
+static void
+ssl_locking_callback(int mode, int mutex_num, const char *file, int line)
+{
+ (void)line;
+ (void)file;
+
+ if (mode & 1) {
+ /* 1 is CRYPTO_LOCK */
+ (void)pthread_mutex_lock(&ssl_mutexes[mutex_num]);
+ } else {
+ (void)pthread_mutex_unlock(&ssl_mutexes[mutex_num]);
+ }
+}
+#endif /* OPENSSL_API_1_1 */
+
+
+#if !defined(NO_SSL_DL)
+/* Load a DLL/Shared Object with a TLS/SSL implementation. */
+static void *
+load_tls_dll(char *ebuf,
+ size_t ebuf_len,
+ const char *dll_name,
+ struct ssl_func *sw,
+ int *feature_missing)
+{
+ union {
+ void *p;
+ void (*fp)(void);
+ } u;
+ void *dll_handle;
+ struct ssl_func *fp;
+ int ok;
+ int truncated = 0;
+
+ if ((dll_handle = dlopen(dll_name, RTLD_LAZY)) == NULL) {
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s: cannot load %s",
+ __func__,
+ dll_name);
+ return NULL;
+ }
+
+ ok = 1;
+ for (fp = sw; fp->name != NULL; fp++) {
+#if defined(_WIN32)
+ /* GetProcAddress() returns pointer to function */
+ u.fp = (void (*)(void))dlsym(dll_handle, fp->name);
+#else
+ /* dlsym() on UNIX returns void *. ISO C forbids casts of data
+ * pointers to function pointers. We need to use a union to make a
+ * cast. */
+ u.p = dlsym(dll_handle, fp->name);
+#endif /* _WIN32 */
+
+ /* Set pointer (might be NULL) */
+ fp->ptr = u.fp;
+
+ if (u.fp == NULL) {
+ DEBUG_TRACE("Missing function: %s\n", fp->name);
+ if (feature_missing) {
+ feature_missing[fp->required]++;
+ }
+ if (fp->required == TLS_Mandatory) {
+ /* Mandatory function is missing */
+ if (ok) {
+ /* This is the first missing function.
+ * Create a new error message. */
+ mg_snprintf(NULL,
+ &truncated,
+ ebuf,
+ ebuf_len,
+ "%s: %s: cannot find %s",
+ __func__,
+ dll_name,
+ fp->name);
+ ok = 0;
+ } else {
+ /* This is yet anothermissing function.
+ * Append existing error message. */
+ size_t cur_len = strlen(ebuf);
+ if (!truncated && ((ebuf_len - cur_len) > 3)) {
+ mg_snprintf(NULL,
+ &truncated,
+ ebuf + cur_len,
+ ebuf_len - cur_len - 3,
+ ", %s",
+ fp->name);
+ if (truncated) {
+ /* If truncated, add "..." */
+ strcat(ebuf, "...");
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!ok) {
+ (void)dlclose(dll_handle);
+ return NULL;
+ }
+
+ return dll_handle;
+}
+
+
+static void *ssllib_dll_handle; /* Store the ssl library handle. */
+static void *cryptolib_dll_handle; /* Store the crypto library handle. */
+
+#endif /* NO_SSL_DL */
+
+
+#if defined(SSL_ALREADY_INITIALIZED)
+static volatile ptrdiff_t cryptolib_users =
+ 1; /* Reference counter for crypto library. */
+#else
+static volatile ptrdiff_t cryptolib_users =
+ 0; /* Reference counter for crypto library. */
+#endif
+
+
+static int
+initialize_openssl(char *ebuf, size_t ebuf_len)
+{
+#if !defined(OPENSSL_API_1_1) && !defined(OPENSSL_API_3_0)
+ int i, num_locks;
+ size_t size;
+#endif
+
+ if (ebuf_len > 0) {
+ ebuf[0] = 0;
+ }
+
+#if !defined(NO_SSL_DL)
+ if (!cryptolib_dll_handle) {
+ memset(tls_feature_missing, 0, sizeof(tls_feature_missing));
+ cryptolib_dll_handle = load_tls_dll(
+ ebuf, ebuf_len, CRYPTO_LIB, crypto_sw, tls_feature_missing);
+ if (!cryptolib_dll_handle) {
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s: error loading library %s",
+ __func__,
+ CRYPTO_LIB);
+ DEBUG_TRACE("%s", ebuf);
+ return 0;
+ }
+ }
+#endif /* NO_SSL_DL */
+
+ if (mg_atomic_inc(&cryptolib_users) > 1) {
+ return 1;
+ }
+
+#if !defined(OPENSSL_API_1_1) && !defined(OPENSSL_API_3_0)
+ /* Initialize locking callbacks, needed for thread safety.
+ * http://www.openssl.org/support/faq.html#PROG1
+ */
+ num_locks = CRYPTO_num_locks();
+ if (num_locks < 0) {
+ num_locks = 0;
+ }
+ size = sizeof(pthread_mutex_t) * ((size_t)(num_locks));
+
+ /* allocate mutex array, if required */
+ if (num_locks == 0) {
+ /* No mutex array required */
+ ssl_mutexes = NULL;
+ } else {
+ /* Mutex array required - allocate it */
+ ssl_mutexes = (pthread_mutex_t *)mg_malloc(size);
+
+ /* Check OOM */
+ if (ssl_mutexes == NULL) {
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s: cannot allocate mutexes: %s",
+ __func__,
+ ssl_error());
+ DEBUG_TRACE("%s", ebuf);
+ return 0;
+ }
+
+ /* initialize mutex array */
+ for (i = 0; i < num_locks; i++) {
+ if (0 != pthread_mutex_init(&ssl_mutexes[i], &pthread_mutex_attr)) {
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s: error initializing mutex %i of %i",
+ __func__,
+ i,
+ num_locks);
+ DEBUG_TRACE("%s", ebuf);
+ mg_free(ssl_mutexes);
+ return 0;
+ }
+ }
+ }
+
+ CRYPTO_set_locking_callback(&ssl_locking_callback);
+ CRYPTO_set_id_callback(&mg_current_thread_id);
+#endif /* OPENSSL_API_1_1 || OPENSSL_API_3_0 */
+
+#if !defined(NO_SSL_DL)
+ if (!ssllib_dll_handle) {
+ ssllib_dll_handle =
+ load_tls_dll(ebuf, ebuf_len, SSL_LIB, ssl_sw, tls_feature_missing);
+ if (!ssllib_dll_handle) {
+#if !defined(OPENSSL_API_1_1)
+ mg_free(ssl_mutexes);
+#endif
+ DEBUG_TRACE("%s", ebuf);
+ return 0;
+ }
+ }
+#endif /* NO_SSL_DL */
+
+#if (defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0)) \
+ && !defined(NO_SSL_DL)
+ /* Initialize SSL library */
+ OPENSSL_init_ssl(0, NULL);
+ OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS
+ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS,
+ NULL);
+#else
+ /* Initialize SSL library */
+ SSL_library_init();
+ SSL_load_error_strings();
+#endif
+
+ return 1;
+}
+
+
+static int
+ssl_use_pem_file(struct mg_context *phys_ctx,
+ struct mg_domain_context *dom_ctx,
+ const char *pem,
+ const char *chain)
+{
+ if (SSL_CTX_use_certificate_file(dom_ctx->ssl_ctx, pem, 1) == 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: cannot open certificate file %s: %s",
+ __func__,
+ pem,
+ ssl_error());
+ return 0;
+ }
+
+ /* could use SSL_CTX_set_default_passwd_cb_userdata */
+ if (SSL_CTX_use_PrivateKey_file(dom_ctx->ssl_ctx, pem, 1) == 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: cannot open private key file %s: %s",
+ __func__,
+ pem,
+ ssl_error());
+ return 0;
+ }
+
+ if (SSL_CTX_check_private_key(dom_ctx->ssl_ctx) == 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: certificate and private key do not match: %s",
+ __func__,
+ pem);
+ return 0;
+ }
+
+ /* In contrast to OpenSSL, wolfSSL does not support certificate
+ * chain files that contain private keys and certificates in
+ * SSL_CTX_use_certificate_chain_file.
+ * The CivetWeb-Server used pem-Files that contained both information.
+ * In order to make wolfSSL work, it is split in two files.
+ * One file that contains key and certificate used by the server and
+ * an optional chain file for the ssl stack.
+ */
+ if (chain) {
+ if (SSL_CTX_use_certificate_chain_file(dom_ctx->ssl_ctx, chain) == 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "%s: cannot use certificate chain file %s: %s",
+ __func__,
+ chain,
+ ssl_error());
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
+#if defined(OPENSSL_API_1_1)
+static unsigned long
+ssl_get_protocol(int version_id)
+{
+ long unsigned ret = (long unsigned)SSL_OP_ALL;
+ if (version_id > 0)
+ ret |= SSL_OP_NO_SSLv2;
+ if (version_id > 1)
+ ret |= SSL_OP_NO_SSLv3;
+ if (version_id > 2)
+ ret |= SSL_OP_NO_TLSv1;
+ if (version_id > 3)
+ ret |= SSL_OP_NO_TLSv1_1;
+ if (version_id > 4)
+ ret |= SSL_OP_NO_TLSv1_2;
+#if defined(SSL_OP_NO_TLSv1_3)
+ if (version_id > 5)
+ ret |= SSL_OP_NO_TLSv1_3;
+#endif
+ return ret;
+}
+#else
+static long
+ssl_get_protocol(int version_id)
+{
+ unsigned long ret = (unsigned long)SSL_OP_ALL;
+ if (version_id > 0)
+ ret |= SSL_OP_NO_SSLv2;
+ if (version_id > 1)
+ ret |= SSL_OP_NO_SSLv3;
+ if (version_id > 2)
+ ret |= SSL_OP_NO_TLSv1;
+ if (version_id > 3)
+ ret |= SSL_OP_NO_TLSv1_1;
+ if (version_id > 4)
+ ret |= SSL_OP_NO_TLSv1_2;
+#if defined(SSL_OP_NO_TLSv1_3)
+ if (version_id > 5)
+ ret |= SSL_OP_NO_TLSv1_3;
+#endif
+ return (long)ret;
+}
+#endif /* OPENSSL_API_1_1 */
+
+
+/* SSL callback documentation:
+ * https://www.openssl.org/docs/man1.1.0/ssl/SSL_set_info_callback.html
+ * https://wiki.openssl.org/index.php/Manual:SSL_CTX_set_info_callback(3)
+ * https://linux.die.net/man/3/ssl_set_info_callback */
+/* Note: There is no "const" for the first argument in the documentation
+ * examples, however some (maybe most, but not all) headers of OpenSSL
+ * versions / OpenSSL compatibility layers have it. Having a different
+ * definition will cause a warning in C and an error in C++. Use "const SSL
+ * *", while automatic conversion from "SSL *" works for all compilers,
+ * but not other way around */
+static void
+ssl_info_callback(const SSL *ssl, int what, int ret)
+{
+ (void)ret;
+
+ if (what & SSL_CB_HANDSHAKE_START) {
+ SSL_get_app_data(ssl);
+ }
+ if (what & SSL_CB_HANDSHAKE_DONE) {
+ /* TODO: check for openSSL 1.1 */
+ //#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
+ // ssl->s3->flags |= SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS;
+ }
+}
+
+
+static int
+ssl_servername_callback(SSL *ssl, int *ad, void *arg)
+{
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-align"
+#endif /* defined(GCC_DIAGNOSTIC) */
+
+ /* We used an aligned pointer in SSL_set_app_data */
+ struct mg_connection *conn = (struct mg_connection *)SSL_get_app_data(ssl);
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic pop
+#endif /* defined(GCC_DIAGNOSTIC) */
+
+ const char *servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);
+
+ (void)ad;
+ (void)arg;
+
+ if ((conn == NULL) || (conn->phys_ctx == NULL)) {
+ DEBUG_ASSERT(0);
+ return SSL_TLSEXT_ERR_NOACK;
+ }
+ conn->dom_ctx = &(conn->phys_ctx->dd);
+
+ /* Old clients (Win XP) will not support SNI. Then, there
+ * is no server name available in the request - we can
+ * only work with the default certificate.
+ * Multiple HTTPS hosts on one IP+port are only possible
+ * with a certificate containing all alternative names.
+ */
+ if ((servername == NULL) || (*servername == 0)) {
+ DEBUG_TRACE("%s", "SSL connection not supporting SNI");
+ mg_lock_context(conn->phys_ctx);
+ SSL_set_SSL_CTX(ssl, conn->dom_ctx->ssl_ctx);
+ mg_unlock_context(conn->phys_ctx);
+ return SSL_TLSEXT_ERR_NOACK;
+ }
+
+ DEBUG_TRACE("TLS connection to host %s", servername);
+
+ while (conn->dom_ctx) {
+ if (!mg_strcasecmp(servername,
+ conn->dom_ctx->config[AUTHENTICATION_DOMAIN])) {
+ /* Found matching domain */
+ DEBUG_TRACE("TLS domain %s found",
+ conn->dom_ctx->config[AUTHENTICATION_DOMAIN]);
+ break;
+ }
+ mg_lock_context(conn->phys_ctx);
+ conn->dom_ctx = conn->dom_ctx->next;
+ mg_unlock_context(conn->phys_ctx);
+ }
+
+ if (conn->dom_ctx == NULL) {
+ /* Default domain */
+ DEBUG_TRACE("TLS default domain %s used",
+ conn->phys_ctx->dd.config[AUTHENTICATION_DOMAIN]);
+ conn->dom_ctx = &(conn->phys_ctx->dd);
+ }
+ mg_lock_context(conn->phys_ctx);
+ SSL_set_SSL_CTX(ssl, conn->dom_ctx->ssl_ctx);
+ mg_unlock_context(conn->phys_ctx);
+ return SSL_TLSEXT_ERR_OK;
+}
+
+
+#if defined(USE_ALPN)
+static const char alpn_proto_list[] = "\x02h2\x08http/1.1\x08http/1.0";
+static const char *alpn_proto_order_http1[] = {alpn_proto_list + 3,
+ alpn_proto_list + 3 + 8,
+ NULL};
+#if defined(USE_HTTP2)
+static const char *alpn_proto_order_http2[] = {alpn_proto_list,
+ alpn_proto_list + 3,
+ alpn_proto_list + 3 + 8,
+ NULL};
+#endif
+
+static int
+alpn_select_cb(SSL *ssl,
+ const unsigned char **out,
+ unsigned char *outlen,
+ const unsigned char *in,
+ unsigned int inlen,
+ void *arg)
+{
+ struct mg_domain_context *dom_ctx = (struct mg_domain_context *)arg;
+ unsigned int i, j, enable_http2 = 0;
+ const char **alpn_proto_order = alpn_proto_order_http1;
+
+ struct mg_workerTLS *tls =
+ (struct mg_workerTLS *)pthread_getspecific(sTlsKey);
+
+ (void)ssl;
+
+ if (tls == NULL) {
+ /* Need to store protocol in Thread Local Storage */
+ /* If there is no Thread Local Storage, don't use ALPN */
+ return SSL_TLSEXT_ERR_NOACK;
+ }
+
+#if defined(USE_HTTP2)
+ enable_http2 = (0 == strcmp(dom_ctx->config[ENABLE_HTTP2], "yes"));
+ if (enable_http2) {
+ alpn_proto_order = alpn_proto_order_http2;
+ }
+#endif
+
+ for (j = 0; alpn_proto_order[j] != NULL; j++) {
+ /* check all accepted protocols in this order */
+ const char *alpn_proto = alpn_proto_order[j];
+ /* search input for matching protocol */
+ for (i = 0; i < inlen; i++) {
+ if (!memcmp(in + i, alpn_proto, (unsigned char)alpn_proto[0])) {
+ *out = in + i + 1;
+ *outlen = in[i];
+ tls->alpn_proto = alpn_proto;
+ return SSL_TLSEXT_ERR_OK;
+ }
+ }
+ }
+
+ /* Nothing found */
+ return SSL_TLSEXT_ERR_NOACK;
+}
+
+
+static int
+next_protos_advertised_cb(SSL *ssl,
+ const unsigned char **data,
+ unsigned int *len,
+ void *arg)
+{
+ struct mg_domain_context *dom_ctx = (struct mg_domain_context *)arg;
+ *data = (const unsigned char *)alpn_proto_list;
+ *len = (unsigned int)strlen((const char *)data);
+
+ (void)ssl;
+ (void)dom_ctx;
+
+ return SSL_TLSEXT_ERR_OK;
+}
+
+
+static int
+init_alpn(struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx)
+{
+ unsigned int alpn_len = (unsigned int)strlen((char *)alpn_proto_list);
+ int ret = SSL_CTX_set_alpn_protos(dom_ctx->ssl_ctx,
+ (const unsigned char *)alpn_proto_list,
+ alpn_len);
+ if (ret != 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_set_alpn_protos error: %s",
+ ssl_error());
+ }
+
+ SSL_CTX_set_alpn_select_cb(dom_ctx->ssl_ctx,
+ alpn_select_cb,
+ (void *)dom_ctx);
+
+ SSL_CTX_set_next_protos_advertised_cb(dom_ctx->ssl_ctx,
+ next_protos_advertised_cb,
+ (void *)dom_ctx);
+
+ return ret;
+}
+#endif
+
+
+/* Setup SSL CTX as required by CivetWeb */
+static int
+init_ssl_ctx_impl(struct mg_context *phys_ctx,
+ struct mg_domain_context *dom_ctx,
+ const char *pem,
+ const char *chain)
+{
+ int callback_ret;
+ int should_verify_peer;
+ int peer_certificate_optional;
+ const char *ca_path;
+ const char *ca_file;
+ int use_default_verify_paths;
+ int verify_depth;
+ struct timespec now_mt;
+ md5_byte_t ssl_context_id[16];
+ md5_state_t md5state;
+ int protocol_ver;
+ int ssl_cache_timeout;
+
+#if (defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0)) \
+ && !defined(NO_SSL_DL)
+ if ((dom_ctx->ssl_ctx = SSL_CTX_new(TLS_server_method())) == NULL) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_new (server) error: %s",
+ ssl_error());
+ return 0;
+ }
+#else
+ if ((dom_ctx->ssl_ctx = SSL_CTX_new(SSLv23_server_method())) == NULL) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_new (server) error: %s",
+ ssl_error());
+ return 0;
+ }
+#endif /* OPENSSL_API_1_1 || OPENSSL_API_3_0 */
+
+#if defined(SSL_OP_NO_TLSv1_3)
+ SSL_CTX_clear_options(dom_ctx->ssl_ctx,
+ SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1
+ | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2
+ | SSL_OP_NO_TLSv1_3);
+#else
+ SSL_CTX_clear_options(dom_ctx->ssl_ctx,
+ SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1
+ | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2);
+#endif
+
+ protocol_ver = atoi(dom_ctx->config[SSL_PROTOCOL_VERSION]);
+ SSL_CTX_set_options(dom_ctx->ssl_ctx, ssl_get_protocol(protocol_ver));
+ SSL_CTX_set_options(dom_ctx->ssl_ctx, SSL_OP_SINGLE_DH_USE);
+ SSL_CTX_set_options(dom_ctx->ssl_ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
+ SSL_CTX_set_options(dom_ctx->ssl_ctx,
+ SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
+ SSL_CTX_set_options(dom_ctx->ssl_ctx, SSL_OP_NO_COMPRESSION);
+
+#if defined(SSL_OP_NO_RENEGOTIATION)
+ SSL_CTX_set_options(dom_ctx->ssl_ctx, SSL_OP_NO_RENEGOTIATION);
+#endif
+
+#if !defined(NO_SSL_DL)
+ SSL_CTX_set_ecdh_auto(dom_ctx->ssl_ctx, 1);
+#endif /* NO_SSL_DL */
+
+ /* In SSL documentation examples callback defined without const
+ * specifier 'void (*)(SSL *, int, int)' See:
+ * https://www.openssl.org/docs/man1.0.2/ssl/ssl.html
+ * https://www.openssl.org/docs/man1.1.0/ssl/ssl.html
+ * But in the source code const SSL is used:
+ * 'void (*)(const SSL *, int, int)' See:
+ * https://github.com/openssl/openssl/blob/1d97c8435171a7af575f73c526d79e1ef0ee5960/ssl/ssl.h#L1173
+ * Problem about wrong documentation described, but not resolved:
+ * https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1147526
+ * Wrong const cast ignored on C or can be suppressed by compiler flags.
+ * But when compiled with modern C++ compiler, correct const should be
+ * provided
+ */
+ SSL_CTX_set_info_callback(dom_ctx->ssl_ctx, ssl_info_callback);
+
+ SSL_CTX_set_tlsext_servername_callback(dom_ctx->ssl_ctx,
+ ssl_servername_callback);
+
+ /* If a callback has been specified, call it. */
+ callback_ret = (phys_ctx->callbacks.init_ssl == NULL)
+ ? 0
+ : (phys_ctx->callbacks.init_ssl(dom_ctx->ssl_ctx,
+ phys_ctx->user_data));
+
+ /* If callback returns 0, civetweb sets up the SSL certificate.
+ * If it returns 1, civetweb assumes the callback already did this.
+ * If it returns -1, initializing ssl fails. */
+ if (callback_ret < 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL callback returned error: %i",
+ callback_ret);
+ return 0;
+ }
+ if (callback_ret > 0) {
+ /* Callback did everything. */
+ return 1;
+ }
+
+ /* If a domain callback has been specified, call it. */
+ callback_ret = (phys_ctx->callbacks.init_ssl_domain == NULL)
+ ? 0
+ : (phys_ctx->callbacks.init_ssl_domain(
+ dom_ctx->config[AUTHENTICATION_DOMAIN],
+ dom_ctx->ssl_ctx,
+ phys_ctx->user_data));
+
+ /* If domain callback returns 0, civetweb sets up the SSL certificate.
+ * If it returns 1, civetweb assumes the callback already did this.
+ * If it returns -1, initializing ssl fails. */
+ if (callback_ret < 0) {
+ mg_cry_ctx_internal(phys_ctx,
+ "Domain SSL callback returned error: %i",
+ callback_ret);
+ return 0;
+ }
+ if (callback_ret > 0) {
+ /* Domain callback did everything. */
+ return 1;
+ }
+
+ /* Use some combination of start time, domain and port as a SSL
+ * context ID. This should be unique on the current machine. */
+ md5_init(&md5state);
+ clock_gettime(CLOCK_MONOTONIC, &now_mt);
+ md5_append(&md5state, (const md5_byte_t *)&now_mt, sizeof(now_mt));
+ md5_append(&md5state,
+ (const md5_byte_t *)phys_ctx->dd.config[LISTENING_PORTS],
+ strlen(phys_ctx->dd.config[LISTENING_PORTS]));
+ md5_append(&md5state,
+ (const md5_byte_t *)dom_ctx->config[AUTHENTICATION_DOMAIN],
+ strlen(dom_ctx->config[AUTHENTICATION_DOMAIN]));
+ md5_append(&md5state, (const md5_byte_t *)phys_ctx, sizeof(*phys_ctx));
+ md5_append(&md5state, (const md5_byte_t *)dom_ctx, sizeof(*dom_ctx));
+ md5_finish(&md5state, ssl_context_id);
+
+ SSL_CTX_set_session_id_context(dom_ctx->ssl_ctx,
+ (unsigned char *)ssl_context_id,
+ sizeof(ssl_context_id));
+
+ if (pem != NULL) {
+ if (!ssl_use_pem_file(phys_ctx, dom_ctx, pem, chain)) {
+ return 0;
+ }
+ }
+
+ /* Should we support client certificates? */
+ /* Default is "no". */
+ should_verify_peer = 0;
+ peer_certificate_optional = 0;
+ if (dom_ctx->config[SSL_DO_VERIFY_PEER] != NULL) {
+ if (mg_strcasecmp(dom_ctx->config[SSL_DO_VERIFY_PEER], "yes") == 0) {
+ /* Yes, they are mandatory */
+ should_verify_peer = 1;
+ } else if (mg_strcasecmp(dom_ctx->config[SSL_DO_VERIFY_PEER],
+ "optional")
+ == 0) {
+ /* Yes, they are optional */
+ should_verify_peer = 1;
+ peer_certificate_optional = 1;
+ }
+ }
+
+ use_default_verify_paths =
+ (dom_ctx->config[SSL_DEFAULT_VERIFY_PATHS] != NULL)
+ && (mg_strcasecmp(dom_ctx->config[SSL_DEFAULT_VERIFY_PATHS], "yes")
+ == 0);
+
+ if (should_verify_peer) {
+ ca_path = dom_ctx->config[SSL_CA_PATH];
+ ca_file = dom_ctx->config[SSL_CA_FILE];
+ if (SSL_CTX_load_verify_locations(dom_ctx->ssl_ctx, ca_file, ca_path)
+ != 1) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_load_verify_locations error: %s "
+ "ssl_verify_peer requires setting "
+ "either ssl_ca_path or ssl_ca_file. "
+ "Is any of them present in the "
+ ".conf file?",
+ ssl_error());
+ return 0;
+ }
+
+ if (peer_certificate_optional) {
+ SSL_CTX_set_verify(dom_ctx->ssl_ctx, SSL_VERIFY_PEER, NULL);
+ } else {
+ SSL_CTX_set_verify(dom_ctx->ssl_ctx,
+ SSL_VERIFY_PEER
+ | SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
+ NULL);
+ }
+
+ if (use_default_verify_paths
+ && (SSL_CTX_set_default_verify_paths(dom_ctx->ssl_ctx) != 1)) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_set_default_verify_paths error: %s",
+ ssl_error());
+ return 0;
+ }
+
+ if (dom_ctx->config[SSL_VERIFY_DEPTH]) {
+ verify_depth = atoi(dom_ctx->config[SSL_VERIFY_DEPTH]);
+ SSL_CTX_set_verify_depth(dom_ctx->ssl_ctx, verify_depth);
+ }
+ }
+
+ if (dom_ctx->config[SSL_CIPHER_LIST] != NULL) {
+ if (SSL_CTX_set_cipher_list(dom_ctx->ssl_ctx,
+ dom_ctx->config[SSL_CIPHER_LIST])
+ != 1) {
+ mg_cry_ctx_internal(phys_ctx,
+ "SSL_CTX_set_cipher_list error: %s",
+ ssl_error());
+ }
+ }
+
+ /* SSL session caching */
+ ssl_cache_timeout = ((dom_ctx->config[SSL_CACHE_TIMEOUT] != NULL)
+ ? atoi(dom_ctx->config[SSL_CACHE_TIMEOUT])
+ : 0);
+ if (ssl_cache_timeout > 0) {
+ SSL_CTX_set_session_cache_mode(dom_ctx->ssl_ctx, SSL_SESS_CACHE_BOTH);
+ /* SSL_CTX_sess_set_cache_size(dom_ctx->ssl_ctx, 10000); ... use
+ * default */
+ SSL_CTX_set_timeout(dom_ctx->ssl_ctx, (long)ssl_cache_timeout);
+ }
+
+#if defined(USE_ALPN)
+ /* Initialize ALPN only of TLS library (OpenSSL version) supports ALPN */
+#if !defined(NO_SSL_DL)
+ if (!tls_feature_missing[TLS_ALPN])
+#endif
+ {
+ init_alpn(phys_ctx, dom_ctx);
+ }
+#endif
+
+ return 1;
+}
+
+
+/* Check if SSL is required.
+ * If so, dynamically load SSL library
+ * and set up ctx->ssl_ctx pointer. */
+static int
+init_ssl_ctx(struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx)
+{
+ void *ssl_ctx = 0;
+ int callback_ret;
+ const char *pem;
+ const char *chain;
+ char ebuf[128];
+
+ if (!phys_ctx) {
+ return 0;
+ }
+
+ if (!dom_ctx) {
+ dom_ctx = &(phys_ctx->dd);
+ }
+
+ if (!is_ssl_port_used(dom_ctx->config[LISTENING_PORTS])) {
+ /* No SSL port is set. No need to setup SSL. */
+ return 1;
+ }
+
+ /* Check for external SSL_CTX */
+ callback_ret =
+ (phys_ctx->callbacks.external_ssl_ctx == NULL)
+ ? 0
+ : (phys_ctx->callbacks.external_ssl_ctx(&ssl_ctx,
+ phys_ctx->user_data));
+
+ if (callback_ret < 0) {
+ /* Callback exists and returns <0: Initializing failed. */
+ mg_cry_ctx_internal(phys_ctx,
+ "external_ssl_ctx callback returned error: %i",
+ callback_ret);
+ return 0;
+ } else if (callback_ret > 0) {
+ /* Callback exists and returns >0: Initializing complete,
+ * civetweb should not modify the SSL context. */
+ dom_ctx->ssl_ctx = (SSL_CTX *)ssl_ctx;
+ if (!initialize_openssl(ebuf, sizeof(ebuf))) {
+ mg_cry_ctx_internal(phys_ctx, "%s", ebuf);
+ return 0;
+ }
+ return 1;
+ }
+ /* If the callback does not exist or return 0, civetweb must initialize
+ * the SSL context. Handle "domain" callback next. */
+
+ /* Check for external domain SSL_CTX callback. */
+ callback_ret = (phys_ctx->callbacks.external_ssl_ctx_domain == NULL)
+ ? 0
+ : (phys_ctx->callbacks.external_ssl_ctx_domain(
+ dom_ctx->config[AUTHENTICATION_DOMAIN],
+ &ssl_ctx,
+ phys_ctx->user_data));
+
+ if (callback_ret < 0) {
+ /* Callback < 0: Error. Abort init. */
+ mg_cry_ctx_internal(
+ phys_ctx,
+ "external_ssl_ctx_domain callback returned error: %i",
+ callback_ret);
+ return 0;
+ } else if (callback_ret > 0) {
+ /* Callback > 0: Consider init done. */
+ dom_ctx->ssl_ctx = (SSL_CTX *)ssl_ctx;
+ if (!initialize_openssl(ebuf, sizeof(ebuf))) {
+ mg_cry_ctx_internal(phys_ctx, "%s", ebuf);
+ return 0;
+ }
+ return 1;
+ }
+ /* else: external_ssl_ctx/external_ssl_ctx_domain do not exist or return
+ * 0, CivetWeb should continue initializing SSL */
+
+ /* If PEM file is not specified and the init_ssl callbacks
+ * are not specified, setup will fail. */
+ if (((pem = dom_ctx->config[SSL_CERTIFICATE]) == NULL)
+ && (phys_ctx->callbacks.init_ssl == NULL)
+ && (phys_ctx->callbacks.init_ssl_domain == NULL)) {
+ /* No certificate and no init_ssl callbacks:
+ * Essential data to set up TLS is missing.
+ */
+ mg_cry_ctx_internal(phys_ctx,
+ "Initializing SSL failed: -%s is not set",
+ config_options[SSL_CERTIFICATE].name);
+ return 0;
+ }
+
+ /* If a certificate chain is configured, use it. */
+ chain = dom_ctx->config[SSL_CERTIFICATE_CHAIN];
+ if (chain == NULL) {
+ /* Default: certificate chain in PEM file */
+ chain = pem;
+ }
+ if ((chain != NULL) && (*chain == 0)) {
+ /* If the chain is an empty string, don't use it. */
+ chain = NULL;
+ }
+
+ if (!initialize_openssl(ebuf, sizeof(ebuf))) {
+ mg_cry_ctx_internal(phys_ctx, "%s", ebuf);
+ return 0;
+ }
+
+ return init_ssl_ctx_impl(phys_ctx, dom_ctx, pem, chain);
+}
+
+
+static void
+uninitialize_openssl(void)
+{
+#if defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0)
+
+ if (mg_atomic_dec(&cryptolib_users) == 0) {
+
+ /* Shutdown according to
+ * https://wiki.openssl.org/index.php/Library_Initialization#Cleanup
+ * http://stackoverflow.com/questions/29845527/how-to-properly-uninitialize-openssl
+ */
+ CONF_modules_unload(1);
+#else
+ int i;
+
+ if (mg_atomic_dec(&cryptolib_users) == 0) {
+
+ /* Shutdown according to
+ * https://wiki.openssl.org/index.php/Library_Initialization#Cleanup
+ * http://stackoverflow.com/questions/29845527/how-to-properly-uninitialize-openssl
+ */
+ CRYPTO_set_locking_callback(NULL);
+ CRYPTO_set_id_callback(NULL);
+ ENGINE_cleanup();
+ CONF_modules_unload(1);
+ ERR_free_strings();
+ EVP_cleanup();
+ CRYPTO_cleanup_all_ex_data();
+ OPENSSL_REMOVE_THREAD_STATE();
+
+ for (i = 0; i < CRYPTO_num_locks(); i++) {
+ pthread_mutex_destroy(&ssl_mutexes[i]);
+ }
+ mg_free(ssl_mutexes);
+ ssl_mutexes = NULL;
+#endif /* OPENSSL_API_1_1 || OPENSSL_API_3_0 */
+ }
+}
+#endif /* !defined(NO_SSL) && !defined(USE_MBEDTLS) && !defined(USE_GNUTLS) */
+
+
+#if !defined(NO_FILESYSTEMS)
+static int
+set_gpass_option(struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx)
+{
+ if (phys_ctx) {
+ struct mg_file file = STRUCT_FILE_INITIALIZER;
+ const char *path;
+ struct mg_connection fc;
+ if (!dom_ctx) {
+ dom_ctx = &(phys_ctx->dd);
+ }
+ path = dom_ctx->config[GLOBAL_PASSWORDS_FILE];
+ if ((path != NULL)
+ && !mg_stat(fake_connection(&fc, phys_ctx), path, &file.stat)) {
+ mg_cry_ctx_internal(phys_ctx,
+ "Cannot open %s: %s",
+ path,
+ strerror(ERRNO));
+ return 0;
+ }
+ return 1;
+ }
+ return 0;
+}
+#endif /* NO_FILESYSTEMS */
+
+
+static int
+set_acl_option(struct mg_context *phys_ctx)
+{
+ union usa sa;
+ memset(&sa, 0, sizeof(sa));
+#if defined(USE_IPV6)
+ sa.sin6.sin6_family = AF_INET6;
+#else
+ sa.sin.sin_family = AF_INET;
+#endif
+ return check_acl(phys_ctx, &sa) != -1;
+}
+
+
+static void
+reset_per_request_attributes(struct mg_connection *conn)
+{
+ if (!conn) {
+ return;
+ }
+
+ conn->num_bytes_sent = conn->consumed_content = 0;
+
+ conn->path_info = NULL;
+ conn->status_code = -1;
+ conn->content_len = -1;
+ conn->is_chunked = 0;
+ conn->must_close = 0;
+ conn->request_len = 0;
+ conn->request_state = 0;
+ conn->throttle = 0;
+ conn->accept_gzip = 0;
+
+ conn->response_info.content_length = conn->request_info.content_length = -1;
+ conn->response_info.http_version = conn->request_info.http_version = NULL;
+ conn->response_info.num_headers = conn->request_info.num_headers = 0;
+ conn->response_info.status_text = NULL;
+ conn->response_info.status_code = 0;
+
+ conn->request_info.remote_user = NULL;
+ conn->request_info.request_method = NULL;
+ conn->request_info.request_uri = NULL;
+
+ /* Free cleaned local URI (if any) */
+ if (conn->request_info.local_uri != conn->request_info.local_uri_raw) {
+ mg_free((void *)conn->request_info.local_uri);
+ conn->request_info.local_uri = NULL;
+ }
+ conn->request_info.local_uri = NULL;
+
+#if defined(USE_SERVER_STATS)
+ conn->processing_time = 0;
+#endif
+}
+
+
+static int
+set_tcp_nodelay(const struct socket *so, int nodelay_on)
+{
+ if ((so->lsa.sa.sa_family == AF_INET)
+ || (so->lsa.sa.sa_family == AF_INET6)) {
+ /* Only for TCP sockets */
+ if (setsockopt(so->sock,
+ IPPROTO_TCP,
+ TCP_NODELAY,
+ (SOCK_OPT_TYPE)&nodelay_on,
+ sizeof(nodelay_on))
+ != 0) {
+ /* Error */
+ return 1;
+ }
+ }
+ /* OK */
+ return 0;
+}
+
+
+#if !defined(__ZEPHYR__)
+static void
+close_socket_gracefully(struct mg_connection *conn)
+{
+#if defined(_WIN32)
+ char buf[MG_BUF_LEN];
+ int n;
+#endif
+ struct linger linger;
+ int error_code = 0;
+ int linger_timeout = -2;
+ socklen_t opt_len = sizeof(error_code);
+
+ if (!conn) {
+ return;
+ }
+
+ /* http://msdn.microsoft.com/en-us/library/ms739165(v=vs.85).aspx:
+ * "Note that enabling a nonzero timeout on a nonblocking socket
+ * is not recommended.", so set it to blocking now */
+ set_blocking_mode(conn->client.sock);
+
+ /* Send FIN to the client */
+ shutdown(conn->client.sock, SHUTDOWN_WR);
+
+#if defined(_WIN32)
+ /* Read and discard pending incoming data. If we do not do that and
+ * close
+ * the socket, the data in the send buffer may be discarded. This
+ * behaviour is seen on Windows, when client keeps sending data
+ * when server decides to close the connection; then when client
+ * does recv() it gets no data back. */
+ do {
+ n = pull_inner(NULL, conn, buf, sizeof(buf), /* Timeout in s: */ 1.0);
+ } while (n > 0);
+#endif
+
+ if (conn->dom_ctx->config[LINGER_TIMEOUT]) {
+ linger_timeout = atoi(conn->dom_ctx->config[LINGER_TIMEOUT]);
+ }
+
+ /* Set linger option according to configuration */
+ if (linger_timeout >= 0) {
+ /* Set linger option to avoid socket hanging out after close. This
+ * prevent ephemeral port exhaust problem under high QPS. */
+ linger.l_onoff = 1;
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4244)
+#endif
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+ /* Data type of linger structure elements may differ,
+ * so we don't know what cast we need here.
+ * Disable type conversion warnings. */
+
+ linger.l_linger = (linger_timeout + 999) / 1000;
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic pop
+#endif
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+ } else {
+ linger.l_onoff = 0;
+ linger.l_linger = 0;
+ }
+
+ if (linger_timeout < -1) {
+ /* Default: don't configure any linger */
+ } else if (getsockopt(conn->client.sock,
+ SOL_SOCKET,
+ SO_ERROR,
+#if defined(_WIN32) /* WinSock uses different data type here */
+ (char *)&error_code,
+#else
+ &error_code,
+#endif
+ &opt_len)
+ != 0) {
+ /* Cannot determine if socket is already closed. This should
+ * not occur and never did in a test. Log an error message
+ * and continue. */
+ mg_cry_internal(conn,
+ "%s: getsockopt(SOL_SOCKET SO_ERROR) failed: %s",
+ __func__,
+ strerror(ERRNO));
+#if defined(_WIN32)
+ } else if (error_code == WSAECONNRESET) {
+#else
+ } else if (error_code == ECONNRESET) {
+#endif
+ /* Socket already closed by client/peer, close socket without linger
+ */
+ } else {
+
+ /* Set linger timeout */
+ if (setsockopt(conn->client.sock,
+ SOL_SOCKET,
+ SO_LINGER,
+ (char *)&linger,
+ sizeof(linger))
+ != 0) {
+ mg_cry_internal(
+ conn,
+ "%s: setsockopt(SOL_SOCKET SO_LINGER(%i,%i)) failed: %s",
+ __func__,
+ linger.l_onoff,
+ linger.l_linger,
+ strerror(ERRNO));
+ }
+ }
+
+ /* Now we know that our FIN is ACK-ed, safe to close */
+ closesocket(conn->client.sock);
+ conn->client.sock = INVALID_SOCKET;
+}
+#endif
+
+
+static void
+close_connection(struct mg_connection *conn)
+{
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 6; /* to close */
+#endif
+
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ if (conn->lua_websocket_state) {
+ lua_websocket_close(conn, conn->lua_websocket_state);
+ conn->lua_websocket_state = NULL;
+ }
+#endif
+
+ mg_lock_connection(conn);
+
+ /* Set close flag, so keep-alive loops will stop */
+ conn->must_close = 1;
+
+ /* call the connection_close callback if assigned */
+ if (conn->phys_ctx->callbacks.connection_close != NULL) {
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ conn->phys_ctx->callbacks.connection_close(conn);
+ }
+ }
+
+ /* Reset user data, after close callback is called.
+ * Do not reuse it. If the user needs a destructor,
+ * it must be done in the connection_close callback. */
+ mg_set_user_connection_data(conn, NULL);
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 7; /* closing */
+#endif
+
+#if defined(USE_MBEDTLS)
+ if (conn->ssl != NULL) {
+ mbed_ssl_close(conn->ssl);
+ conn->ssl = NULL;
+ }
+#elif defined(USE_GNUTLS)
+ if (conn->ssl != NULL) {
+ gtls_ssl_close(conn->ssl);
+ conn->ssl = NULL;
+ }
+#elif !defined(NO_SSL)
+ if (conn->ssl != NULL) {
+ /* Run SSL_shutdown twice to ensure completely close SSL connection
+ */
+ SSL_shutdown(conn->ssl);
+ SSL_free(conn->ssl);
+ OPENSSL_REMOVE_THREAD_STATE();
+ conn->ssl = NULL;
+ }
+#endif
+ if (conn->client.sock != INVALID_SOCKET) {
+#if defined(__ZEPHYR__)
+ closesocket(conn->client.sock);
+#else
+ close_socket_gracefully(conn);
+#endif
+ conn->client.sock = INVALID_SOCKET;
+ }
+
+ /* call the connection_closed callback if assigned */
+ if (conn->phys_ctx->callbacks.connection_closed != NULL) {
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ conn->phys_ctx->callbacks.connection_closed(conn);
+ }
+ }
+
+ mg_unlock_connection(conn);
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 8; /* closed */
+#endif
+}
+
+
+CIVETWEB_API void
+mg_close_connection(struct mg_connection *conn)
+{
+ if ((conn == NULL) || (conn->phys_ctx == NULL)) {
+ return;
+ }
+
+#if defined(USE_WEBSOCKET)
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ if (conn->in_websocket_handling) {
+ /* Set close flag, so the server thread can exit. */
+ conn->must_close = 1;
+ return;
+ }
+ }
+ if (conn->phys_ctx->context_type == CONTEXT_WS_CLIENT) {
+
+ unsigned int i;
+
+ /* client context: loops must end */
+ STOP_FLAG_ASSIGN(&conn->phys_ctx->stop_flag, 1);
+ conn->must_close = 1;
+
+ /* We need to get the client thread out of the select/recv call
+ * here. */
+ /* Since we use a sleep quantum of some seconds to check for recv
+ * timeouts, we will just wait a few seconds in mg_join_thread. */
+
+ /* join worker thread */
+ for (i = 0; i < conn->phys_ctx->spawned_worker_threads; i++) {
+ mg_join_thread(conn->phys_ctx->worker_threadids[i]);
+ }
+ }
+#endif /* defined(USE_WEBSOCKET) */
+
+ close_connection(conn);
+
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) \
+ && !defined(USE_GNUTLS) // TODO: mbedTLS client
+ if (((conn->phys_ctx->context_type == CONTEXT_HTTP_CLIENT)
+ || (conn->phys_ctx->context_type == CONTEXT_WS_CLIENT))
+ && (conn->phys_ctx->dd.ssl_ctx != NULL)) {
+ SSL_CTX_free(conn->phys_ctx->dd.ssl_ctx);
+ }
+#endif
+
+#if defined(USE_WEBSOCKET)
+ if (conn->phys_ctx->context_type == CONTEXT_WS_CLIENT) {
+ mg_free(conn->phys_ctx->worker_threadids);
+ (void)pthread_mutex_destroy(&conn->mutex);
+ mg_free(conn);
+ } else if (conn->phys_ctx->context_type == CONTEXT_HTTP_CLIENT) {
+ (void)pthread_mutex_destroy(&conn->mutex);
+ mg_free(conn);
+ }
+#else
+ if (conn->phys_ctx->context_type == CONTEXT_HTTP_CLIENT) { /* Client */
+ (void)pthread_mutex_destroy(&conn->mutex);
+ mg_free(conn);
+ }
+#endif /* defined(USE_WEBSOCKET) */
+}
+
+
+static struct mg_connection *
+mg_connect_client_impl(const struct mg_client_options *client_options,
+ int use_ssl,
+ struct mg_init_data *init,
+ struct mg_error_data *error)
+{
+ struct mg_connection *conn = NULL;
+ SOCKET sock;
+ union usa sa;
+ struct sockaddr *psa;
+ socklen_t len;
+
+ unsigned max_req_size =
+ (unsigned)atoi(config_options[MAX_REQUEST_SIZE].default_value);
+
+ /* Size of structures, aligned to 8 bytes */
+ size_t conn_size = ((sizeof(struct mg_connection) + 7) >> 3) << 3;
+ size_t ctx_size = ((sizeof(struct mg_context) + 7) >> 3) << 3;
+ size_t alloc_size = conn_size + ctx_size + max_req_size;
+
+ (void)init; /* TODO: Implement required options */
+
+ conn = (struct mg_connection *)mg_calloc(1, alloc_size);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OK;
+ error->code_sub = 0;
+ if (error->text_buffer_size > 0) {
+ error->text[0] = 0;
+ }
+ }
+
+ if (conn == NULL) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)alloc_size;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "calloc(): %s",
+ strerror(ERRNO));
+ }
+ return NULL;
+ }
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-align"
+#endif /* defined(GCC_DIAGNOSTIC) */
+ /* conn_size is aligned to 8 bytes */
+
+ conn->phys_ctx = (struct mg_context *)(((char *)conn) + conn_size);
+
+#if defined(GCC_DIAGNOSTIC)
+#pragma GCC diagnostic pop
+#endif /* defined(GCC_DIAGNOSTIC) */
+
+ conn->buf = (((char *)conn) + conn_size + ctx_size);
+ conn->buf_size = (int)max_req_size;
+ conn->phys_ctx->context_type = CONTEXT_HTTP_CLIENT;
+ conn->dom_ctx = &(conn->phys_ctx->dd);
+
+ if (!connect_socket(conn->phys_ctx,
+ client_options->host,
+ client_options->port,
+ use_ssl,
+ error,
+ &sock,
+ &sa)) {
+ /* "error" will be set by connect_socket. */
+ /* free all memory and return NULL; */
+ mg_free(conn);
+ return NULL;
+ }
+
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) \
+ && !defined(USE_GNUTLS) // TODO: mbedTLS client
+#if (defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0)) \
+ && !defined(NO_SSL_DL)
+
+ if (use_ssl
+ && (conn->dom_ctx->ssl_ctx = SSL_CTX_new(TLS_client_method()))
+ == NULL) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_TLS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "SSL_CTX_new error: %s",
+ ssl_error());
+ }
+
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+
+#else
+
+ if (use_ssl
+ && (conn->dom_ctx->ssl_ctx = SSL_CTX_new(SSLv23_client_method()))
+ == NULL) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_TLS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "SSL_CTX_new error: %s",
+ ssl_error());
+ }
+
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+
+#endif /* OPENSSL_API_1_1 || OPENSSL_API_3_0 */
+#endif /* NO_SSL */
+
+#if defined(USE_IPV6)
+ len = (sa.sa.sa_family == AF_INET) ? sizeof(conn->client.rsa.sin)
+ : sizeof(conn->client.rsa.sin6);
+ psa = (sa.sa.sa_family == AF_INET)
+ ? (struct sockaddr *)&(conn->client.rsa.sin)
+ : (struct sockaddr *)&(conn->client.rsa.sin6);
+#else
+ len = sizeof(conn->client.rsa.sin);
+ psa = (struct sockaddr *)&(conn->client.rsa.sin);
+#endif
+
+ conn->client.sock = sock;
+ conn->client.lsa = sa;
+
+ if (getsockname(sock, psa, &len) != 0) {
+ mg_cry_internal(conn,
+ "%s: getsockname() failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+
+ conn->client.is_ssl = use_ssl ? 1 : 0;
+ if (0 != pthread_mutex_init(&conn->mutex, &pthread_mutex_attr)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "Can not create mutex");
+ }
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) \
+ && !defined(USE_GNUTLS) // TODO: mbedTLS client
+ SSL_CTX_free(conn->dom_ctx->ssl_ctx);
+#endif
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) \
+ && !defined(USE_GNUTLS) // TODO: mbedTLS client
+ if (use_ssl) {
+ /* TODO: Check ssl_verify_peer and ssl_ca_path here.
+ * SSL_CTX_set_verify call is needed to switch off server
+ * certificate checking, which is off by default in OpenSSL and
+ * on in yaSSL. */
+ /* TODO: SSL_CTX_set_verify(conn->dom_ctx,
+ * SSL_VERIFY_PEER, verify_ssl_server); */
+
+ if (client_options->client_cert) {
+ if (!ssl_use_pem_file(conn->phys_ctx,
+ conn->dom_ctx,
+ client_options->client_cert,
+ NULL)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_TLS_CLIENT_CERT_ERROR;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "Can not use SSL client certificate");
+ }
+
+ SSL_CTX_free(conn->dom_ctx->ssl_ctx);
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+ }
+
+ if (client_options->server_cert) {
+ if (SSL_CTX_load_verify_locations(conn->dom_ctx->ssl_ctx,
+ client_options->server_cert,
+ NULL)
+ != 1) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_TLS_SERVER_CERT_ERROR;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "SSL_CTX_load_verify_locations error: %s",
+ ssl_error());
+ }
+ SSL_CTX_free(conn->dom_ctx->ssl_ctx);
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+ SSL_CTX_set_verify(conn->dom_ctx->ssl_ctx, SSL_VERIFY_PEER, NULL);
+ } else {
+ SSL_CTX_set_verify(conn->dom_ctx->ssl_ctx, SSL_VERIFY_NONE, NULL);
+ }
+
+ if (!sslize(conn, SSL_connect, client_options)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_TLS_CONNECT_ERROR;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for ebuf */
+ error->text,
+ error->text_buffer_size,
+ "SSL connection error");
+ }
+ SSL_CTX_free(conn->dom_ctx->ssl_ctx);
+ closesocket(sock);
+ mg_free(conn);
+ return NULL;
+ }
+ }
+#endif
+
+ return conn;
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_client_secure(const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size)
+{
+ struct mg_init_data init;
+ struct mg_error_data error;
+
+ memset(&init, 0, sizeof(init));
+ memset(&error, 0, sizeof(error));
+ error.text_buffer_size = error_buffer_size;
+ error.text = error_buffer;
+ return mg_connect_client_impl(client_options, 1, &init, &error);
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_client(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size)
+{
+ struct mg_client_options opts;
+ struct mg_init_data init;
+ struct mg_error_data error;
+
+ memset(&init, 0, sizeof(init));
+
+ memset(&error, 0, sizeof(error));
+ error.text_buffer_size = error_buffer_size;
+ error.text = error_buffer;
+
+ memset(&opts, 0, sizeof(opts));
+ opts.host = host;
+ opts.port = port;
+ if (use_ssl) {
+ opts.host_name = host;
+ }
+
+ return mg_connect_client_impl(&opts, use_ssl, &init, &error);
+}
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+CIVETWEB_API struct mg_connection *
+mg_connect_client2(const char *host,
+ const char *protocol,
+ int port,
+ const char *path,
+ struct mg_init_data *init,
+ struct mg_error_data *error)
+{
+ (void)path;
+
+ int is_ssl, is_ws;
+ /* void *user_data = (init != NULL) ? init->user_data : NULL; -- TODO */
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OK;
+ error->code_sub = 0;
+ if (error->text_buffer_size > 0) {
+ *error->text = 0;
+ }
+ }
+
+ if ((host == NULL) || (protocol == NULL)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Invalid parameters");
+ }
+ return NULL;
+ }
+
+ /* check all known protocols */
+ if (!mg_strcasecmp(protocol, "http")) {
+ is_ssl = 0;
+ is_ws = 0;
+ } else if (!mg_strcasecmp(protocol, "https")) {
+ is_ssl = 1;
+ is_ws = 0;
+#if defined(USE_WEBSOCKET)
+ } else if (!mg_strcasecmp(protocol, "ws")) {
+ is_ssl = 0;
+ is_ws = 1;
+ } else if (!mg_strcasecmp(protocol, "wss")) {
+ is_ssl = 1;
+ is_ws = 1;
+#endif
+ } else {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Protocol %s not supported",
+ protocol);
+ }
+ return NULL;
+ }
+
+ /* TODO: The current implementation here just calls the old
+ * implementations, without using any new options. This is just a first
+ * step to test the new interfaces. */
+#if defined(USE_WEBSOCKET)
+ if (is_ws) {
+ /* TODO: implement all options */
+ return mg_connect_websocket_client(
+ host,
+ port,
+ is_ssl,
+ ((error != NULL) ? error->text : NULL),
+ ((error != NULL) ? error->text_buffer_size : 0),
+ (path ? path : ""),
+ NULL /* TODO: origin */,
+ experimental_websocket_client_data_wrapper,
+ experimental_websocket_client_close_wrapper,
+ (void *)init->callbacks);
+ }
+#else
+ (void)is_ws;
+#endif
+
+ /* TODO: all additional options */
+ struct mg_client_options opts;
+
+ memset(&opts, 0, sizeof(opts));
+ opts.host = host;
+ opts.port = port;
+
+ return mg_connect_client_impl(&opts, is_ssl, init, error);
+}
+#endif
+
+
+static const struct {
+ const char *proto;
+ size_t proto_len;
+ unsigned default_port;
+} abs_uri_protocols[] = {{"http://", 7, 80},
+ {"https://", 8, 443},
+ {"ws://", 5, 80},
+ {"wss://", 6, 443},
+ {NULL, 0, 0}};
+
+
+/* Check if the uri is valid.
+ * return 0 for invalid uri,
+ * return 1 for *,
+ * return 2 for relative uri,
+ * return 3 for absolute uri without port,
+ * return 4 for absolute uri with port */
+static int
+get_uri_type(const char *uri)
+{
+ int i;
+ const char *hostend, *portbegin;
+ char *portend;
+ unsigned long port;
+
+ /* According to the HTTP standard
+ * http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2
+ * URI can be an asterisk (*) or should start with slash (relative uri),
+ * or it should start with the protocol (absolute uri). */
+ if ((uri[0] == '*') && (uri[1] == '\0')) {
+ /* asterisk */
+ return 1;
+ }
+
+ /* Valid URIs according to RFC 3986
+ * (https://www.ietf.org/rfc/rfc3986.txt)
+ * must only contain reserved characters :/?#[]@!$&'()*+,;=
+ * and unreserved characters A-Z a-z 0-9 and -._~
+ * and % encoded symbols.
+ */
+ for (i = 0; uri[i] != 0; i++) {
+ /* Check for CRLF injection attempts */
+ if (uri[i] == '%') {
+ if (uri[i + 1] == '0' && (uri[i + 2] == 'd' || uri[i + 2] == 'D')) {
+ /* Found %0d (CR) */
+ DEBUG_TRACE("CRLF injection attempt detected: %s\r\n", uri);
+ return 0;
+ }
+ if (uri[i + 1] == '0' && (uri[i + 2] == 'a' || uri[i + 2] == 'A')) {
+ /* Found %0a (LF) */
+ DEBUG_TRACE("CRLF injection attempt detected: %s\r\n", uri);
+ return 0;
+ }
+ }
+ if ((unsigned char)uri[i] < 33) {
+ /* control characters and spaces are invalid */
+ return 0;
+ }
+ /* Allow everything else here (See #894) */
+ }
+
+ /* A relative uri starts with a / character */
+ if (uri[0] == '/') {
+ /* relative uri */
+ return 2;
+ }
+
+ /* It could be an absolute uri: */
+ /* This function only checks if the uri is valid, not if it is
+ * addressing the current server. So civetweb can also be used
+ * as a proxy server. */
+ for (i = 0; abs_uri_protocols[i].proto != NULL; i++) {
+ if (mg_strncasecmp(uri,
+ abs_uri_protocols[i].proto,
+ abs_uri_protocols[i].proto_len)
+ == 0) {
+
+ hostend = strchr(uri + abs_uri_protocols[i].proto_len, '/');
+ if (!hostend) {
+ return 0;
+ }
+ portbegin = strchr(uri + abs_uri_protocols[i].proto_len, ':');
+ if (!portbegin) {
+ return 3;
+ }
+
+ port = strtoul(portbegin + 1, &portend, 10);
+ if ((portend != hostend) || (port <= 0) || !is_valid_port(port)) {
+ return 0;
+ }
+
+ return 4;
+ }
+ }
+
+ return 0;
+}
+
+
+/* Return NULL or the relative uri at the current server */
+static const char *
+get_rel_url_at_current_server(const char *uri, const struct mg_connection *conn)
+{
+ const char *server_domain;
+ size_t server_domain_len;
+ size_t request_domain_len = 0;
+ unsigned long port = 0;
+ int i, auth_domain_check_enabled;
+ const char *hostbegin = NULL;
+ const char *hostend = NULL;
+ const char *portbegin;
+ char *portend;
+
+ auth_domain_check_enabled =
+ !mg_strcasecmp(conn->dom_ctx->config[ENABLE_AUTH_DOMAIN_CHECK], "yes");
+
+ /* DNS is case insensitive, so use case insensitive string compare here
+ */
+ for (i = 0; abs_uri_protocols[i].proto != NULL; i++) {
+ if (mg_strncasecmp(uri,
+ abs_uri_protocols[i].proto,
+ abs_uri_protocols[i].proto_len)
+ == 0) {
+
+ hostbegin = uri + abs_uri_protocols[i].proto_len;
+ hostend = strchr(hostbegin, '/');
+ if (!hostend) {
+ return 0;
+ }
+ portbegin = strchr(hostbegin, ':');
+ if ((!portbegin) || (portbegin > hostend)) {
+ port = abs_uri_protocols[i].default_port;
+ request_domain_len = (size_t)(hostend - hostbegin);
+ } else {
+ port = strtoul(portbegin + 1, &portend, 10);
+ if ((portend != hostend) || (port <= 0)
+ || !is_valid_port(port)) {
+ return 0;
+ }
+ request_domain_len = (size_t)(portbegin - hostbegin);
+ }
+ /* protocol found, port set */
+ break;
+ }
+ }
+
+ if (!port) {
+ /* port remains 0 if the protocol is not found */
+ return 0;
+ }
+
+ /* Check if the request is directed to a different server. */
+ /* First check if the port is the same. */
+ if (ntohs(USA_IN_PORT_UNSAFE(&conn->client.lsa)) != port) {
+ /* Request is directed to a different port */
+ return 0;
+ }
+
+ /* Finally check if the server corresponds to the authentication
+ * domain of the server (the server domain).
+ * Allow full matches (like http://mydomain.com/path/file.ext), and
+ * allow subdomain matches (like http://www.mydomain.com/path/file.ext),
+ * but do not allow substrings (like
+ * http://notmydomain.com/path/file.ext
+ * or http://mydomain.com.fake/path/file.ext).
+ */
+ if (auth_domain_check_enabled) {
+ server_domain = conn->dom_ctx->config[AUTHENTICATION_DOMAIN];
+ server_domain_len = strlen(server_domain);
+ if ((server_domain_len == 0) || (hostbegin == NULL)) {
+ return 0;
+ }
+ if ((request_domain_len == server_domain_len)
+ && (!memcmp(server_domain, hostbegin, server_domain_len))) {
+ /* Request is directed to this server - full name match. */
+ } else {
+ if (request_domain_len < (server_domain_len + 2)) {
+ /* Request is directed to another server: The server name
+ * is longer than the request name.
+ * Drop this case here to avoid overflows in the
+ * following checks. */
+ return 0;
+ }
+ if (hostbegin[request_domain_len - server_domain_len - 1] != '.') {
+ /* Request is directed to another server: It could be a
+ * substring
+ * like notmyserver.com */
+ return 0;
+ }
+ if (0
+ != memcmp(server_domain,
+ hostbegin + request_domain_len - server_domain_len,
+ server_domain_len)) {
+ /* Request is directed to another server:
+ * The server name is different. */
+ return 0;
+ }
+ }
+ }
+
+ return hostend;
+}
+
+
+static int
+get_message(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err)
+{
+ if (ebuf_len > 0) {
+ ebuf[0] = '\0';
+ }
+ *err = 0;
+
+ reset_per_request_attributes(conn);
+
+ if (!conn) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Internal error");
+ *err = 500;
+ return 0;
+ }
+
+ /* Set the time the request was received. This value should be used for
+ * timeouts. */
+ clock_gettime(CLOCK_MONOTONIC, &(conn->req_time));
+
+ conn->request_len =
+ read_message(NULL, conn, conn->buf, conn->buf_size, &conn->data_len);
+ DEBUG_ASSERT(conn->request_len < 0 || conn->data_len >= conn->request_len);
+ if ((conn->request_len >= 0) && (conn->data_len < conn->request_len)) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Invalid message size");
+ *err = 500;
+ return 0;
+ }
+
+ if ((conn->request_len == 0) && (conn->data_len == conn->buf_size)) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Message too large");
+ *err = 413;
+ return 0;
+ }
+
+ if (conn->request_len <= 0) {
+ if (conn->data_len > 0) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ conn->request_len == -3 ? "Request timeout"
+ : "Malformed message");
+ *err = 400;
+ } else {
+ /* Server did not recv anything -> just close the connection */
+ conn->must_close = 1;
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "No data received");
+ *err = 0;
+ }
+ return 0;
+ }
+ return 1;
+}
+
+
+static int
+get_request(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err)
+{
+ const char *cl;
+
+ conn->connection_type =
+ CONNECTION_TYPE_REQUEST; /* request (valid of not) */
+
+ if (!get_message(conn, ebuf, ebuf_len, err)) {
+ return 0;
+ }
+
+ if (parse_http_request(conn->buf, conn->buf_size, &conn->request_info)
+ <= 0) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request");
+ *err = 400;
+ return 0;
+ }
+
+ /* Message is a valid request */
+
+ if (!switch_domain_context(conn)) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request: Host mismatch");
+ *err = 400;
+ return 0;
+ }
+
+#if USE_ZLIB
+ if (((cl = get_header(conn->request_info.http_headers,
+ conn->request_info.num_headers,
+ "Accept-Encoding"))
+ != NULL)
+ && strstr(cl, "gzip")) {
+ conn->accept_gzip = 1;
+ }
+#endif
+ if (((cl = get_header(conn->request_info.http_headers,
+ conn->request_info.num_headers,
+ "Transfer-Encoding"))
+ != NULL)
+ && mg_strcasecmp(cl, "identity")) {
+ if (mg_strcasecmp(cl, "chunked")) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request");
+ *err = 400;
+ return 0;
+ }
+ conn->is_chunked = 1;
+ conn->content_len = 0; /* not yet read */
+ } else if ((cl = get_header(conn->request_info.http_headers,
+ conn->request_info.num_headers,
+ "Content-Length"))
+ != NULL) {
+ /* Request has content length set */
+ char *endptr = NULL;
+ conn->content_len = strtoll(cl, &endptr, 10);
+ if ((endptr == cl) || (conn->content_len < 0)) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request");
+ *err = 411;
+ return 0;
+ }
+ /* Publish the content length back to the request info. */
+ conn->request_info.content_length = conn->content_len;
+ } else {
+ /* There is no exception, see RFC7230. */
+ conn->content_len = 0;
+ }
+
+ return 1;
+}
+
+
+/* conn is assumed to be valid in this internal function */
+static int
+get_response(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err)
+{
+ const char *cl;
+
+ conn->connection_type =
+ CONNECTION_TYPE_RESPONSE; /* response (valid or not) */
+
+ if (!get_message(conn, ebuf, ebuf_len, err)) {
+ return 0;
+ }
+
+ if (parse_http_response(conn->buf, conn->buf_size, &conn->response_info)
+ <= 0) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad response");
+ *err = 400;
+ return 0;
+ }
+
+ /* Message is a valid response */
+
+ if (((cl = get_header(conn->response_info.http_headers,
+ conn->response_info.num_headers,
+ "Transfer-Encoding"))
+ != NULL)
+ && mg_strcasecmp(cl, "identity")) {
+ if (mg_strcasecmp(cl, "chunked")) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request");
+ *err = 400;
+ return 0;
+ }
+ conn->is_chunked = 1;
+ conn->content_len = 0; /* not yet read */
+ } else if ((cl = get_header(conn->response_info.http_headers,
+ conn->response_info.num_headers,
+ "Content-Length"))
+ != NULL) {
+ char *endptr = NULL;
+ conn->content_len = strtoll(cl, &endptr, 10);
+ if ((endptr == cl) || (conn->content_len < 0)) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Bad request");
+ *err = 411;
+ return 0;
+ }
+ /* Publish the content length back to the response info. */
+ conn->response_info.content_length = conn->content_len;
+
+ /* TODO: check if it is still used in response_info */
+ conn->request_info.content_length = conn->content_len;
+
+ /* TODO: we should also consider HEAD method */
+ if (conn->response_info.status_code == 304) {
+ conn->content_len = 0;
+ }
+ } else {
+ /* TODO: we should also consider HEAD method */
+ if (((conn->response_info.status_code >= 100)
+ && (conn->response_info.status_code <= 199))
+ || (conn->response_info.status_code == 204)
+ || (conn->response_info.status_code == 304)) {
+ conn->content_len = 0;
+ } else {
+ conn->content_len = -1; /* unknown content length */
+ }
+ }
+
+ return 1;
+}
+
+
+CIVETWEB_API int
+mg_get_response(struct mg_connection *conn,
+ char *ebuf,
+ size_t ebuf_len,
+ int timeout)
+{
+ int err, ret;
+ char txt[32]; /* will not overflow */
+ char *save_timeout;
+ char *new_timeout;
+
+ if (ebuf_len > 0) {
+ ebuf[0] = '\0';
+ }
+
+ if (!conn) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Parameter error");
+ return -1;
+ }
+
+ /* Reset the previous responses */
+ conn->data_len = 0;
+
+ /* Implementation of API function for HTTP clients */
+ save_timeout = conn->dom_ctx->config[REQUEST_TIMEOUT];
+
+ if (timeout >= 0) {
+ mg_snprintf(conn, NULL, txt, sizeof(txt), "%i", timeout);
+ new_timeout = txt;
+ } else {
+ new_timeout = NULL;
+ }
+
+ conn->dom_ctx->config[REQUEST_TIMEOUT] = new_timeout;
+ ret = get_response(conn, ebuf, ebuf_len, &err);
+ conn->dom_ctx->config[REQUEST_TIMEOUT] = save_timeout;
+
+ /* TODO: here, the URI is the http response code */
+ conn->request_info.local_uri_raw = conn->request_info.request_uri;
+ conn->request_info.local_uri = conn->request_info.local_uri_raw;
+
+ /* TODO (mid): Define proper return values - maybe return length?
+ * For the first test use <0 for error and >0 for OK */
+ return (ret == 0) ? -1 : +1;
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_download(const char *host,
+ int port,
+ int use_ssl,
+ char *ebuf,
+ size_t ebuf_len,
+ const char *fmt,
+ ...)
+{
+ struct mg_connection *conn;
+ va_list ap;
+ int i;
+ int reqerr;
+
+ if (ebuf_len > 0) {
+ ebuf[0] = '\0';
+ }
+
+ va_start(ap, fmt);
+
+ /* open a connection */
+ conn = mg_connect_client(host, port, use_ssl, ebuf, ebuf_len);
+
+ if (conn != NULL) {
+ i = mg_vprintf(conn, fmt, ap);
+ if (i <= 0) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ ebuf_len,
+ "%s",
+ "Error sending request");
+ } else {
+ /* make sure the buffer is clear */
+ conn->data_len = 0;
+ get_response(conn, ebuf, ebuf_len, &reqerr);
+
+ /* TODO: here, the URI is the http response code */
+ conn->request_info.local_uri = conn->request_info.request_uri;
+ }
+ }
+
+ /* if an error occurred, close the connection */
+ if ((ebuf[0] != '\0') && (conn != NULL)) {
+ mg_close_connection(conn);
+ conn = NULL;
+ }
+
+ va_end(ap);
+ return conn;
+}
+
+
+struct websocket_client_thread_data {
+ struct mg_connection *conn;
+ mg_websocket_data_handler data_handler;
+ mg_websocket_close_handler close_handler;
+ void *callback_data;
+};
+
+
+#if defined(USE_WEBSOCKET)
+#if defined(_WIN32)
+static unsigned __stdcall websocket_client_thread(void *data)
+#else
+static void *
+websocket_client_thread(void *data)
+#endif
+{
+ struct websocket_client_thread_data *cdata =
+ (struct websocket_client_thread_data *)data;
+
+ void *user_thread_ptr = NULL;
+
+#if !defined(_WIN32) && !defined(__ZEPHYR__)
+ struct sigaction sa;
+
+ /* Ignore SIGPIPE */
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &sa, NULL);
+#endif
+
+ mg_set_thread_name("ws-clnt");
+
+ if (cdata->conn->phys_ctx) {
+ if (cdata->conn->phys_ctx->callbacks.init_thread) {
+ /* 3 indicates a websocket client thread */
+ /* TODO: check if conn->phys_ctx can be set */
+ user_thread_ptr = cdata->conn->phys_ctx->callbacks.init_thread(
+ cdata->conn->phys_ctx, 3);
+ }
+ }
+
+ read_websocket(cdata->conn, cdata->data_handler, cdata->callback_data);
+
+ DEBUG_TRACE("%s", "Websocket client thread exited\n");
+
+ if (cdata->close_handler != NULL) {
+ cdata->close_handler(cdata->conn, cdata->callback_data);
+ }
+
+ /* The websocket_client context has only this thread. If it runs out,
+ set the stop_flag to 2 (= "stopped"). */
+ STOP_FLAG_ASSIGN(&cdata->conn->phys_ctx->stop_flag, 2);
+
+ if (cdata->conn->phys_ctx->callbacks.exit_thread) {
+ cdata->conn->phys_ctx->callbacks.exit_thread(cdata->conn->phys_ctx,
+ 3,
+ user_thread_ptr);
+ }
+
+ mg_free((void *)cdata);
+
+#if defined(_WIN32)
+ return 0;
+#else
+ return NULL;
+#endif
+}
+#endif
+
+
+#if defined(USE_WEBSOCKET)
+static void
+generate_websocket_magic(char *magic25)
+{
+ uint64_t rnd;
+ unsigned char buffer[2 * sizeof(rnd)];
+
+ rnd = get_random();
+ memcpy(buffer, &rnd, sizeof(rnd));
+ rnd = get_random();
+ memcpy(buffer + sizeof(rnd), &rnd, sizeof(rnd));
+
+ size_t dst_len = 24 + 1;
+ mg_base64_encode(buffer, sizeof(buffer), magic25, &dst_len);
+}
+#endif
+
+
+static struct mg_connection *
+mg_connect_websocket_client_impl(const struct mg_client_options *client_options,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ const char *extensions,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data)
+{
+ struct mg_connection *conn = NULL;
+
+#if defined(USE_WEBSOCKET)
+ struct websocket_client_thread_data *thread_data;
+ char magic[32];
+ generate_websocket_magic(magic);
+
+ const char *host = client_options->host;
+ int i;
+
+ struct mg_init_data init;
+ struct mg_error_data error;
+
+ memset(&init, 0, sizeof(init));
+ memset(&error, 0, sizeof(error));
+ error.text_buffer_size = error_buffer_size;
+ error.text = error_buffer;
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-nonliteral"
+#endif
+
+ /* Establish the client connection and request upgrade */
+ conn = mg_connect_client_impl(client_options, use_ssl, &init, &error);
+
+ /* Connection object will be null if something goes wrong */
+ if (conn == NULL) {
+ /* error_buffer should be already filled ... */
+ if (!error_buffer[0]) {
+ /* ... if not add an error message */
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ error_buffer,
+ error_buffer_size,
+ "Unexpected error");
+ }
+ return NULL;
+ }
+
+ if (origin != NULL) {
+ if (extensions != NULL) {
+ i = mg_printf(conn,
+ "GET %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "Upgrade: websocket\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Key: %s\r\n"
+ "Sec-WebSocket-Version: 13\r\n"
+ "Sec-WebSocket-Extensions: %s\r\n"
+ "Origin: %s\r\n"
+ "\r\n",
+ path,
+ host,
+ magic,
+ extensions,
+ origin);
+ } else {
+ i = mg_printf(conn,
+ "GET %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "Upgrade: websocket\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Key: %s\r\n"
+ "Sec-WebSocket-Version: 13\r\n"
+ "Origin: %s\r\n"
+ "\r\n",
+ path,
+ host,
+ magic,
+ origin);
+ }
+ } else {
+
+ if (extensions != NULL) {
+ i = mg_printf(conn,
+ "GET %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "Upgrade: websocket\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Key: %s\r\n"
+ "Sec-WebSocket-Version: 13\r\n"
+ "Sec-WebSocket-Extensions: %s\r\n"
+ "\r\n",
+ path,
+ host,
+ magic,
+ extensions);
+ } else {
+ i = mg_printf(conn,
+ "GET %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "Upgrade: websocket\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Key: %s\r\n"
+ "Sec-WebSocket-Version: 13\r\n"
+ "\r\n",
+ path,
+ host,
+ magic);
+ }
+ }
+ if (i <= 0) {
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ error_buffer,
+ error_buffer_size,
+ "%s",
+ "Error sending request");
+ mg_close_connection(conn);
+ return NULL;
+ }
+
+ conn->data_len = 0;
+ if (!get_response(conn, error_buffer, error_buffer_size, &i)) {
+ mg_close_connection(conn);
+ return NULL;
+ }
+ conn->request_info.local_uri_raw = conn->request_info.request_uri;
+ conn->request_info.local_uri = conn->request_info.local_uri_raw;
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+ if (conn->response_info.status_code != 101) {
+ /* We sent an "upgrade" request. For a correct websocket
+ * protocol handshake, we expect a "101 Continue" response.
+ * Otherwise it is a protocol violation. Maybe the HTTP
+ * Server does not know websockets. */
+ if (!*error_buffer) {
+ /* set an error, if not yet set */
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ error_buffer,
+ error_buffer_size,
+ "Unexpected server reply");
+ }
+
+ DEBUG_TRACE("Websocket client connect error: %s\r\n", error_buffer);
+ mg_close_connection(conn);
+ return NULL;
+ }
+
+ thread_data = (struct websocket_client_thread_data *)mg_calloc_ctx(
+ 1, sizeof(struct websocket_client_thread_data), conn->phys_ctx);
+ if (!thread_data) {
+ DEBUG_TRACE("%s\r\n", "Out of memory");
+ mg_close_connection(conn);
+ return NULL;
+ }
+
+ thread_data->conn = conn;
+ thread_data->data_handler = data_func;
+ thread_data->close_handler = close_func;
+ thread_data->callback_data = user_data;
+
+ conn->phys_ctx->worker_threadids =
+ (pthread_t *)mg_calloc_ctx(1, sizeof(pthread_t), conn->phys_ctx);
+ if (!conn->phys_ctx->worker_threadids) {
+ DEBUG_TRACE("%s\r\n", "Out of memory");
+ mg_free(thread_data);
+ mg_close_connection(conn);
+ return NULL;
+ }
+
+ /* Now upgrade to ws/wss client context */
+ conn->phys_ctx->user_data = user_data;
+ conn->phys_ctx->context_type = CONTEXT_WS_CLIENT;
+ conn->phys_ctx->cfg_max_worker_threads = 1; /* one worker thread */
+ conn->phys_ctx->spawned_worker_threads = 1; /* one worker thread */
+
+ /* Start a thread to read the websocket client connection
+ * This thread will automatically stop when mg_disconnect is
+ * called on the client connection */
+ if (mg_start_thread_with_id(websocket_client_thread,
+ thread_data,
+ conn->phys_ctx->worker_threadids)
+ != 0) {
+ conn->phys_ctx->spawned_worker_threads = 0;
+ mg_free(thread_data);
+ mg_close_connection(conn);
+ conn = NULL;
+ DEBUG_TRACE("%s",
+ "Websocket client connect thread could not be started\r\n");
+ }
+
+#else
+ /* Appease "unused parameter" warnings */
+ (void)client_options;
+ (void)use_ssl;
+ (void)error_buffer;
+ (void)error_buffer_size;
+ (void)path;
+ (void)origin;
+ (void)extensions;
+ (void)user_data;
+ (void)data_func;
+ (void)close_func;
+#endif
+
+ return conn;
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data)
+{
+ struct mg_client_options client_options;
+ memset(&client_options, 0, sizeof(client_options));
+ client_options.host = host;
+ client_options.port = port;
+ if (use_ssl) {
+ client_options.host_name = host;
+ }
+
+ return mg_connect_websocket_client_impl(&client_options,
+ use_ssl,
+ error_buffer,
+ error_buffer_size,
+ path,
+ origin,
+ NULL,
+ data_func,
+ close_func,
+ user_data);
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client_secure(
+ const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data)
+{
+ if (!client_options) {
+ return NULL;
+ }
+ return mg_connect_websocket_client_impl(client_options,
+ 1,
+ error_buffer,
+ error_buffer_size,
+ path,
+ origin,
+ NULL,
+ data_func,
+ close_func,
+ user_data);
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client_extensions(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ const char *extensions,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data)
+{
+ struct mg_client_options client_options;
+ memset(&client_options, 0, sizeof(client_options));
+ client_options.host = host;
+ client_options.port = port;
+
+ return mg_connect_websocket_client_impl(&client_options,
+ use_ssl,
+ error_buffer,
+ error_buffer_size,
+ path,
+ origin,
+ extensions,
+ data_func,
+ close_func,
+ user_data);
+}
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client_secure_extensions(
+ const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ const char *extensions,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data)
+{
+ if (!client_options) {
+ return NULL;
+ }
+ return mg_connect_websocket_client_impl(client_options,
+ 1,
+ error_buffer,
+ error_buffer_size,
+ path,
+ origin,
+ extensions,
+ data_func,
+ close_func,
+ user_data);
+}
+
+
+/* Prepare connection data structure */
+static void
+init_connection(struct mg_connection *conn)
+{
+ /* Is keep alive allowed by the server */
+ int keep_alive_enabled =
+ !mg_strcasecmp(conn->dom_ctx->config[ENABLE_KEEP_ALIVE], "yes");
+
+ if (!keep_alive_enabled) {
+ conn->must_close = 1;
+ }
+
+ /* Important: on new connection, reset the receiving buffer. Credit
+ * goes to crule42. */
+ conn->data_len = 0;
+ conn->handled_requests = 0;
+ conn->connection_type = CONNECTION_TYPE_INVALID;
+ conn->request_info.acceptedWebSocketSubprotocol = NULL;
+ mg_set_user_connection_data(conn, NULL);
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 2; /* init */
+#endif
+
+ /* call the init_connection callback if assigned */
+ if (conn->phys_ctx->callbacks.init_connection != NULL) {
+ if (conn->phys_ctx->context_type == CONTEXT_SERVER) {
+ void *conn_data = NULL;
+ conn->phys_ctx->callbacks.init_connection(conn, &conn_data);
+ mg_set_user_connection_data(conn, conn_data);
+ }
+ }
+}
+
+
+/* Process a connection - may handle multiple requests
+ * using the same connection.
+ * Must be called with a valid connection (conn and
+ * conn->phys_ctx must be valid).
+ */
+static void
+process_new_connection(struct mg_connection *conn)
+{
+ struct mg_request_info *ri = &conn->request_info;
+ int keep_alive, discard_len;
+ char ebuf[100];
+ const char *hostend;
+ int reqerr, uri_type;
+
+#if defined(USE_SERVER_STATS)
+ ptrdiff_t mcon = mg_atomic_inc(&(conn->phys_ctx->active_connections));
+ mg_atomic_add(&(conn->phys_ctx->total_connections), 1);
+ mg_atomic_max(&(conn->phys_ctx->max_active_connections), mcon);
+#endif
+
+ DEBUG_TRACE("Start processing connection from %s",
+ conn->request_info.remote_addr);
+
+ /* Loop over multiple requests sent using the same connection
+ * (while "keep alive"). */
+ do {
+ DEBUG_TRACE("calling get_request (%i times for this connection)",
+ conn->handled_requests + 1);
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 3; /* ready */
+#endif
+
+ if (!get_request(conn, ebuf, sizeof(ebuf), &reqerr)) {
+ /* The request sent by the client could not be understood by
+ * the server, or it was incomplete or a timeout. Send an
+ * error message and close the connection. */
+ if (reqerr > 0) {
+ DEBUG_ASSERT(ebuf[0] != '\0');
+ mg_send_http_error(conn, reqerr, "%s", ebuf);
+ }
+
+ } else if (strcmp(ri->http_version, "1.0")
+ && strcmp(ri->http_version, "1.1")) {
+ /* HTTP/2 is not allowed here */
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ sizeof(ebuf),
+ "Bad HTTP version: [%s]",
+ ri->http_version);
+ mg_send_http_error(conn, 505, "%s", ebuf);
+ }
+
+ if (ebuf[0] == '\0') {
+ uri_type = get_uri_type(conn->request_info.request_uri);
+ switch (uri_type) {
+ case 1:
+ /* Asterisk */
+ conn->request_info.local_uri_raw = 0;
+ /* TODO: Deal with '*'. */
+ break;
+ case 2:
+ /* relative uri */
+ conn->request_info.local_uri_raw =
+ conn->request_info.request_uri;
+ break;
+ case 3:
+ case 4:
+ /* absolute uri (with/without port) */
+ hostend = get_rel_url_at_current_server(
+ conn->request_info.request_uri, conn);
+ if (hostend) {
+ conn->request_info.local_uri_raw = hostend;
+ } else {
+ conn->request_info.local_uri_raw = NULL;
+ }
+ break;
+ default:
+ mg_snprintf(conn,
+ NULL, /* No truncation check for ebuf */
+ ebuf,
+ sizeof(ebuf),
+ "Invalid URI");
+ mg_send_http_error(conn, 400, "%s", ebuf);
+ conn->request_info.local_uri_raw = NULL;
+ break;
+ }
+ conn->request_info.local_uri =
+ (char *)conn->request_info.local_uri_raw;
+ }
+
+ if (ebuf[0] != '\0') {
+ conn->protocol_type = -1;
+
+ } else {
+ /* HTTP/1 allows protocol upgrade */
+ conn->protocol_type = should_switch_to_protocol(conn);
+
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP2) {
+ /* This will occur, if a HTTP/1.1 request should be upgraded
+ * to HTTP/2 - but not if HTTP/2 is negotiated using ALPN.
+ * Since most (all?) major browsers only support HTTP/2 using
+ * ALPN, this is hard to test and very low priority.
+ * Deactivate it (at least for now).
+ */
+ conn->protocol_type = PROTOCOL_TYPE_HTTP1;
+ }
+ }
+
+ DEBUG_TRACE("http: %s, error: %s",
+ (ri->http_version ? ri->http_version : "none"),
+ (ebuf[0] ? ebuf : "none"));
+
+ if (ebuf[0] == '\0') {
+ if (conn->request_info.local_uri) {
+
+ /* handle request to local server */
+ handle_request_stat_log(conn);
+
+ } else {
+ /* TODO: handle non-local request (PROXY) */
+ conn->must_close = 1;
+ }
+ } else {
+ conn->must_close = 1;
+ }
+
+ /* Response complete. Free header buffer */
+ free_buffered_response_header_list(conn);
+
+ if (ri->remote_user != NULL) {
+ mg_free((void *)ri->remote_user);
+ /* Important! When having connections with and without auth
+ * would cause double free and then crash */
+ ri->remote_user = NULL;
+ }
+
+ /* NOTE(lsm): order is important here. should_keep_alive() call
+ * is using parsed request, which will be invalid after
+ * memmove's below.
+ * Therefore, memorize should_keep_alive() result now for later
+ * use in loop exit condition. */
+ /* Enable it only if this request is completely discardable. */
+ keep_alive = STOP_FLAG_IS_ZERO(&conn->phys_ctx->stop_flag)
+ && should_keep_alive(conn) && (conn->content_len >= 0)
+ && (conn->request_len > 0)
+ && ((conn->is_chunked == 4)
+ || (!conn->is_chunked
+ && ((conn->consumed_content == conn->content_len)
+ || ((conn->request_len + conn->content_len)
+ <= conn->data_len))))
+ && (conn->protocol_type == PROTOCOL_TYPE_HTTP1);
+
+ if (keep_alive) {
+ /* Discard all buffered data for this request */
+ discard_len =
+ ((conn->request_len + conn->content_len) < conn->data_len)
+ ? (int)(conn->request_len + conn->content_len)
+ : conn->data_len;
+ conn->data_len -= discard_len;
+
+ if (conn->data_len > 0) {
+ DEBUG_TRACE("discard_len = %d", discard_len);
+ memmove(conn->buf,
+ conn->buf + discard_len,
+ (size_t)conn->data_len);
+ }
+ }
+
+ DEBUG_ASSERT(conn->data_len >= 0);
+ DEBUG_ASSERT(conn->data_len <= conn->buf_size);
+
+ if ((conn->data_len < 0) || (conn->data_len > conn->buf_size)) {
+ DEBUG_TRACE("internal error: data_len = %li, buf_size = %li",
+ (long int)conn->data_len,
+ (long int)conn->buf_size);
+ break;
+ }
+ conn->handled_requests++;
+ } while (keep_alive);
+
+ DEBUG_TRACE("Done processing connection from %s (%f sec)",
+ conn->request_info.remote_addr,
+ difftime(time(NULL), conn->conn_birth_time));
+
+ close_connection(conn);
+
+#if defined(USE_SERVER_STATS)
+ mg_atomic_add(&(conn->phys_ctx->total_requests), conn->handled_requests);
+ mg_atomic_dec(&(conn->phys_ctx->active_connections));
+#endif
+}
+
+static int
+mg_start_worker_thread(struct mg_context *ctx,
+ int only_if_no_idle_threads); /* forward declaration */
+
+#if defined(ALTERNATIVE_QUEUE)
+
+static void
+produce_socket(struct mg_context *ctx, const struct socket *sp)
+{
+ unsigned int i;
+
+ (void)mg_start_worker_thread(
+ ctx, 1); /* will start a worker-thread only if there aren't currently
+ any idle worker-threads */
+
+ while (!ctx->stop_flag) {
+ for (i = 0; i < ctx->spawned_worker_threads; i++) {
+ /* find a free worker slot and signal it */
+ if (ctx->client_socks[i].in_use == 2) {
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ if ((ctx->client_socks[i].in_use == 2) && !ctx->stop_flag) {
+ ctx->client_socks[i] = *sp;
+ ctx->client_socks[i].in_use = 1;
+ /* socket has been moved to the consumer */
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ (void)event_signal(ctx->client_wait_events[i]);
+ return;
+ }
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ }
+ }
+ /* queue is full */
+ mg_sleep(1);
+ }
+ /* must consume */
+ set_blocking_mode(sp->sock);
+ closesocket(sp->sock);
+}
+
+
+static int
+consume_socket(struct mg_context *ctx,
+ struct socket *sp,
+ int thread_index,
+ int counter_was_preincremented)
+{
+ DEBUG_TRACE("%s", "going idle");
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ if (counter_was_preincremented
+ == 0) { /* first call only: the master-thread pre-incremented this
+ before he spawned us */
+ ctx->idle_worker_thread_count++;
+ }
+ ctx->client_socks[thread_index].in_use = 2;
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+
+ event_wait(ctx->client_wait_events[thread_index]);
+
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ *sp = ctx->client_socks[thread_index];
+ if (ctx->stop_flag) {
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ if (sp->in_use == 1) {
+ /* must consume */
+ set_blocking_mode(sp->sock);
+ closesocket(sp->sock);
+ }
+ return 0;
+ }
+ ctx->idle_worker_thread_count--;
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ if (sp->in_use == 1) {
+ DEBUG_TRACE("grabbed socket %d, going busy", sp->sock);
+ return 1;
+ }
+ /* must not reach here */
+ DEBUG_ASSERT(0);
+ return 0;
+}
+
+#else /* ALTERNATIVE_QUEUE */
+
+/* Worker threads take accepted socket from the queue */
+static int
+consume_socket(struct mg_context *ctx,
+ struct socket *sp,
+ int thread_index,
+ int counter_was_preincremented)
+{
+ (void)thread_index;
+
+ DEBUG_TRACE("%s", "going idle");
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ if (counter_was_preincremented
+ == 0) { /* first call only: the master-thread pre-incremented this
+ before he spawned us */
+ ctx->idle_worker_thread_count++;
+ }
+
+ /* If the queue is empty, wait. We're idle at this point. */
+ while ((ctx->sq_head == ctx->sq_tail)
+ && (STOP_FLAG_IS_ZERO(&ctx->stop_flag))) {
+ pthread_cond_wait(&ctx->sq_full, &ctx->thread_mutex);
+ }
+
+ /* If we're stopping, sq_head may be equal to sq_tail. */
+ if (ctx->sq_head > ctx->sq_tail) {
+ /* Copy socket from the queue and increment tail */
+ *sp = ctx->squeue[ctx->sq_tail % ctx->sq_size];
+ ctx->sq_tail++;
+
+ DEBUG_TRACE("grabbed socket %d, going busy", sp ? sp->sock : -1);
+
+ /* Wrap pointers if needed */
+ while (ctx->sq_tail > ctx->sq_size) {
+ ctx->sq_tail -= ctx->sq_size;
+ ctx->sq_head -= ctx->sq_size;
+ }
+ }
+
+ (void)pthread_cond_signal(&ctx->sq_empty);
+
+ ctx->idle_worker_thread_count--;
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+
+ return STOP_FLAG_IS_ZERO(&ctx->stop_flag);
+}
+
+
+/* Master thread adds accepted socket to a queue */
+static void
+produce_socket(struct mg_context *ctx, const struct socket *sp)
+{
+ int queue_filled;
+
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+
+ queue_filled = ctx->sq_head - ctx->sq_tail;
+
+ /* If the queue is full, wait */
+ while (STOP_FLAG_IS_ZERO(&ctx->stop_flag)
+ && (queue_filled >= ctx->sq_size)) {
+ ctx->sq_blocked = 1; /* Status information: All threads busy */
+#if defined(USE_SERVER_STATS)
+ if (queue_filled > ctx->sq_max_fill) {
+ ctx->sq_max_fill = queue_filled;
+ }
+#endif
+ (void)pthread_cond_wait(&ctx->sq_empty, &ctx->thread_mutex);
+ ctx->sq_blocked = 0; /* Not blocked now */
+ queue_filled = ctx->sq_head - ctx->sq_tail;
+ }
+
+ if (queue_filled < ctx->sq_size) {
+ /* Copy socket to the queue and increment head */
+ ctx->squeue[ctx->sq_head % ctx->sq_size] = *sp;
+ ctx->sq_head++;
+ DEBUG_TRACE("queued socket %d", sp ? sp->sock : -1);
+ }
+
+ queue_filled = ctx->sq_head - ctx->sq_tail;
+#if defined(USE_SERVER_STATS)
+ if (queue_filled > ctx->sq_max_fill) {
+ ctx->sq_max_fill = queue_filled;
+ }
+#endif
+
+ (void)pthread_cond_signal(&ctx->sq_full);
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+
+ (void)mg_start_worker_thread(
+ ctx, 1); /* will start a worker-thread only if there aren't currently
+ any idle worker-threads */
+}
+#endif /* ALTERNATIVE_QUEUE */
+
+
+static void
+worker_thread_run(struct mg_connection *conn)
+{
+ struct mg_context *ctx = conn->phys_ctx;
+ int thread_index;
+ struct mg_workerTLS tls;
+ int first_call_to_consume_socket = 1;
+
+ mg_set_thread_name("worker");
+
+ tls.is_master = 0;
+ tls.thread_idx = (unsigned)mg_atomic_inc(&thread_idx_max);
+#if defined(_WIN32)
+ tls.pthread_cond_helper_mutex = CreateEvent(NULL, FALSE, FALSE, NULL);
+#endif
+
+ /* Initialize thread local storage before calling any callback */
+ pthread_setspecific(sTlsKey, &tls);
+
+ /* Check if there is a user callback */
+ if (ctx->callbacks.init_thread) {
+ /* call init_thread for a worker thread (type 1), and store the
+ * return value */
+ tls.user_ptr = ctx->callbacks.init_thread(ctx, 1);
+ } else {
+ /* No callback: set user pointer to NULL */
+ tls.user_ptr = NULL;
+ }
+
+ /* Connection structure has been pre-allocated */
+ thread_index = (int)(conn - ctx->worker_connections);
+ if ((thread_index < 0)
+ || ((unsigned)thread_index >= (unsigned)ctx->cfg_max_worker_threads)) {
+ mg_cry_ctx_internal(ctx,
+ "Internal error: Invalid worker index %i",
+ thread_index);
+ return;
+ }
+
+ /* Request buffers are not pre-allocated. They are private to the
+ * request and do not contain any state information that might be
+ * of interest to anyone observing a server status. */
+ conn->buf = (char *)mg_malloc_ctx(ctx->max_request_size, conn->phys_ctx);
+ if (conn->buf == NULL) {
+ mg_cry_ctx_internal(
+ ctx,
+ "Out of memory: Cannot allocate buffer for worker %i",
+ thread_index);
+ return;
+ }
+ conn->buf_size = (int)ctx->max_request_size;
+
+ conn->dom_ctx = &(ctx->dd); /* Use default domain and default host */
+
+ conn->tls_user_ptr = tls.user_ptr; /* store ptr for quick access */
+
+ conn->request_info.user_data = ctx->user_data;
+ /* Allocate a mutex for this connection to allow communication both
+ * within the request handler and from elsewhere in the application
+ */
+ if (0 != pthread_mutex_init(&conn->mutex, &pthread_mutex_attr)) {
+ mg_free(conn->buf);
+ mg_cry_ctx_internal(ctx, "%s", "Cannot create mutex");
+ return;
+ }
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 1; /* not consumed */
+#endif
+
+ /* Call consume_socket() even when ctx->stop_flag > 0, to let it
+ * signal sq_empty condvar to wake up the master waiting in
+ * produce_socket() */
+ while (consume_socket(
+ ctx, &conn->client, thread_index, first_call_to_consume_socket)) {
+ first_call_to_consume_socket = 0;
+
+ /* New connections must start with new protocol negotiation */
+ tls.alpn_proto = NULL;
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_close_time = 0;
+#endif
+ conn->conn_birth_time = time(NULL);
+
+ /* Fill in IP, port info early so even if SSL setup below fails,
+ * error handler would have the corresponding info.
+ * Thanks to Johannes Winkelmann for the patch.
+ */
+ conn->request_info.remote_port =
+ ntohs(USA_IN_PORT_UNSAFE(&conn->client.rsa));
+
+ conn->request_info.server_port =
+ ntohs(USA_IN_PORT_UNSAFE(&conn->client.lsa));
+
+ sockaddr_to_string(conn->request_info.remote_addr,
+ sizeof(conn->request_info.remote_addr),
+ &conn->client.rsa);
+
+ sockaddr_to_string(conn->request_info.server_addr,
+ sizeof(conn->request_info.server_addr),
+ &conn->client.lsa);
+
+ DEBUG_TRACE("Incoming %sconnection from %s",
+ (conn->client.is_ssl ? "SSL " : ""),
+ conn->request_info.remote_addr);
+
+ conn->request_info.is_ssl = conn->client.is_ssl;
+
+ if (conn->client.is_ssl) {
+
+#if defined(USE_MBEDTLS)
+ /* HTTPS connection */
+ if (mbed_ssl_accept(&(conn->ssl),
+ conn->dom_ctx->ssl_ctx,
+ (int *)&(conn->client.sock),
+ conn->phys_ctx)
+ == 0) {
+ /* conn->dom_ctx is set in get_request */
+ /* process HTTPS connection */
+ init_connection(conn);
+ conn->connection_type = CONNECTION_TYPE_REQUEST;
+ conn->protocol_type = PROTOCOL_TYPE_HTTP1;
+ process_new_connection(conn);
+ } else {
+ /* make sure the connection is cleaned up on SSL failure */
+ close_connection(conn);
+ }
+
+#elif defined(USE_GNUTLS)
+ /* HTTPS connection */
+ if (gtls_ssl_accept(&(conn->ssl),
+ conn->dom_ctx->ssl_ctx,
+ conn->client.sock,
+ conn->phys_ctx)
+ == 0) {
+ /* conn->dom_ctx is set in get_request */
+ /* process HTTPS connection */
+ init_connection(conn);
+ conn->connection_type = CONNECTION_TYPE_REQUEST;
+ conn->protocol_type = PROTOCOL_TYPE_HTTP1;
+ process_new_connection(conn);
+ } else {
+ /* make sure the connection is cleaned up on SSL failure */
+ close_connection(conn);
+ }
+
+#elif !defined(NO_SSL)
+ /* HTTPS connection */
+ if (sslize(conn, SSL_accept, NULL)) {
+ /* conn->dom_ctx is set in get_request */
+
+ /* Get SSL client certificate information (if set) */
+ struct mg_client_cert client_cert;
+ if (ssl_get_client_cert_info(conn, &client_cert)) {
+ conn->request_info.client_cert = &client_cert;
+ }
+
+ /* process HTTPS connection */
+#if defined(USE_HTTP2)
+ if ((tls.alpn_proto != NULL)
+ && (!memcmp(tls.alpn_proto, "\x02h2", 3))) {
+ /* process HTTPS/2 connection */
+ init_connection(conn);
+ conn->connection_type = CONNECTION_TYPE_REQUEST;
+ conn->protocol_type = PROTOCOL_TYPE_HTTP2;
+ conn->content_len =
+ -1; /* content length is not predefined */
+ conn->is_chunked = 0; /* HTTP2 is never chunked */
+ process_new_http2_connection(conn);
+ } else
+#endif
+ {
+ /* process HTTPS/1.x or WEBSOCKET-SECURE connection */
+ init_connection(conn);
+ conn->connection_type = CONNECTION_TYPE_REQUEST;
+ /* Start with HTTP, WS will be an "upgrade" request later */
+ conn->protocol_type = PROTOCOL_TYPE_HTTP1;
+ process_new_connection(conn);
+ }
+
+ /* Free client certificate info */
+ if (conn->request_info.client_cert) {
+ mg_free((void *)(conn->request_info.client_cert->subject));
+ mg_free((void *)(conn->request_info.client_cert->issuer));
+ mg_free((void *)(conn->request_info.client_cert->serial));
+ mg_free((void *)(conn->request_info.client_cert->finger));
+ /* Free certificate memory */
+ X509_free(
+ (X509 *)conn->request_info.client_cert->peer_cert);
+ conn->request_info.client_cert->peer_cert = 0;
+ conn->request_info.client_cert->subject = 0;
+ conn->request_info.client_cert->issuer = 0;
+ conn->request_info.client_cert->serial = 0;
+ conn->request_info.client_cert->finger = 0;
+ conn->request_info.client_cert = 0;
+ }
+ } else {
+ /* make sure the connection is cleaned up on SSL failure */
+ close_connection(conn);
+ }
+#endif
+
+ } else {
+ /* process HTTP connection */
+ init_connection(conn);
+ conn->connection_type = CONNECTION_TYPE_REQUEST;
+ /* Start with HTTP, WS will be an "upgrade" request later */
+ conn->protocol_type = PROTOCOL_TYPE_HTTP1;
+ process_new_connection(conn);
+ }
+
+ DEBUG_TRACE("%s", "Connection closed");
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_close_time = time(NULL);
+#endif
+ }
+
+ /* Call exit thread user callback */
+ if (ctx->callbacks.exit_thread) {
+ ctx->callbacks.exit_thread(ctx, 1, tls.user_ptr);
+ }
+
+ /* delete thread local storage objects */
+ pthread_setspecific(sTlsKey, NULL);
+#if defined(_WIN32)
+ CloseHandle(tls.pthread_cond_helper_mutex);
+#endif
+ pthread_mutex_destroy(&conn->mutex);
+
+ /* Free the request buffer. */
+ conn->buf_size = 0;
+ mg_free(conn->buf);
+ conn->buf = NULL;
+
+ /* Free cleaned URI (if any) */
+ if (conn->request_info.local_uri != conn->request_info.local_uri_raw) {
+ mg_free((void *)conn->request_info.local_uri);
+ conn->request_info.local_uri = NULL;
+ }
+
+#if defined(USE_SERVER_STATS)
+ conn->conn_state = 9; /* done */
+#endif
+
+ DEBUG_TRACE("%s", "exiting");
+}
+
+
+/* Threads have different return types on Windows and Unix. */
+#if defined(_WIN32)
+static unsigned __stdcall worker_thread(void *thread_func_param)
+{
+ worker_thread_run((struct mg_connection *)thread_func_param);
+ return 0;
+}
+#else
+static void *
+worker_thread(void *thread_func_param)
+{
+#if !defined(__ZEPHYR__)
+ struct sigaction sa;
+
+ /* Ignore SIGPIPE */
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &sa, NULL);
+#endif
+
+ worker_thread_run((struct mg_connection *)thread_func_param);
+ return NULL;
+}
+#endif /* _WIN32 */
+
+
+/* This is an internal function, thus all arguments are expected to be
+ * valid - a NULL check is not required. */
+static void
+accept_new_connection(const struct socket *listener, struct mg_context *ctx)
+{
+ struct socket so;
+ char src_addr[IP_ADDR_STR_LEN];
+ socklen_t len = sizeof(so.rsa);
+#if !defined(__ZEPHYR__)
+ int on = 1;
+#endif
+ memset(&so, 0, sizeof(so));
+
+ if ((so.sock = accept(listener->sock, &so.rsa.sa, &len))
+ == INVALID_SOCKET) {
+ } else if (check_acl(ctx, &so.rsa) != 1) {
+ sockaddr_to_string(src_addr, sizeof(src_addr), &so.rsa);
+ mg_cry_ctx_internal(ctx,
+ "%s: %s is not allowed to connect",
+ __func__,
+ src_addr);
+ closesocket(so.sock);
+ } else {
+ /* Put so socket structure into the queue */
+ DEBUG_TRACE("Accepted socket %d", (int)so.sock);
+ set_close_on_exec(so.sock, NULL, ctx);
+ so.is_ssl = listener->is_ssl;
+ so.ssl_redir = listener->ssl_redir;
+ so.is_optional = listener->is_optional;
+ if (getsockname(so.sock, &so.lsa.sa, &len) != 0) {
+ mg_cry_ctx_internal(ctx,
+ "%s: getsockname() failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+
+#if !defined(__ZEPHYR__)
+ if ((so.lsa.sa.sa_family == AF_INET)
+ || (so.lsa.sa.sa_family == AF_INET6)) {
+ /* Set TCP keep-alive for TCP sockets (IPv4 and IPv6).
+ * This is needed because if HTTP-level keep-alive
+ * is enabled, and client resets the connection, server won't get
+ * TCP FIN or RST and will keep the connection open forever. With
+ * TCP keep-alive, next keep-alive handshake will figure out that
+ * the client is down and will close the server end.
+ * Thanks to Igor Klopov who suggested the patch. */
+ if (setsockopt(so.sock,
+ SOL_SOCKET,
+ SO_KEEPALIVE,
+ (SOCK_OPT_TYPE)&on,
+ sizeof(on))
+ != 0) {
+ mg_cry_ctx_internal(
+ ctx,
+ "%s: setsockopt(SOL_SOCKET SO_KEEPALIVE) failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+ }
+#endif
+
+ /* Disable TCP Nagle's algorithm. Normally TCP packets are coalesced
+ * to effectively fill up the underlying IP packet payload and
+ * reduce the overhead of sending lots of small buffers. However
+ * this hurts the server's throughput (ie. operations per second)
+ * when HTTP 1.1 persistent connections are used and the responses
+ * are relatively small (eg. less than 1400 bytes).
+ */
+ if ((ctx->dd.config[CONFIG_TCP_NODELAY] != NULL)
+ && (!strcmp(ctx->dd.config[CONFIG_TCP_NODELAY], "1"))) {
+ if (set_tcp_nodelay(&so, 1) != 0) {
+ mg_cry_ctx_internal(
+ ctx,
+ "%s: setsockopt(IPPROTO_TCP TCP_NODELAY) failed: %s",
+ __func__,
+ strerror(ERRNO));
+ }
+ }
+
+ /* The "non blocking" property should already be
+ * inherited from the parent socket. Set it for
+ * non-compliant socket implementations. */
+ set_non_blocking_mode(so.sock);
+
+ so.in_use = 0;
+ produce_socket(ctx, &so);
+ }
+}
+
+
+static void
+master_thread_run(struct mg_context *ctx)
+{
+ struct mg_workerTLS tls;
+ struct mg_pollfd *pfd;
+ unsigned int i;
+ unsigned int workerthreadcount;
+
+ if (!ctx || !ctx->listening_socket_fds) {
+ return;
+ }
+
+ mg_set_thread_name("master");
+
+ /* Increase priority of the master thread */
+#if defined(_WIN32)
+ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
+#elif defined(USE_MASTER_THREAD_PRIORITY)
+ int min_prio = sched_get_priority_min(SCHED_RR);
+ int max_prio = sched_get_priority_max(SCHED_RR);
+ if ((min_prio >= 0) && (max_prio >= 0)
+ && ((USE_MASTER_THREAD_PRIORITY) <= max_prio)
+ && ((USE_MASTER_THREAD_PRIORITY) >= min_prio)) {
+ struct sched_param sched_param = {0};
+ sched_param.sched_priority = (USE_MASTER_THREAD_PRIORITY);
+ pthread_setschedparam(pthread_self(), SCHED_RR, &sched_param);
+ }
+#endif
+
+ /* Initialize thread local storage */
+#if defined(_WIN32)
+ tls.pthread_cond_helper_mutex = CreateEvent(NULL, FALSE, FALSE, NULL);
+#endif
+ tls.is_master = 1;
+ pthread_setspecific(sTlsKey, &tls);
+
+ if (ctx->callbacks.init_thread) {
+ /* Callback for the master thread (type 0) */
+ tls.user_ptr = ctx->callbacks.init_thread(ctx, 0);
+ } else {
+ tls.user_ptr = NULL;
+ }
+
+ /* Lua background script "start" event */
+#if defined(USE_LUA)
+ if (ctx->lua_background_state) {
+ lua_State *lstate = (lua_State *)ctx->lua_background_state;
+ pthread_mutex_lock(&ctx->lua_bg_mutex);
+
+ /* call "start()" in Lua */
+ lua_getglobal(lstate, "start");
+ if (lua_type(lstate, -1) == LUA_TFUNCTION) {
+ int ret = lua_pcall(lstate, /* args */ 0, /* results */ 0, 0);
+ if (ret != 0) {
+ struct mg_connection fc;
+ lua_cry(fake_connection(&fc, ctx),
+ ret,
+ lstate,
+ "lua_background_script",
+ "start");
+ }
+ } else {
+ lua_pop(lstate, 1);
+ }
+
+ /* determine if there is a "log()" function in Lua background script */
+ lua_getglobal(lstate, "log");
+ if (lua_type(lstate, -1) == LUA_TFUNCTION) {
+ ctx->lua_bg_log_available = 1;
+ }
+ lua_pop(lstate, 1);
+
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+ }
+#endif
+
+ /* Server starts *now* */
+ ctx->start_time = time(NULL);
+
+ /* Server accept loop */
+ pfd = ctx->listening_socket_fds;
+ while (STOP_FLAG_IS_ZERO(&ctx->stop_flag)) {
+ for (i = 0; i < ctx->num_listening_sockets; i++) {
+ pfd[i].fd = ctx->listening_sockets[i].sock;
+ pfd[i].events = POLLIN;
+ }
+
+ /* We listen on this socket just so that mg_stop() can cause mg_poll()
+ * to return ASAP. Don't worry, we did allocate an extra slot at the end
+ * of listening_socket_fds[] just to hold this
+ */
+ pfd[ctx->num_listening_sockets].fd =
+ ctx->thread_shutdown_notification_socket;
+ pfd[ctx->num_listening_sockets].events = POLLIN;
+
+ if (mg_poll(pfd,
+ ctx->num_listening_sockets
+ + 1, // +1 for the thread_shutdown_notification_socket
+ SOCKET_TIMEOUT_QUANTUM,
+ &(ctx->stop_flag))
+ > 0) {
+ for (i = 0; i < ctx->num_listening_sockets; i++) {
+ /* NOTE(lsm): on QNX, poll() returns POLLRDNORM after the
+ * successful poll, and POLLIN is defined as
+ * (POLLRDNORM | POLLRDBAND)
+ * Therefore, we're checking pfd[i].revents & POLLIN, not
+ * pfd[i].revents == POLLIN. */
+ if (STOP_FLAG_IS_ZERO(&ctx->stop_flag)
+ && (pfd[i].revents & POLLIN)) {
+ accept_new_connection(&ctx->listening_sockets[i], ctx);
+ }
+ }
+ }
+ }
+
+ /* Here stop_flag is 1 - Initiate shutdown. */
+ DEBUG_TRACE("%s", "stopping workers");
+
+ /* Stop signal received: somebody called mg_stop. Quit. */
+ close_all_listening_sockets(ctx);
+
+ /* Wakeup workers that are waiting for connections to handle. */
+#if defined(ALTERNATIVE_QUEUE)
+ for (i = 0; i < ctx->spawned_worker_threads; i++) {
+ event_signal(ctx->client_wait_events[i]);
+ }
+#else
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ pthread_cond_broadcast(&ctx->sq_full);
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+#endif
+
+ /* Join all worker threads to avoid leaking threads. */
+ workerthreadcount = ctx->spawned_worker_threads;
+ for (i = 0; i < workerthreadcount; i++) {
+ if (ctx->worker_threadids[i] != 0) {
+ mg_join_thread(ctx->worker_threadids[i]);
+ }
+ }
+
+#if defined(USE_LUA)
+ /* Free Lua state of lua background task */
+ if (ctx->lua_background_state) {
+ lua_State *lstate = (lua_State *)ctx->lua_background_state;
+ ctx->lua_bg_log_available = 0;
+
+ /* call "stop()" in Lua */
+ pthread_mutex_lock(&ctx->lua_bg_mutex);
+ lua_getglobal(lstate, "stop");
+ if (lua_type(lstate, -1) == LUA_TFUNCTION) {
+ int ret = lua_pcall(lstate, /* args */ 0, /* results */ 0, 0);
+ if (ret != 0) {
+ struct mg_connection fc;
+ lua_cry(fake_connection(&fc, ctx),
+ ret,
+ lstate,
+ "lua_background_script",
+ "stop");
+ }
+ }
+ DEBUG_TRACE("Close Lua background state %p", lstate);
+ lua_close(lstate);
+
+ ctx->lua_background_state = 0;
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+ }
+#endif
+
+ DEBUG_TRACE("%s", "exiting");
+
+ /* call exit thread callback */
+ if (ctx->callbacks.exit_thread) {
+ /* Callback for the master thread (type 0) */
+ ctx->callbacks.exit_thread(ctx, 0, tls.user_ptr);
+ }
+
+#if defined(_WIN32)
+ CloseHandle(tls.pthread_cond_helper_mutex);
+#endif
+ pthread_setspecific(sTlsKey, NULL);
+
+ /* Signal mg_stop() that we're done.
+ * WARNING: This must be the very last thing this
+ * thread does, as ctx becomes invalid after this line. */
+ STOP_FLAG_ASSIGN(&ctx->stop_flag, 2);
+}
+
+
+/* Threads have different return types on Windows and Unix. */
+#if defined(_WIN32)
+static unsigned __stdcall master_thread(void *thread_func_param)
+{
+ master_thread_run((struct mg_context *)thread_func_param);
+ return 0;
+}
+#else
+static void *
+master_thread(void *thread_func_param)
+{
+#if !defined(__ZEPHYR__)
+ struct sigaction sa;
+
+ /* Ignore SIGPIPE */
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &sa, NULL);
+#endif
+
+ master_thread_run((struct mg_context *)thread_func_param);
+ return NULL;
+}
+#endif /* _WIN32 */
+
+
+static void
+free_context(struct mg_context *ctx)
+{
+ int i;
+ struct mg_handler_info *tmp_rh;
+
+ if (ctx == NULL) {
+ return;
+ }
+
+ /* Call user callback */
+ if (ctx->callbacks.exit_context) {
+ ctx->callbacks.exit_context(ctx);
+ }
+
+ /* All threads exited, no sync is needed. Destroy thread mutex and
+ * condvars
+ */
+ (void)pthread_mutex_destroy(&ctx->thread_mutex);
+
+#if defined(ALTERNATIVE_QUEUE)
+ mg_free(ctx->client_socks);
+ if (ctx->client_wait_events != NULL) {
+ for (i = 0; (unsigned)i < ctx->spawned_worker_threads; i++) {
+ event_destroy(ctx->client_wait_events[i]);
+ }
+ mg_free(ctx->client_wait_events);
+ }
+#else
+ (void)pthread_cond_destroy(&ctx->sq_empty);
+ (void)pthread_cond_destroy(&ctx->sq_full);
+ mg_free(ctx->squeue);
+#endif
+
+ /* Destroy other context global data structures mutex */
+ (void)pthread_mutex_destroy(&ctx->nonce_mutex);
+
+#if defined(USE_LUA)
+ (void)pthread_mutex_destroy(&ctx->lua_bg_mutex);
+#endif
+
+ /* Deallocate shutdown-triggering socket-pair */
+ if (ctx->user_shutdown_notification_socket >= 0) {
+ closesocket(ctx->user_shutdown_notification_socket);
+ }
+ if (ctx->thread_shutdown_notification_socket >= 0) {
+ closesocket(ctx->thread_shutdown_notification_socket);
+ }
+
+ /* Deallocate config parameters */
+ for (i = 0; i < NUM_OPTIONS; i++) {
+ if (ctx->dd.config[i] != NULL) {
+#if defined(_MSC_VER)
+#pragma warning(suppress : 6001)
+#endif
+ mg_free(ctx->dd.config[i]);
+ }
+ }
+
+ /* Deallocate request handlers */
+ while (ctx->dd.handlers) {
+ tmp_rh = ctx->dd.handlers;
+ ctx->dd.handlers = tmp_rh->next;
+ mg_free(tmp_rh->uri);
+ mg_free(tmp_rh);
+ }
+
+#if defined(USE_MBEDTLS)
+ if (ctx->dd.ssl_ctx != NULL) {
+ mbed_sslctx_uninit(ctx->dd.ssl_ctx);
+ mg_free(ctx->dd.ssl_ctx);
+ ctx->dd.ssl_ctx = NULL;
+ }
+
+#elif defined(USE_GNUTLS)
+ if (ctx->dd.ssl_ctx != NULL) {
+ gtls_sslctx_uninit(ctx->dd.ssl_ctx);
+ mg_free(ctx->dd.ssl_ctx);
+ ctx->dd.ssl_ctx = NULL;
+ }
+
+#elif !defined(NO_SSL)
+ /* Deallocate SSL context */
+ if (ctx->dd.ssl_ctx != NULL) {
+ void *ssl_ctx = (void *)ctx->dd.ssl_ctx;
+ int callback_ret =
+ (ctx->callbacks.external_ssl_ctx == NULL)
+ ? 0
+ : (ctx->callbacks.external_ssl_ctx(&ssl_ctx, ctx->user_data));
+
+ if (callback_ret == 0) {
+ SSL_CTX_free(ctx->dd.ssl_ctx);
+ }
+ /* else: ignore error and omit SSL_CTX_free in case
+ * callback_ret is 1 */
+ }
+#endif /* !NO_SSL */
+
+ /* Deallocate worker thread ID array */
+ mg_free(ctx->worker_threadids);
+
+ /* Deallocate worker thread ID array */
+ mg_free(ctx->worker_connections);
+
+ /* deallocate system name string */
+ mg_free(ctx->systemName);
+
+ /* Deallocate context itself */
+ mg_free(ctx);
+}
+
+
+CIVETWEB_API void
+mg_stop(struct mg_context *ctx)
+{
+ pthread_t mt;
+ if (!ctx) {
+ return;
+ }
+
+ /* We don't use a lock here. Calling mg_stop with the same ctx from
+ * two threads is not allowed. */
+ mt = ctx->masterthreadid;
+ if (mt == 0) {
+ return;
+ }
+
+ ctx->masterthreadid = 0;
+
+ /* Set stop flag, so all threads know they have to exit. */
+ STOP_FLAG_ASSIGN(&ctx->stop_flag, 1);
+
+ /* Closing this socket will cause mg_poll() in all the I/O threads to return
+ * immediately */
+ closesocket(ctx->user_shutdown_notification_socket);
+ ctx->user_shutdown_notification_socket =
+ -1; /* to avoid calling closesocket() again in free_context() */
+
+ /* Join timer thread */
+#if defined(USE_TIMERS)
+ timers_exit(ctx);
+#endif
+
+ /* Wait until everything has stopped. */
+ while (!STOP_FLAG_IS_TWO(&ctx->stop_flag)) {
+ (void)mg_sleep(10);
+ }
+
+ /* Wait to stop master thread */
+ mg_join_thread(mt);
+
+ /* Close remaining Lua states */
+#if defined(USE_LUA)
+ lua_ctx_exit(ctx);
+#endif
+
+ /* Free memory */
+ free_context(ctx);
+}
+
+
+static void
+get_system_name(char **sysName)
+{
+#if defined(_WIN32)
+ char name[128];
+ DWORD dwVersion = 0;
+ DWORD dwMajorVersion = 0;
+ DWORD dwMinorVersion = 0;
+ DWORD dwBuild = 0;
+ BOOL wowRet, isWoW = FALSE;
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+ /* GetVersion was declared deprecated */
+#pragma warning(disable : 4996)
+#endif
+ dwVersion = GetVersion();
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+ dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
+ dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
+ dwBuild = ((dwVersion < 0x80000000) ? (DWORD)(HIWORD(dwVersion)) : 0);
+ (void)dwBuild;
+
+ wowRet = IsWow64Process(GetCurrentProcess(), &isWoW);
+
+ sprintf(name,
+ "Windows %u.%u%s",
+ (unsigned)dwMajorVersion,
+ (unsigned)dwMinorVersion,
+ (wowRet ? (isWoW ? " (WoW64)" : "") : " (?)"));
+
+ *sysName = mg_strdup(name);
+
+#elif defined(__rtems__)
+ *sysName = mg_strdup("RTEMS");
+#elif defined(__ZEPHYR__)
+ *sysName = mg_strdup("Zephyr OS");
+#else
+ struct utsname name;
+ memset(&name, 0, sizeof(name));
+ uname(&name);
+ *sysName = mg_strdup(name.sysname);
+#endif
+}
+
+
+static void
+legacy_init(const char **options)
+{
+ const char *ports_option = config_options[LISTENING_PORTS].default_value;
+
+ if (options) {
+ const char **run_options = options;
+ const char *optname = config_options[LISTENING_PORTS].name;
+
+ /* Try to find the "listening_ports" option */
+ while (*run_options) {
+ if (!strcmp(*run_options, optname)) {
+ ports_option = run_options[1];
+ }
+ run_options += 2;
+ }
+ }
+
+ if (is_ssl_port_used(ports_option)) {
+ /* Initialize with SSL support */
+ mg_init_library(MG_FEATURES_TLS);
+ } else {
+ /* Initialize without SSL support */
+ mg_init_library(MG_FEATURES_DEFAULT);
+ }
+}
+
+/* we'll assume it's only Windows that doesn't have socketpair() available */
+#if !defined(HAVE_SOCKETPAIR) && !defined(_WIN32)
+#define HAVE_SOCKETPAIR 1
+#endif
+
+static int
+mg_socketpair(int *sockA, int *sockB)
+{
+ int temp[2] = {-1, -1};
+ int asock = -1;
+
+ /** Default to unallocated */
+ *sockA = -1;
+ *sockB = -1;
+
+#if defined(HAVE_SOCKETPAIR)
+ int ret = socketpair(AF_UNIX, SOCK_STREAM, 0, temp);
+ if (ret == 0) {
+ *sockA = temp[0];
+ *sockB = temp[1];
+ set_close_on_exec(*sockA, NULL, NULL);
+ set_close_on_exec(*sockB, NULL, NULL);
+ }
+ (void)asock; /* not used */
+ return ret;
+#else
+ /** No socketpair() call is available, so we'll have to roll our own
+ * implementation */
+ asock = socket(PF_INET, SOCK_STREAM, 0);
+ if (asock >= 0) {
+ struct sockaddr_in addr;
+ struct sockaddr *pa = (struct sockaddr *)&addr;
+ socklen_t addrLen = sizeof(addr);
+
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ addr.sin_port = 0;
+
+ if ((bind(asock, pa, sizeof(addr)) == 0)
+ && (getsockname(asock, pa, &addrLen) == 0)
+ && (listen(asock, 1) == 0)) {
+ temp[0] = socket(PF_INET, SOCK_STREAM, 0);
+ if ((temp[0] >= 0) && (connect(temp[0], pa, sizeof(addr)) == 0)) {
+ temp[1] = accept(asock, pa, &addrLen);
+ if (temp[1] >= 0) {
+ closesocket(asock);
+ *sockA = temp[0];
+ *sockB = temp[1];
+ set_close_on_exec(*sockA, NULL, NULL);
+ set_close_on_exec(*sockB, NULL, NULL);
+ return 0; /* success! */
+ }
+ }
+ }
+ }
+
+ /* Cleanup */
+ if (asock >= 0)
+ closesocket(asock);
+ if (temp[0] >= 0)
+ closesocket(temp[0]);
+ if (temp[1] >= 0)
+ closesocket(temp[1]);
+ return -1; /* fail! */
+#endif
+}
+
+static int
+mg_start_worker_thread(struct mg_context *ctx, int only_if_no_idle_threads)
+{
+ const unsigned int i = ctx->spawned_worker_threads;
+ if (i >= ctx->cfg_max_worker_threads) {
+ return -1; /* Oops, we hit our worker-thread limit! No more worker
+ threads, ever! */
+ }
+
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+#if defined(ALTERNATIVE_QUEUE)
+ if ((only_if_no_idle_threads) && (ctx->idle_worker_thread_count > 0)) {
+#else
+ if ((only_if_no_idle_threads)
+ && (ctx->idle_worker_thread_count
+ > (unsigned)(ctx->sq_head - ctx->sq_tail))) {
+#endif
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ return -2; /* There are idle threads available, so no need to spawn a
+ new worker thread now */
+ }
+ ctx->idle_worker_thread_count++; /* we do this here to avoid a race
+ condition while the thread is starting
+ up */
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+
+ ctx->worker_connections[i].phys_ctx = ctx;
+ int ret = mg_start_thread_with_id(worker_thread,
+ &ctx->worker_connections[i],
+ &ctx->worker_threadids[i]);
+ if (ret == 0) {
+ ctx->spawned_worker_threads++; /* note that we've filled another slot in
+ the table */
+ DEBUG_TRACE("Started worker_thread #%i", ctx->spawned_worker_threads);
+ } else {
+ (void)pthread_mutex_lock(&ctx->thread_mutex);
+ ctx->idle_worker_thread_count--; /* whoops, roll-back on error */
+ (void)pthread_mutex_unlock(&ctx->thread_mutex);
+ }
+ return ret;
+}
+
+CIVETWEB_API struct mg_context *
+mg_start2(struct mg_init_data *init, struct mg_error_data *error)
+{
+ struct mg_context *ctx;
+ const char *name, *value, *default_value;
+ int idx, ok, prespawnthreadcount, workerthreadcount;
+ unsigned int i;
+ int itmp;
+ void (*exit_callback)(const struct mg_context *ctx) = 0;
+ const char **options =
+ ((init != NULL) ? (init->configuration_options) : (NULL));
+
+ struct mg_workerTLS tls;
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OK;
+ error->code_sub = 0;
+ if (error->text_buffer_size > 0) {
+ *error->text = 0;
+ }
+ }
+
+ if (mg_init_library_called == 0) {
+ /* Legacy INIT, if mg_start is called without mg_init_library.
+ * Note: This will cause a memory leak when unloading the library.
+ */
+ legacy_init(options);
+ }
+ if (mg_init_library_called == 0) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_LIBRARY_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Library uninitialized");
+ }
+ return NULL;
+ }
+
+ /* Allocate context and initialize reasonable general case defaults. */
+ ctx = (struct mg_context *)mg_calloc(1, sizeof(*ctx));
+ if (ctx == NULL) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)sizeof(*ctx);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Out of memory");
+ }
+ return NULL;
+ }
+
+ /* Random number generator will initialize at the first call */
+ ctx->dd.auth_nonce_mask =
+ (uint64_t)get_random() ^ (uint64_t)(ptrdiff_t)(options);
+
+ /* Save started thread index to reuse in other external API calls
+ * For the sake of thread synchronization all non-civetweb threads
+ * can be considered as single external thread */
+ ctx->starter_thread_idx = (unsigned)mg_atomic_inc(&thread_idx_max);
+ tls.is_master = -1; /* Thread calling mg_start */
+ tls.thread_idx = ctx->starter_thread_idx;
+#if defined(_WIN32)
+ tls.pthread_cond_helper_mutex = NULL;
+#endif
+ pthread_setspecific(sTlsKey, &tls);
+
+ ok = (0 == pthread_mutex_init(&ctx->thread_mutex, &pthread_mutex_attr));
+#if !defined(ALTERNATIVE_QUEUE)
+ ok &= (0 == pthread_cond_init(&ctx->sq_empty, NULL));
+ ok &= (0 == pthread_cond_init(&ctx->sq_full, NULL));
+ ctx->sq_blocked = 0;
+#endif
+ ok &= (0 == pthread_mutex_init(&ctx->nonce_mutex, &pthread_mutex_attr));
+#if defined(USE_LUA)
+ ok &= (0 == pthread_mutex_init(&ctx->lua_bg_mutex, &pthread_mutex_attr));
+#endif
+
+ /** mg_stop() will close the user_shutdown_notification_socket, and that
+ * will cause poll() to return immediately in the master-thread, so that
+ * mg_stop() can also return immediately.
+ */
+ ok &= (0
+ == mg_socketpair(&ctx->user_shutdown_notification_socket,
+ &ctx->thread_shutdown_notification_socket));
+
+ if (!ok) {
+ unsigned error_id = (unsigned)ERRNO;
+ const char *err_msg =
+ "Cannot initialize thread synchronization objects";
+ /* Fatal error - abort start. However, this situation should never
+ * occur in practice. */
+
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = error_id;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ mg_free(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ if ((init != NULL) && (init->callbacks != NULL)) {
+ /* Set all callbacks except exit_context. */
+ ctx->callbacks = *init->callbacks;
+ exit_callback = init->callbacks->exit_context;
+ /* The exit callback is activated once the context is successfully
+ * created. It should not be called, if an incomplete context object
+ * is deleted during a failed initialization. */
+ ctx->callbacks.exit_context = 0;
+ }
+ ctx->user_data = ((init != NULL) ? (init->user_data) : (NULL));
+ ctx->dd.handlers = NULL;
+ ctx->dd.next = NULL;
+
+#if defined(USE_LUA)
+ lua_ctx_init(ctx);
+#endif
+
+ /* Store options */
+ while (options && (name = *options++) != NULL) {
+ idx = get_option_index(name);
+ if (idx == -1) {
+ mg_cry_ctx_internal(ctx, "Invalid option: %s", name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)-1;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option: %s",
+ name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+
+ } else if ((value = *options++) == NULL) {
+ mg_cry_ctx_internal(ctx, "%s: option value cannot be NULL", name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)idx;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option value: %s",
+ name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ if (ctx->dd.config[idx] != NULL) {
+ /* A duplicate configuration option is not an error - the last
+ * option value will be used. */
+ mg_cry_ctx_internal(ctx, "warning: %s: duplicate option", name);
+ mg_free(ctx->dd.config[idx]);
+ }
+ ctx->dd.config[idx] = mg_strdup_ctx(value, ctx);
+ DEBUG_TRACE("[%s] -> [%s]", name, value);
+ }
+
+ /* Set default value if needed */
+ for (i = 0; config_options[i].name != NULL; i++) {
+ default_value = config_options[i].default_value;
+ if ((ctx->dd.config[i] == NULL) && (default_value != NULL)) {
+ ctx->dd.config[i] = mg_strdup_ctx(default_value, ctx);
+ }
+ }
+
+ /* Request size option */
+ itmp = atoi(ctx->dd.config[MAX_REQUEST_SIZE]);
+ if (itmp < 1024) {
+ mg_cry_ctx_internal(ctx,
+ "%s too small",
+ config_options[MAX_REQUEST_SIZE].name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)MAX_REQUEST_SIZE;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option value: %s",
+ config_options[MAX_REQUEST_SIZE].name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ ctx->max_request_size = (unsigned)itmp;
+
+ /* Queue length */
+#if !defined(ALTERNATIVE_QUEUE)
+ itmp = atoi(ctx->dd.config[CONNECTION_QUEUE_SIZE]);
+ if (itmp < 1) {
+ mg_cry_ctx_internal(ctx,
+ "%s too small",
+ config_options[CONNECTION_QUEUE_SIZE].name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = CONNECTION_QUEUE_SIZE;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option value: %s",
+ config_options[CONNECTION_QUEUE_SIZE].name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ ctx->squeue =
+ (struct socket *)mg_calloc((unsigned int)itmp, sizeof(struct socket));
+ if (ctx->squeue == NULL) {
+ mg_cry_ctx_internal(ctx,
+ "Out of memory: Cannot allocate %s",
+ config_options[CONNECTION_QUEUE_SIZE].name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)itmp * (unsigned)sizeof(struct socket);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Out of memory: Cannot allocate %s",
+ config_options[CONNECTION_QUEUE_SIZE].name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ ctx->sq_size = itmp;
+#endif
+
+ /* Worker thread count option */
+ workerthreadcount = atoi(ctx->dd.config[NUM_THREADS]);
+ prespawnthreadcount = atoi(ctx->dd.config[PRESPAWN_THREADS]);
+
+ if ((prespawnthreadcount < 0)
+ || (prespawnthreadcount > workerthreadcount)) {
+ prespawnthreadcount =
+ workerthreadcount; /* can't prespawn more than all of them! */
+ }
+
+ if ((workerthreadcount > MAX_WORKER_THREADS) || (workerthreadcount <= 0)) {
+ if (workerthreadcount <= 0) {
+ mg_cry_ctx_internal(ctx, "%s", "Invalid number of worker threads");
+ } else {
+ mg_cry_ctx_internal(ctx, "%s", "Too many worker threads");
+ }
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = NUM_THREADS;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option value: %s",
+ config_options[NUM_THREADS].name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ /* Document root */
+#if defined(NO_FILES)
+ if (ctx->dd.config[DOCUMENT_ROOT] != NULL) {
+ mg_cry_ctx_internal(ctx, "%s", "Document root must not be set");
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)DOCUMENT_ROOT;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid configuration option value: %s",
+ config_options[DOCUMENT_ROOT].name);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+#endif
+
+ get_system_name(&ctx->systemName);
+
+#if defined(USE_LUA)
+ /* If a Lua background script has been configured, start it. */
+ ctx->lua_bg_log_available = 0;
+ if (ctx->dd.config[LUA_BACKGROUND_SCRIPT] != NULL) {
+ char ebuf[256];
+ struct vec opt_vec;
+ struct vec eq_vec;
+ const char *sparams;
+
+ memset(ebuf, 0, sizeof(ebuf));
+ pthread_mutex_lock(&ctx->lua_bg_mutex);
+
+ /* Create a Lua state, load all standard libraries and the mg table */
+ lua_State *state = mg_lua_context_script_prepare(
+ ctx->dd.config[LUA_BACKGROUND_SCRIPT], ctx, ebuf, sizeof(ebuf));
+ if (!state) {
+ mg_cry_ctx_internal(ctx,
+ "lua_background_script load error: %s",
+ ebuf);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_SCRIPT_ERROR;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Error in script %s: %s",
+ config_options[LUA_BACKGROUND_SCRIPT].name,
+ ebuf);
+ }
+
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ /* Add a table with parameters into mg.params */
+ sparams = ctx->dd.config[LUA_BACKGROUND_SCRIPT_PARAMS];
+ if (sparams && sparams[0]) {
+ lua_getglobal(state, "mg");
+ lua_pushstring(state, "params");
+ lua_newtable(state);
+
+ while ((sparams = next_option(sparams, &opt_vec, &eq_vec))
+ != NULL) {
+ reg_llstring(
+ state, opt_vec.ptr, opt_vec.len, eq_vec.ptr, eq_vec.len);
+ if (mg_strncasecmp(sparams, opt_vec.ptr, opt_vec.len) == 0)
+ break;
+ }
+ lua_rawset(state, -3);
+ lua_pop(state, 1);
+ }
+
+ /* Call script */
+ state = mg_lua_context_script_run(state,
+ ctx->dd.config[LUA_BACKGROUND_SCRIPT],
+ ctx,
+ ebuf,
+ sizeof(ebuf));
+ if (!state) {
+ mg_cry_ctx_internal(ctx,
+ "lua_background_script start error: %s",
+ ebuf);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_SCRIPT_ERROR;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Error in script %s: %s",
+ config_options[DOCUMENT_ROOT].name,
+ ebuf);
+ }
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ /* state remains valid */
+ ctx->lua_background_state = (void *)state;
+ pthread_mutex_unlock(&ctx->lua_bg_mutex);
+
+ } else {
+ ctx->lua_background_state = 0;
+ }
+#endif
+
+ /* Step by step initialization of ctx - depending on build options */
+#if !defined(NO_FILESYSTEMS)
+ if (!set_gpass_option(ctx, NULL)) {
+ const char *err_msg = "Invalid global password file";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PASS_FILE;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+#endif
+
+#if defined(USE_MBEDTLS) || defined(USE_GNUTLS)
+ if (!mg_sslctx_init(ctx, NULL)) {
+ const char *err_msg = "Error initializing SSL context";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_TLS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+#elif !defined(NO_SSL)
+ if (!init_ssl_ctx(ctx, NULL)) {
+ const char *err_msg = "Error initializing SSL context";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_TLS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+#endif
+
+ if (!set_ports_option(ctx)) {
+ const char *err_msg = "Failed to setup server ports";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_PORTS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+#if !defined(_WIN32) && !defined(__ZEPHYR__)
+ if (!set_uid_option(ctx)) {
+ const char *err_msg = "Failed to run as configured user";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_USER_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+#endif
+
+ if (!set_acl_option(ctx)) {
+ const char *err_msg = "Failed to setup access control list";
+ /* Fatal error - abort start. */
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_ACL_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ ctx->cfg_max_worker_threads = ((unsigned int)(workerthreadcount));
+ ctx->worker_threadids =
+ (pthread_t *)mg_calloc_ctx(ctx->cfg_max_worker_threads,
+ sizeof(pthread_t),
+ ctx);
+
+ if (ctx->worker_threadids == NULL) {
+ const char *err_msg = "Not enough memory for worker thread ID array";
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)ctx->cfg_max_worker_threads
+ * (unsigned)sizeof(pthread_t);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ ctx->worker_connections =
+ (struct mg_connection *)mg_calloc_ctx(ctx->cfg_max_worker_threads,
+ sizeof(struct mg_connection),
+ ctx);
+ if (ctx->worker_connections == NULL) {
+ const char *err_msg =
+ "Not enough memory for worker thread connection array";
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)ctx->cfg_max_worker_threads
+ * (unsigned)sizeof(struct mg_connection);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+#if defined(ALTERNATIVE_QUEUE)
+ ctx->client_wait_events =
+ (void **)mg_calloc_ctx(ctx->cfg_max_worker_threads,
+ sizeof(ctx->client_wait_events[0]),
+ ctx);
+ if (ctx->client_wait_events == NULL) {
+ const char *err_msg = "Not enough memory for worker event array";
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+ mg_free(ctx->worker_threadids);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)ctx->cfg_max_worker_threads
+ * (unsigned)sizeof(ctx->client_wait_events[0]);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ ctx->client_socks =
+ (struct socket *)mg_calloc_ctx(ctx->cfg_max_worker_threads,
+ sizeof(ctx->client_socks[0]),
+ ctx);
+ if (ctx->client_socks == NULL) {
+ const char *err_msg = "Not enough memory for worker socket array";
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+ mg_free(ctx->client_wait_events);
+ mg_free(ctx->worker_threadids);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)ctx->cfg_max_worker_threads
+ * (unsigned)sizeof(ctx->client_socks[0]);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+
+ for (i = 0; (unsigned)i < ctx->cfg_max_worker_threads; i++) {
+ ctx->client_wait_events[i] = event_create();
+ if (ctx->client_wait_events[i] == 0) {
+ const char *err_msg = "Error creating worker event %i";
+ mg_cry_ctx_internal(ctx, err_msg, i);
+ while (i > 0) {
+ i--;
+ event_destroy(ctx->client_wait_events[i]);
+ }
+ mg_free(ctx->client_socks);
+ mg_free(ctx->client_wait_events);
+ mg_free(ctx->worker_threadids);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ err_msg,
+ i);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ }
+#endif
+
+#if defined(USE_TIMERS)
+ if (timers_init(ctx) != 0) {
+ const char *err_msg = "Error creating timers";
+ mg_cry_ctx_internal(ctx, "%s", err_msg);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)ERRNO;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ err_msg);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+#endif
+
+ /* Context has been created - init user libraries */
+ if (ctx->callbacks.init_context) {
+ ctx->callbacks.init_context(ctx);
+ }
+
+ /* From now, the context is successfully created.
+ * When it is destroyed, the exit callback should be called. */
+ ctx->callbacks.exit_context = exit_callback;
+ ctx->context_type = CONTEXT_SERVER; /* server context */
+
+ /* Start worker threads */
+ for (i = 0; (int)i < prespawnthreadcount; i++) {
+ /* worker_thread sets up the other fields */
+ if (mg_start_worker_thread(ctx, 0) != 0) {
+ long error_no = (long)ERRNO;
+
+ /* thread was not created */
+ if (ctx->spawned_worker_threads > 0) {
+ /* If the second, third, ... thread cannot be created, set a
+ * warning, but keep running. */
+ mg_cry_ctx_internal(ctx,
+ "Cannot start worker thread %i: error %ld",
+ ctx->spawned_worker_threads + 1,
+ error_no);
+
+ /* If the server initialization should stop here, all
+ * threads that have already been created must be stopped
+ * first, before any free_context(ctx) call.
+ */
+
+ } else {
+ /* If the first worker thread cannot be created, stop
+ * initialization and free the entire server context. */
+ mg_cry_ctx_internal(ctx,
+ "Cannot create threads: error %ld",
+ error_no);
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OS_ERROR;
+ error->code_sub = (unsigned)error_no;
+ mg_snprintf(
+ NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Cannot create first worker thread: error %ld",
+ error_no);
+ }
+
+ free_context(ctx);
+ pthread_setspecific(sTlsKey, NULL);
+ return NULL;
+ }
+ break;
+ }
+ }
+
+ /* Start master (listening) thread */
+ mg_start_thread_with_id(master_thread, ctx, &ctx->masterthreadid);
+
+ pthread_setspecific(sTlsKey, NULL);
+ return ctx;
+}
+
+
+CIVETWEB_API struct mg_context *
+mg_start(const struct mg_callbacks *callbacks,
+ void *user_data,
+ const char **options)
+{
+ struct mg_init_data init = {0};
+ init.callbacks = callbacks;
+ init.user_data = user_data;
+ init.configuration_options = options;
+
+ return mg_start2(&init, NULL);
+}
+
+
+/* Add an additional domain to an already running web server. */
+CIVETWEB_API int
+mg_start_domain2(struct mg_context *ctx,
+ const char **options,
+ struct mg_error_data *error)
+{
+ const char *name;
+ const char *value;
+ const char *default_value;
+ struct mg_domain_context *new_dom;
+ struct mg_domain_context *dom;
+ int idx, i;
+
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OK;
+ error->code_sub = 0;
+ if (error->text_buffer_size > 0) {
+ *error->text = 0;
+ }
+ }
+
+ if ((ctx == NULL) || (options == NULL)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_PARAM;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Invalid parameters");
+ }
+ return -1;
+ }
+
+ if (!STOP_FLAG_IS_ZERO(&ctx->stop_flag)) {
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_SERVER_STOPPED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Server already stopped");
+ }
+ return -7;
+ }
+
+ new_dom = (struct mg_domain_context *)
+ mg_calloc_ctx(1, sizeof(struct mg_domain_context), ctx);
+
+ if (!new_dom) {
+ /* Out of memory */
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_OUT_OF_MEMORY;
+ error->code_sub = (unsigned)sizeof(struct mg_domain_context);
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Out or memory");
+ }
+ return -6;
+ }
+
+ /* Store options - TODO: unite duplicate code */
+ while (options && (name = *options++) != NULL) {
+ idx = get_option_index(name);
+ if (idx == -1) {
+ mg_cry_ctx_internal(ctx, "Invalid option: %s", name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)-1;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid option: %s",
+ name);
+ }
+ mg_free(new_dom);
+ return -2;
+ } else if ((value = *options++) == NULL) {
+ mg_cry_ctx_internal(ctx, "%s: option value cannot be NULL", name);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INVALID_OPTION;
+ error->code_sub = (unsigned)idx;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Invalid option value: %s",
+ name);
+ }
+ mg_free(new_dom);
+ return -2;
+ }
+ if (new_dom->config[idx] != NULL) {
+ /* Duplicate option: Later values overwrite earlier ones. */
+ mg_cry_ctx_internal(ctx, "warning: %s: duplicate option", name);
+ mg_free(new_dom->config[idx]);
+ }
+ new_dom->config[idx] = mg_strdup_ctx(value, ctx);
+ DEBUG_TRACE("[%s] -> [%s]", name, value);
+ }
+
+ /* Authentication domain is mandatory */
+ /* TODO: Maybe use a new option hostname? */
+ if (!new_dom->config[AUTHENTICATION_DOMAIN]) {
+ mg_cry_ctx_internal(ctx, "%s", "authentication domain required");
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_MISSING_OPTION;
+ error->code_sub = AUTHENTICATION_DOMAIN;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Mandatory option %s missing",
+ config_options[AUTHENTICATION_DOMAIN].name);
+ }
+ mg_free(new_dom);
+ return -4;
+ }
+
+ /* Set default value if needed. Take the config value from
+ * ctx as a default value. */
+ for (i = 0; config_options[i].name != NULL; i++) {
+ default_value = ctx->dd.config[i];
+ if ((new_dom->config[i] == NULL) && (default_value != NULL)) {
+ new_dom->config[i] = mg_strdup_ctx(default_value, ctx);
+ }
+ }
+
+ new_dom->handlers = ctx->dd.handlers;
+ new_dom->next = NULL;
+ new_dom->nonce_count = 0;
+ new_dom->auth_nonce_mask = get_random() ^ (get_random() << 31);
+
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
+ new_dom->shared_lua_websockets = NULL;
+#endif
+
+#if !defined(NO_SSL) && !defined(USE_MBEDTLS) && !defined(USE_GNUTLS)
+ if (!init_ssl_ctx(ctx, new_dom)) {
+ /* Init SSL failed */
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_INIT_TLS_FAILED;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "%s",
+ "Initializing SSL context failed");
+ }
+ mg_free(new_dom);
+ return -3;
+ }
+#endif
+
+ /* Add element to linked list. */
+ mg_lock_context(ctx);
+
+ idx = 0;
+ dom = &(ctx->dd);
+ for (;;) {
+ if (!mg_strcasecmp(new_dom->config[AUTHENTICATION_DOMAIN],
+ dom->config[AUTHENTICATION_DOMAIN])) {
+ /* Domain collision */
+ mg_cry_ctx_internal(ctx,
+ "domain %s already in use",
+ new_dom->config[AUTHENTICATION_DOMAIN]);
+ if (error != NULL) {
+ error->code = MG_ERROR_DATA_CODE_DUPLICATE_DOMAIN;
+ mg_snprintf(NULL,
+ NULL, /* No truncation check for error buffers */
+ error->text,
+ error->text_buffer_size,
+ "Domain %s specified by %s is already in use",
+ new_dom->config[AUTHENTICATION_DOMAIN],
+ config_options[AUTHENTICATION_DOMAIN].name);
+ }
+ mg_free(new_dom);
+ mg_unlock_context(ctx);
+ return -5;
+ }
+
+ /* Count number of domains */
+ idx++;
+
+ if (dom->next == NULL) {
+ dom->next = new_dom;
+ break;
+ }
+ dom = dom->next;
+ }
+
+ mg_unlock_context(ctx);
+
+ /* Return domain number */
+ return idx;
+}
+
+
+CIVETWEB_API int
+mg_start_domain(struct mg_context *ctx, const char **options)
+{
+ return mg_start_domain2(ctx, options, NULL);
+}
+
+
+/* Feature check API function */
+CIVETWEB_API unsigned
+mg_check_feature(unsigned feature)
+{
+ static const unsigned feature_set = 0
+ /* Set bits for available features according to API documentation.
+ * This bit mask is created at compile time, according to the active
+ * preprocessor defines. It is a single const value at runtime. */
+#if !defined(NO_FILES)
+ | MG_FEATURES_FILES
+#endif
+#if !defined(NO_SSL) || defined(USE_MBEDTLS) || defined(USE_GNUTLS)
+ | MG_FEATURES_SSL
+#endif
+#if !defined(NO_CGI)
+ | MG_FEATURES_CGI
+#endif
+#if defined(USE_IPV6)
+ | MG_FEATURES_IPV6
+#endif
+#if defined(USE_WEBSOCKET)
+ | MG_FEATURES_WEBSOCKET
+#endif
+#if defined(USE_LUA)
+ | MG_FEATURES_LUA
+#endif
+#if defined(USE_DUKTAPE)
+ | MG_FEATURES_SSJS
+#endif
+#if !defined(NO_CACHING)
+ | MG_FEATURES_CACHE
+#endif
+#if defined(USE_SERVER_STATS)
+ | MG_FEATURES_STATS
+#endif
+#if defined(USE_ZLIB)
+ | MG_FEATURES_COMPRESSION
+#endif
+#if defined(USE_HTTP2)
+ | MG_FEATURES_HTTP2
+#endif
+#if defined(USE_X_DOM_SOCKET)
+ | MG_FEATURES_X_DOMAIN_SOCKET
+#endif
+
+ /* Set some extra bits not defined in the API documentation.
+ * These bits may change without further notice. */
+#if defined(MG_LEGACY_INTERFACE)
+ | 0x80000000u
+#endif
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+ | 0x40000000u
+#endif
+#if !defined(NO_RESPONSE_BUFFERING)
+ | 0x20000000u
+#endif
+#if defined(MEMORY_DEBUGGING)
+ | 0x10000000u
+#endif
+ ;
+ return (feature & feature_set);
+}
+
+
+static size_t
+mg_str_append(char **dst, char *end, const char *src)
+{
+ size_t len = strlen(src);
+ if (*dst != end) {
+ /* Append src if enough space, or close dst. */
+ if ((size_t)(end - *dst) > len) {
+ strcpy(*dst, src);
+ *dst += len;
+ } else {
+ *dst = end;
+ }
+ }
+ return len;
+}
+
+
+/* Get system information. It can be printed or stored by the caller.
+ * Return the size of available information. */
+CIVETWEB_API int
+mg_get_system_info(char *buffer, int buflen)
+{
+ char *end, *append_eoobj = NULL, block[256];
+ size_t system_info_length = 0;
+
+#if defined(_WIN32)
+ static const char eol[] = "\r\n", eoobj[] = "\r\n}\r\n";
+#else
+ static const char eol[] = "\n", eoobj[] = "\n}\n";
+#endif
+
+ if ((buffer == NULL) || (buflen < 1)) {
+ buflen = 0;
+ end = buffer;
+ } else {
+ *buffer = 0;
+ end = buffer + buflen;
+ }
+ if (buflen > (int)(sizeof(eoobj) - 1)) {
+ /* has enough space to append eoobj */
+ append_eoobj = buffer;
+ if (end) {
+ end -= sizeof(eoobj) - 1;
+ }
+ }
+
+ system_info_length += mg_str_append(&buffer, end, "{");
+
+ /* Server version */
+ {
+ const char *version = mg_version();
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s\"version\" : \"%s\"",
+ eol,
+ version);
+ system_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* System info */
+ {
+#if defined(_WIN32)
+ DWORD dwVersion = 0;
+ DWORD dwMajorVersion = 0;
+ DWORD dwMinorVersion = 0;
+ SYSTEM_INFO si;
+
+ GetSystemInfo(&si);
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+ /* GetVersion was declared deprecated */
+#pragma warning(disable : 4996)
+#endif
+ dwVersion = GetVersion();
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+ dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
+ dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"os\" : \"Windows %u.%u\"",
+ eol,
+ (unsigned)dwMajorVersion,
+ (unsigned)dwMinorVersion);
+ system_info_length += mg_str_append(&buffer, end, block);
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"cpu\" : \"type %u, cores %u, mask %x\"",
+ eol,
+ (unsigned)si.wProcessorArchitecture,
+ (unsigned)si.dwNumberOfProcessors,
+ (unsigned)si.dwActiveProcessorMask);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__rtems__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"os\" : \"%s %s\"",
+ eol,
+ "RTEMS",
+ rtems_version());
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__ZEPHYR__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"os\" : \"%s\"",
+ eol,
+ "Zephyr OS",
+ ZEPHYR_VERSION);
+ system_info_length += mg_str_append(&buffer, end, block);
+#else
+ struct utsname name;
+ memset(&name, 0, sizeof(name));
+ uname(&name);
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"os\" : \"%s %s (%s) - %s\"",
+ eol,
+ name.sysname,
+ name.version,
+ name.release,
+ name.machine);
+ system_info_length += mg_str_append(&buffer, end, block);
+#endif
+ }
+
+ /* Features */
+ {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"features\" : %lu"
+ ",%s\"feature_list\" : \"Server:%s%s%s%s%s%s%s%s%s\"",
+ eol,
+ (unsigned long)mg_check_feature(0xFFFFFFFFu),
+ eol,
+ mg_check_feature(MG_FEATURES_FILES) ? " Files" : "",
+ mg_check_feature(MG_FEATURES_SSL) ? " HTTPS" : "",
+ mg_check_feature(MG_FEATURES_CGI) ? " CGI" : "",
+ mg_check_feature(MG_FEATURES_IPV6) ? " IPv6" : "",
+ mg_check_feature(MG_FEATURES_WEBSOCKET) ? " WebSockets"
+ : "",
+ mg_check_feature(MG_FEATURES_LUA) ? " Lua" : "",
+ mg_check_feature(MG_FEATURES_SSJS) ? " JavaScript" : "",
+ mg_check_feature(MG_FEATURES_CACHE) ? " Cache" : "",
+ mg_check_feature(MG_FEATURES_STATS) ? " Stats" : "");
+ system_info_length += mg_str_append(&buffer, end, block);
+
+#if defined(USE_LUA)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"lua_version\" : \"%u (%s)\"",
+ eol,
+ (unsigned)LUA_VERSION_NUM,
+ LUA_RELEASE);
+ system_info_length += mg_str_append(&buffer, end, block);
+#endif
+#if defined(USE_DUKTAPE)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"javascript\" : \"Duktape %u.%u.%u\"",
+ eol,
+ (unsigned)DUK_VERSION / 10000,
+ ((unsigned)DUK_VERSION / 100) % 100,
+ (unsigned)DUK_VERSION % 100);
+ system_info_length += mg_str_append(&buffer, end, block);
+#endif
+ }
+
+ /* Build identifier. If BUILD_DATE is not set, __DATE__ will be used. */
+ {
+#if defined(BUILD_DATE)
+ const char *bd = BUILD_DATE;
+#else
+#if defined(GCC_DIAGNOSTIC)
+#if GCC_VERSION >= 40900
+#pragma GCC diagnostic push
+ /* Disable idiotic compiler warning -Wdate-time, appeared in gcc5. This
+ * does not work in some versions. If "BUILD_DATE" is defined to some
+ * string, it is used instead of __DATE__. */
+#pragma GCC diagnostic ignored "-Wdate-time"
+#endif
+#endif
+ const char *bd = __DATE__;
+#if defined(GCC_DIAGNOSTIC)
+#if GCC_VERSION >= 40900
+#pragma GCC diagnostic pop
+#endif
+#endif
+#endif
+
+ mg_snprintf(
+ NULL, NULL, block, sizeof(block), ",%s\"build\" : \"%s\"", eol, bd);
+
+ system_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Compiler information */
+ /* http://sourceforge.net/p/predef/wiki/Compilers/ */
+ {
+#if defined(_MSC_VER)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"MSC: %u (%u)\"",
+ eol,
+ (unsigned)_MSC_VER,
+ (unsigned)_MSC_FULL_VER);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__MINGW64__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"MinGW64: %u.%u\"",
+ eol,
+ (unsigned)__MINGW64_VERSION_MAJOR,
+ (unsigned)__MINGW64_VERSION_MINOR);
+ system_info_length += mg_str_append(&buffer, end, block);
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"MinGW32: %u.%u\"",
+ eol,
+ (unsigned)__MINGW32_MAJOR_VERSION,
+ (unsigned)__MINGW32_MINOR_VERSION);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__MINGW32__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"MinGW32: %u.%u\"",
+ eol,
+ (unsigned)__MINGW32_MAJOR_VERSION,
+ (unsigned)__MINGW32_MINOR_VERSION);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__clang__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"clang: %u.%u.%u (%s)\"",
+ eol,
+ __clang_major__,
+ __clang_minor__,
+ __clang_patchlevel__,
+ __clang_version__);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__GNUC__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"gcc: %u.%u.%u\"",
+ eol,
+ (unsigned)__GNUC__,
+ (unsigned)__GNUC_MINOR__,
+ (unsigned)__GNUC_PATCHLEVEL__);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__INTEL_COMPILER)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"Intel C/C++: %u\"",
+ eol,
+ (unsigned)__INTEL_COMPILER);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__BORLANDC__)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"Borland C: 0x%x\"",
+ eol,
+ (unsigned)__BORLANDC__);
+ system_info_length += mg_str_append(&buffer, end, block);
+#elif defined(__SUNPRO_C)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"Solaris: 0x%x\"",
+ eol,
+ (unsigned)__SUNPRO_C);
+ system_info_length += mg_str_append(&buffer, end, block);
+#else
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"compiler\" : \"other\"",
+ eol);
+ system_info_length += mg_str_append(&buffer, end, block);
+#endif
+ }
+
+ /* Determine 32/64 bit data mode.
+ * see https://en.wikipedia.org/wiki/64-bit_computing */
+ {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"data_model\" : \"int:%u/%u/%u/%u, float:%u/%u/%u, "
+ "char:%u/%u, "
+ "ptr:%u, size:%u, time:%u\"",
+ eol,
+ (unsigned)sizeof(short),
+ (unsigned)sizeof(int),
+ (unsigned)sizeof(long),
+ (unsigned)sizeof(long long),
+ (unsigned)sizeof(float),
+ (unsigned)sizeof(double),
+ (unsigned)sizeof(long double),
+ (unsigned)sizeof(char),
+ (unsigned)sizeof(wchar_t),
+ (unsigned)sizeof(void *),
+ (unsigned)sizeof(size_t),
+ (unsigned)sizeof(time_t));
+ system_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Terminate string */
+ if (append_eoobj) {
+ strcat(append_eoobj, eoobj);
+ }
+ system_info_length += sizeof(eoobj) - 1;
+
+ return (int)system_info_length;
+}
+
+
+/* Get context information. It can be printed or stored by the caller.
+ * Return the size of available information. */
+CIVETWEB_API int
+mg_get_context_info(const struct mg_context *ctx, char *buffer, int buflen)
+{
+#if defined(USE_SERVER_STATS)
+ char *end, *append_eoobj = NULL, block[256];
+ size_t context_info_length = 0;
+
+#if defined(_WIN32)
+ static const char eol[] = "\r\n", eoobj[] = "\r\n}\r\n";
+#else
+ static const char eol[] = "\n", eoobj[] = "\n}\n";
+#endif
+ struct mg_memory_stat *ms = get_memory_stat((struct mg_context *)ctx);
+
+ if ((buffer == NULL) || (buflen < 1)) {
+ buflen = 0;
+ end = buffer;
+ } else {
+ *buffer = 0;
+ end = buffer + buflen;
+ }
+ if (buflen > (int)(sizeof(eoobj) - 1)) {
+ /* has enough space to append eoobj */
+ append_eoobj = buffer;
+ end -= sizeof(eoobj) - 1;
+ }
+
+ context_info_length += mg_str_append(&buffer, end, "{");
+
+ if (ms) { /* <-- should be always true */
+ /* Memory information */
+ int blockCount = (int)ms->blockCount;
+ int64_t totalMemUsed = ms->totalMemUsed;
+ int64_t maxMemUsed = ms->maxMemUsed;
+ if (totalMemUsed > maxMemUsed) {
+ maxMemUsed = totalMemUsed;
+ }
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s\"memory\" : {%s"
+ "\"blocks\" : %i,%s"
+ "\"used\" : %" INT64_FMT ",%s"
+ "\"maxUsed\" : %" INT64_FMT "%s"
+ "}",
+ eol,
+ eol,
+ blockCount,
+ eol,
+ totalMemUsed,
+ eol,
+ maxMemUsed,
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ if (ctx) {
+ /* Declare all variables at begin of the block, to comply
+ * with old C standards. */
+ char start_time_str[64] = {0};
+ char now_str[64] = {0};
+ time_t start_time = ctx->start_time;
+ time_t now = time(NULL);
+ int64_t total_data_read, total_data_written;
+ int active_connections = (int)ctx->active_connections;
+ int max_active_connections = (int)ctx->max_active_connections;
+ int total_connections = (int)ctx->total_connections;
+ if (active_connections > max_active_connections) {
+ max_active_connections = active_connections;
+ }
+ if (active_connections > total_connections) {
+ total_connections = active_connections;
+ }
+
+ /* Connections information */
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"connections\" : {%s"
+ "\"active\" : %i,%s"
+ "\"maxActive\" : %i,%s"
+ "\"total\" : %i%s"
+ "}",
+ eol,
+ eol,
+ active_connections,
+ eol,
+ max_active_connections,
+ eol,
+ total_connections,
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+
+ /* Queue information */
+#if !defined(ALTERNATIVE_QUEUE)
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"queue\" : {%s"
+ "\"length\" : %i,%s"
+ "\"filled\" : %i,%s"
+ "\"maxFilled\" : %i,%s"
+ "\"full\" : %s%s"
+ "}",
+ eol,
+ eol,
+ ctx->sq_size,
+ eol,
+ ctx->sq_head - ctx->sq_tail,
+ eol,
+ ctx->sq_max_fill,
+ eol,
+ (ctx->sq_blocked ? "true" : "false"),
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+#endif
+
+ /* Requests information */
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"requests\" : {%s"
+ "\"total\" : %lu%s"
+ "}",
+ eol,
+ eol,
+ (unsigned long)ctx->total_requests,
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+
+ /* Data information */
+ total_data_read =
+ mg_atomic_add64((volatile int64_t *)&ctx->total_data_read, 0);
+ total_data_written =
+ mg_atomic_add64((volatile int64_t *)&ctx->total_data_written, 0);
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"data\" : {%s"
+ "\"read\" : %" INT64_FMT ",%s"
+ "\"written\" : %" INT64_FMT "%s"
+ "}",
+ eol,
+ eol,
+ total_data_read,
+ eol,
+ total_data_written,
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+
+ /* Execution time information */
+ gmt_time_string(start_time_str,
+ sizeof(start_time_str) - 1,
+ &start_time);
+ gmt_time_string(now_str, sizeof(now_str) - 1, &now);
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ ",%s\"time\" : {%s"
+ "\"uptime\" : %.0f,%s"
+ "\"start\" : \"%s\",%s"
+ "\"now\" : \"%s\"%s"
+ "}",
+ eol,
+ eol,
+ difftime(now, start_time),
+ eol,
+ start_time_str,
+ eol,
+ now_str,
+ eol);
+ context_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Terminate string */
+ if (append_eoobj) {
+ strcat(append_eoobj, eoobj);
+ }
+ context_info_length += sizeof(eoobj) - 1;
+
+ return (int)context_info_length;
+#else
+ (void)ctx;
+ if ((buffer != NULL) && (buflen > 0)) {
+ *buffer = 0;
+ }
+ return 0;
+#endif
+}
+
+
+CIVETWEB_API void
+mg_disable_connection_keep_alive(struct mg_connection *conn)
+{
+ /* https://github.com/civetweb/civetweb/issues/727 */
+ if (conn != NULL) {
+ conn->must_close = 1;
+ }
+}
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+/* Get connection information. It can be printed or stored by the caller.
+ * Return the size of available information. */
+CIVETWEB_API int
+mg_get_connection_info(const struct mg_context *ctx,
+ int idx,
+ char *buffer,
+ int buflen)
+{
+ const struct mg_connection *conn;
+ const struct mg_request_info *ri;
+ char *end, *append_eoobj = NULL, block[256];
+ size_t connection_info_length = 0;
+ int state = 0;
+ const char *state_str = "unknown";
+
+#if defined(_WIN32)
+ static const char eol[] = "\r\n", eoobj[] = "\r\n}\r\n";
+#else
+ static const char eol[] = "\n", eoobj[] = "\n}\n";
+#endif
+
+ if ((buffer == NULL) || (buflen < 1)) {
+ buflen = 0;
+ end = buffer;
+ } else {
+ *buffer = 0;
+ end = buffer + buflen;
+ }
+ if (buflen > (int)(sizeof(eoobj) - 1)) {
+ /* has enough space to append eoobj */
+ append_eoobj = buffer;
+ end -= sizeof(eoobj) - 1;
+ }
+
+ if ((ctx == NULL) || (idx < 0)) {
+ /* Parameter error */
+ return 0;
+ }
+
+ if ((unsigned)idx >= ctx->cfg_max_worker_threads) {
+ /* Out of range */
+ return 0;
+ }
+
+ /* Take connection [idx]. This connection is not locked in
+ * any way, so some other thread might use it. */
+ conn = (ctx->worker_connections) + idx;
+
+ /* Initialize output string */
+ connection_info_length += mg_str_append(&buffer, end, "{");
+
+ /* Init variables */
+ ri = &(conn->request_info);
+
+#if defined(USE_SERVER_STATS)
+ state = conn->conn_state;
+
+ /* State as string */
+ switch (state) {
+ case 0:
+ state_str = "undefined";
+ break;
+ case 1:
+ state_str = "not used";
+ break;
+ case 2:
+ state_str = "init";
+ break;
+ case 3:
+ state_str = "ready";
+ break;
+ case 4:
+ state_str = "processing";
+ break;
+ case 5:
+ state_str = "processed";
+ break;
+ case 6:
+ state_str = "to close";
+ break;
+ case 7:
+ state_str = "closing";
+ break;
+ case 8:
+ state_str = "closed";
+ break;
+ case 9:
+ state_str = "done";
+ break;
+ }
+#endif
+
+ /* Connection info */
+ if ((state >= 3) && (state < 9)) {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s\"connection\" : {%s"
+ "\"remote\" : {%s"
+ "\"protocol\" : \"%s\",%s"
+ "\"addr\" : \"%s\",%s"
+ "\"port\" : %u%s"
+ "},%s"
+ "\"handled_requests\" : %u%s"
+ "}",
+ eol,
+ eol,
+ eol,
+ get_proto_name(conn),
+ eol,
+ ri->remote_addr,
+ eol,
+ ri->remote_port,
+ eol,
+ eol,
+ conn->handled_requests,
+ eol);
+ connection_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Request info */
+ if ((state >= 4) && (state < 6)) {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s%s\"request_info\" : {%s"
+ "\"method\" : \"%s\",%s"
+ "\"uri\" : \"%s\",%s"
+ "\"query\" : %s%s%s%s"
+ "}",
+ (connection_info_length > 1 ? "," : ""),
+ eol,
+ eol,
+ ri->request_method,
+ eol,
+ ri->request_uri,
+ eol,
+ ri->query_string ? "\"" : "",
+ ri->query_string ? ri->query_string : "null",
+ ri->query_string ? "\"" : "",
+ eol);
+ connection_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Execution time information */
+ if ((state >= 2) && (state < 9)) {
+ char start_time_str[64] = {0};
+ char close_time_str[64] = {0};
+ time_t start_time = conn->conn_birth_time;
+ time_t close_time = 0;
+ double time_diff;
+
+ gmt_time_string(start_time_str,
+ sizeof(start_time_str) - 1,
+ &start_time);
+#if defined(USE_SERVER_STATS)
+ close_time = conn->conn_close_time;
+#endif
+ if (close_time != 0) {
+ time_diff = difftime(close_time, start_time);
+ gmt_time_string(close_time_str,
+ sizeof(close_time_str) - 1,
+ &close_time);
+ } else {
+ time_t now = time(NULL);
+ time_diff = difftime(now, start_time);
+ close_time_str[0] = 0; /* or use "now" ? */
+ }
+
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s%s\"time\" : {%s"
+ "\"uptime\" : %.0f,%s"
+ "\"start\" : \"%s\",%s"
+ "\"closed\" : \"%s\"%s"
+ "}",
+ (connection_info_length > 1 ? "," : ""),
+ eol,
+ eol,
+ time_diff,
+ eol,
+ start_time_str,
+ eol,
+ close_time_str,
+ eol);
+ connection_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Remote user name */
+ if ((ri->remote_user) && (state < 9)) {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s%s\"user\" : {%s"
+ "\"name\" : \"%s\",%s"
+ "}",
+ (connection_info_length > 1 ? "," : ""),
+ eol,
+ eol,
+ ri->remote_user,
+ eol);
+ connection_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* Data block */
+ if (state >= 3) {
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s%s\"data\" : {%s"
+ "\"read\" : %" INT64_FMT ",%s"
+ "\"written\" : %" INT64_FMT "%s"
+ "}",
+ (connection_info_length > 1 ? "," : ""),
+ eol,
+ eol,
+ conn->consumed_content,
+ eol,
+ conn->num_bytes_sent,
+ eol);
+ connection_info_length += mg_str_append(&buffer, end, block);
+ }
+
+ /* State */
+ mg_snprintf(NULL,
+ NULL,
+ block,
+ sizeof(block),
+ "%s%s\"state\" : \"%s\"",
+ (connection_info_length > 1 ? "," : ""),
+ eol,
+ state_str);
+ connection_info_length += mg_str_append(&buffer, end, block);
+
+ /* Terminate string */
+ if (append_eoobj) {
+ strcat(append_eoobj, eoobj);
+ }
+ connection_info_length += sizeof(eoobj) - 1;
+
+ return (int)connection_info_length;
+}
+
+
+#if 0
+/* Get handler information. Not fully implemented. Is it required? */
+CIVETWEB_API int
+mg_get_handler_info(struct mg_context *ctx,
+ char *buffer,
+ int buflen)
+{
+ int handler_info_len = 0;
+ struct mg_handler_info *tmp_rh;
+ mg_lock_context(ctx);
+
+ for (tmp_rh = ctx->dd.handlers; tmp_rh != NULL; tmp_rh = tmp_rh->next) {
+
+ if (buflen > handler_info_len + tmp_rh->uri_len) {
+ memcpy(buffer + handler_info_len, tmp_rh->uri, tmp_rh->uri_len);
+ }
+ handler_info_len += tmp_rh->uri_len;
+
+ switch (tmp_rh->handler_type) {
+ case REQUEST_HANDLER:
+ (void)tmp_rh->handler;
+ break;
+ case WEBSOCKET_HANDLER:
+ (void)tmp_rh->connect_handler;
+ (void)tmp_rh->ready_handler;
+ (void)tmp_rh->data_handler;
+ (void)tmp_rh->close_handler;
+ break;
+ case AUTH_HANDLER:
+ (void)tmp_rh->auth_handler;
+ break;
+ }
+ (void)cbdata;
+ }
+
+ mg_unlock_context(ctx);
+ return handler_info_len;
+}
+#endif
+#endif
+
+
+/* Initialize this library. This function does not need to be thread safe.
+ */
+CIVETWEB_API unsigned
+mg_init_library(unsigned features)
+{
+ unsigned features_to_init = mg_check_feature(features & 0xFFu);
+ unsigned features_inited = features_to_init;
+
+ if (mg_init_library_called <= 0) {
+ /* Not initialized yet */
+ if (0 != pthread_mutex_init(&global_lock_mutex, NULL)) {
+ return 0;
+ }
+ }
+
+ mg_global_lock();
+
+ if (mg_init_library_called <= 0) {
+ int i;
+ size_t len;
+
+#if defined(_WIN32)
+ int file_mutex_init = 1;
+ int wsa = 1;
+#else
+ int mutexattr_init = 1;
+#endif
+ int failed = 1;
+ int key_create = pthread_key_create(&sTlsKey, tls_dtor);
+
+ if (key_create == 0) {
+#if defined(_WIN32)
+ file_mutex_init =
+ pthread_mutex_init(&global_log_file_lock, &pthread_mutex_attr);
+ if (file_mutex_init == 0) {
+ /* Start WinSock */
+ WSADATA data;
+ failed = wsa = WSAStartup(MAKEWORD(2, 2), &data);
+ }
+#else
+ mutexattr_init = pthread_mutexattr_init(&pthread_mutex_attr);
+ if (mutexattr_init == 0) {
+ failed = pthread_mutexattr_settype(&pthread_mutex_attr,
+ PTHREAD_MUTEX_RECURSIVE);
+ }
+#endif
+ }
+
+ if (failed) {
+#if defined(_WIN32)
+ if (wsa == 0) {
+ (void)WSACleanup();
+ }
+ if (file_mutex_init == 0) {
+ (void)pthread_mutex_destroy(&global_log_file_lock);
+ }
+#else
+ if (mutexattr_init == 0) {
+ (void)pthread_mutexattr_destroy(&pthread_mutex_attr);
+ }
+#endif
+ if (key_create == 0) {
+ (void)pthread_key_delete(sTlsKey);
+ }
+ mg_global_unlock();
+ (void)pthread_mutex_destroy(&global_lock_mutex);
+ return 0;
+ }
+
+ len = 1;
+ for (i = 0; http_methods[i].name != NULL; i++) {
+ size_t sl = strlen(http_methods[i].name);
+ len += sl;
+ if (i > 0) {
+ len += 2;
+ }
+ }
+ all_methods = (char *)mg_malloc(len);
+ if (!all_methods) {
+ /* Must never happen */
+ mg_global_unlock();
+ (void)pthread_mutex_destroy(&global_lock_mutex);
+ return 0;
+ }
+ all_methods[0] = 0;
+ for (i = 0; http_methods[i].name != NULL; i++) {
+ if (i > 0) {
+ strcat(all_methods, ", ");
+ strcat(all_methods, http_methods[i].name);
+ } else {
+ strcpy(all_methods, http_methods[i].name);
+ }
+ }
+ }
+
+#if defined(USE_LUA)
+ lua_init_optional_libraries();
+#endif
+
+#if (defined(OPENSSL_API_1_0) || defined(OPENSSL_API_1_1) \
+ || defined(OPENSSL_API_3_0)) \
+ && !defined(NO_SSL)
+
+ if (features_to_init & MG_FEATURES_SSL) {
+ if (!mg_openssl_initialized) {
+ char ebuf[128];
+ if (initialize_openssl(ebuf, sizeof(ebuf))) {
+ mg_openssl_initialized = 1;
+ } else {
+ (void)ebuf;
+ DEBUG_TRACE("Initializing SSL failed: %s", ebuf);
+ features_inited &= ~((unsigned)(MG_FEATURES_SSL));
+ }
+ } else {
+ /* ssl already initialized */
+ }
+ }
+
+#endif
+
+ if (mg_init_library_called <= 0) {
+ mg_init_library_called = 1;
+ } else {
+ mg_init_library_called++;
+ }
+ mg_global_unlock();
+
+ return features_inited;
+}
+
+
+/* Un-initialize this library. */
+CIVETWEB_API unsigned
+mg_exit_library(void)
+{
+ if (mg_init_library_called <= 0) {
+ return 0;
+ }
+
+ mg_global_lock();
+
+ mg_init_library_called--;
+ if (mg_init_library_called == 0) {
+#if (defined(OPENSSL_API_1_0) || defined(OPENSSL_API_1_1)) && !defined(NO_SSL)
+ if (mg_openssl_initialized) {
+ uninitialize_openssl();
+ mg_openssl_initialized = 0;
+ }
+#endif
+
+#if defined(_WIN32)
+ (void)WSACleanup();
+ (void)pthread_mutex_destroy(&global_log_file_lock);
+#else
+ (void)pthread_mutexattr_destroy(&pthread_mutex_attr);
+#endif
+
+ (void)pthread_key_delete(sTlsKey);
+
+#if defined(USE_LUA)
+ lua_exit_optional_libraries();
+#endif
+ mg_free(all_methods);
+ all_methods = NULL;
+
+ mg_global_unlock();
+ (void)pthread_mutex_destroy(&global_lock_mutex);
+ return 1;
+ }
+
+ mg_global_unlock();
+ return 1;
+}
+
+
+/* End of civetweb.c */
diff --git a/v2/webui/src/civetweb/civetweb.h b/v2/webui/src/civetweb/civetweb.h
new file mode 100644
index 0000000..55bef0a
--- /dev/null
+++ b/v2/webui/src/civetweb/civetweb.h
@@ -0,0 +1,1844 @@
+// Disable All Warnings
+#ifdef _MSC_VER
+#pragma warning(push, 0)
+#pragma warning(disable: 4996)
+#elif defined(__clang__)
+#pragma clang system_header
+#elif defined(__GNUC__)
+#pragma GCC system_header
+#endif
+
+/* Copyright (c) 2013-2024 the Civetweb developers
+ * Copyright (c) 2004-2013 Sergey Lyubka
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef CIVETWEB_HEADER_INCLUDED
+#define CIVETWEB_HEADER_INCLUDED
+
+#define CIVETWEB_VERSION "1.17"
+#define CIVETWEB_VERSION_MAJOR (1)
+#define CIVETWEB_VERSION_MINOR (17)
+#define CIVETWEB_VERSION_PATCH (0)
+
+#ifndef CIVETWEB_API
+#if defined(_WIN32)
+#if defined(CIVETWEB_DLL_EXPORTS)
+#define CIVETWEB_API __declspec(dllexport)
+#elif defined(CIVETWEB_DLL_IMPORTS)
+#define CIVETWEB_API __declspec(dllimport)
+#else
+#define CIVETWEB_API
+#endif
+#elif __GNUC__ >= 4
+#define CIVETWEB_API __attribute__((visibility("default")))
+#else
+#define CIVETWEB_API
+#endif
+#endif
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/* Init Features */
+enum {
+ MG_FEATURES_DEFAULT = 0x0u,
+
+ /* Support files from local directories */
+ /* Will only work, if NO_FILES is not set. */
+ MG_FEATURES_FILES = 0x1u,
+
+ /* Support transport layer security (TLS). */
+ /* SSL is still often used synonymously for TLS. */
+ /* Will only work, if NO_SSL is not set. */
+ MG_FEATURES_TLS = 0x2u,
+ MG_FEATURES_SSL = 0x2u,
+
+ /* Support common gateway interface (CGI). */
+ /* Will only work, if NO_CGI is not set. */
+ MG_FEATURES_CGI = 0x4u,
+
+ /* Support IPv6. */
+ /* Will only work, if USE_IPV6 is set. */
+ MG_FEATURES_IPV6 = 0x8u,
+
+ /* Support WebSocket protocol. */
+ /* Will only work, if USE_WEBSOCKET is set. */
+ MG_FEATURES_WEBSOCKET = 0x10u,
+
+ /* Support server side Lua scripting. */
+ /* Will only work, if USE_LUA is set. */
+ MG_FEATURES_LUA = 0x20u,
+
+ /* Support server side JavaScript scripting. */
+ /* Will only work, if USE_DUKTAPE is set. */
+ MG_FEATURES_SSJS = 0x40u,
+
+ /* Provide data required for caching files. */
+ /* Will only work, if NO_CACHING is not set. */
+ MG_FEATURES_CACHE = 0x80u,
+
+ /* Collect server status information. */
+ /* Will only work, if USE_SERVER_STATS is set. */
+ MG_FEATURES_STATS = 0x100u,
+
+ /* Support on-the-fly compression. */
+ /* Will only work, if USE_ZLIB is set. */
+ MG_FEATURES_COMPRESSION = 0x200u,
+
+ /* HTTP/2 support enabled. */
+ MG_FEATURES_HTTP2 = 0x400u,
+
+ /* Support unix domain sockets. */
+ MG_FEATURES_X_DOMAIN_SOCKET = 0x800u,
+
+ /* Bit mask for all feature defines. */
+ MG_FEATURES_ALL = 0xFFFFu
+};
+
+
+/* Initialize this library. This should be called once before any other
+ * function from this library. This function is not guaranteed to be
+ * thread safe.
+ * Parameters:
+ * features: bit mask for features to be initialized.
+ * Note: The TLS libraries (like OpenSSL) is initialized
+ * only if the MG_FEATURES_TLS bit is set.
+ * Currently the other bits do not influence
+ * initialization, but this may change in future
+ * versions.
+ * Return value:
+ * initialized features
+ * 0: error
+ */
+CIVETWEB_API unsigned mg_init_library(unsigned features);
+
+
+/* Un-initialize this library.
+ * Return value:
+ * 0: error
+ */
+CIVETWEB_API unsigned mg_exit_library(void);
+
+
+struct mg_context; /* Handle for the HTTP service itself */
+struct mg_connection; /* Handle for the individual connection */
+
+
+/* Maximum number of headers */
+#define MG_MAX_HEADERS (64)
+
+struct mg_header {
+ const char *name; /* HTTP header name */
+ const char *value; /* HTTP header value */
+};
+
+
+/* This structure contains information about the HTTP request. */
+struct mg_request_info {
+ const char *request_method; /* "GET", "POST", etc */
+ const char *request_uri; /* URL-decoded URI (absolute or relative,
+ * as in the request) */
+ const char *local_uri_raw; /* URL-decoded URI (relative). Can be NULL
+ * if the request_uri does not address a
+ * resource at the server host. */
+ const char *local_uri; /* Same as local_uri_raw, however, cleaned
+ * so a path like
+ * allowed_dir/../forbidden_file
+ * is not possible. */
+ const char *http_version; /* E.g. "1.0", "1.1" */
+ const char *query_string; /* URL part after '?', not including '?', or
+ NULL */
+ const char *remote_user; /* Authenticated user, or NULL if no auth
+ used */
+ char remote_addr[48]; /* Client's IP address as a string. */
+ char server_addr[48]; /* Server's IP address as a string. */
+
+ long long content_length; /* Length (in bytes) of the request body,
+ can be -1 if no length was given. */
+ int remote_port; /* Port at client side */
+ int server_port; /* Port at server side (one of the listening
+ ports) */
+ int is_ssl; /* 1 if HTTPS or WS is used (SSL/TLS used),
+ 0 if not */
+ void *user_data; /* User data pointer passed to mg_start() */
+ void *conn_data; /* Connection-specific user data */
+
+ int num_headers; /* Number of HTTP headers */
+ struct mg_header
+ http_headers[MG_MAX_HEADERS]; /* Allocate maximum headers */
+
+ struct mg_client_cert *client_cert; /* Client certificate information */
+
+ const char *acceptedWebSocketSubprotocol; /* websocket subprotocol,
+ * accepted during handshake */
+};
+
+
+/* This structure contains information about the HTTP request. */
+/* This structure may be extended in future versions. */
+struct mg_response_info {
+ int status_code; /* E.g. 200 */
+ const char *status_text; /* E.g. "OK" */
+ const char *http_version; /* E.g. "1.0", "1.1" */
+
+ long long content_length; /* Length (in bytes) of the request body,
+ can be -1 if no length was given. */
+
+ int num_headers; /* Number of HTTP headers */
+ struct mg_header
+ http_headers[MG_MAX_HEADERS]; /* Allocate maximum headers */
+};
+
+
+/* Client certificate information (part of mg_request_info) */
+struct mg_client_cert {
+ void *peer_cert;
+ const char *subject;
+ const char *issuer;
+ const char *serial;
+ const char *finger;
+};
+
+
+/* This structure needs to be passed to mg_start(), to let civetweb know
+ which callbacks to invoke. For a detailed description, see
+ https://github.com/civetweb/civetweb/blob/master/docs/UserManual.md */
+struct mg_callbacks {
+ /* Called when civetweb has received new HTTP request.
+ If the callback returns one, it must process the request
+ by sending valid HTTP headers and a body. Civetweb will not do
+ any further processing. Otherwise it must return zero.
+ Note that since V1.7 the "begin_request" function is called
+ before an authorization check. If an authorization check is
+ required, use a request_handler instead.
+ Return value:
+ 0: civetweb will process the request itself. In this case,
+ the callback must not send any data to the client.
+ 1-999: callback already processed the request. Civetweb will
+ not send any data after the callback returned. The
+ return code is stored as a HTTP status code for the
+ access log. */
+ int (*begin_request)(struct mg_connection *);
+
+ /* Called when civetweb has finished processing request. */
+ void (*end_request)(const struct mg_connection *, int reply_status_code);
+
+ /* Called when civetweb is about to log a message. If callback returns
+ non-zero, civetweb does not log anything. */
+ int (*log_message)(const struct mg_connection *, const char *message);
+
+ /* Called when civetweb is about to log access. If callback returns
+ non-zero, civetweb does not log anything. */
+ int (*log_access)(const struct mg_connection *, const char *message);
+
+ /* Called when civetweb initializes SSL library.
+ Parameters:
+ ssl_ctx: SSL_CTX pointer.
+ user_data: parameter user_data passed when starting the server.
+ Return value:
+ 0: civetweb will set up the SSL certificate.
+ 1: civetweb assumes the callback already set up the certificate.
+ -1: initializing ssl fails. */
+ int (*init_ssl)(void *ssl_ctx, void *user_data);
+
+ /* Called when civetweb initializes SSL library for a domain.
+ Parameters:
+ server_domain: authentication_domain from the domain config.
+ ssl_ctx: SSL_CTX pointer.
+ user_data: parameter user_data passed when starting the server.
+ Return value:
+ 0: civetweb will set up the SSL certificate.
+ 1: civetweb assumes the callback already set up the certificate.
+ -1: initializing ssl fails. */
+ int (*init_ssl_domain)(const char *server_domain,
+ void *ssl_ctx,
+ void *user_data);
+
+ /* Called when civetweb is about to create or free a SSL_CTX.
+ Parameters:
+ ssl_ctx: SSL_CTX pointer. NULL at creation time, Not NULL when
+ mg_context will be freed user_data: parameter user_data passed when starting
+ the server. Return value: 0: civetweb will continue to create the context,
+ just as if the callback would not be present. The value in *ssl_ctx when the
+ function returns is ignored. 1: civetweb will copy the value from *ssl_ctx
+ to the civetweb context and doesn't create its own. -1: initializing ssl
+ fails.*/
+ int (*external_ssl_ctx)(void **ssl_ctx, void *user_data);
+
+ /* Called when civetweb is about to create or free a SSL_CTX for a domain.
+ Parameters:
+ server_domain: authentication_domain from the domain config.
+ ssl_ctx: SSL_CTX pointer. NULL at creation time, Not NULL when
+ mg_context will be freed user_data: parameter user_data passed when starting
+ the server. Return value: 0: civetweb will continue to create the context,
+ just as if the callback would not be present. The value in *ssl_ctx when the
+ function returns is ignored. 1: civetweb will copy the value from *ssl_ctx
+ to the civetweb context and doesn't create its own. -1: initializing ssl
+ fails.*/
+ int (*external_ssl_ctx_domain)(const char *server_domain,
+ void **ssl_ctx,
+ void *user_data);
+
+#if defined(MG_EXPERIMENTAL_INTERFACES) /* 2019-11-03 */
+ /* Called when data frame has been received from the peer.
+ Parameters:
+ bits: first byte of the websocket frame, see websocket RFC at
+ http://tools.ietf.org/html/rfc6455, section 5.2
+ data, data_len: payload, with mask (if any) already applied.
+ Return value:
+ 1: keep this websocket connection open.
+ 0: close this websocket connection.
+ This callback is deprecated: Use mg_set_websocket_handler instead. */
+ int (*websocket_data)(struct mg_connection *,
+ int bits,
+ char *data,
+ size_t data_len);
+#endif /* MG_LEGACY_INTERFACE */
+
+ /* Called when civetweb is closing a connection. The per-context mutex is
+ locked when this is invoked.
+
+ Websockets:
+ Before mg_set_websocket_handler has been added, it was primarily useful
+ for noting when a websocket is closing, and used to remove it from any
+ application-maintained list of clients.
+ Using this callback for websocket connections is deprecated: Use
+ mg_set_websocket_handler instead.
+ */
+ void (*connection_close)(const struct mg_connection *);
+
+ /* Called after civetweb has closed a connection. The per-context mutex is
+ locked when this is invoked.
+
+ Connection specific data:
+ If memory has been allocated for the connection specific user data
+ (mg_request_info->conn_data, mg_get_user_connection_data),
+ this is the last chance to free it.
+ */
+ void (*connection_closed)(const struct mg_connection *);
+
+
+ /* init_lua is called when civetweb is about to serve Lua server page.
+ exit_lua is called when the Lua processing is complete.
+ Both will work only if Lua support is enabled.
+ Parameters:
+ conn: current connection.
+ lua_context: "lua_State *" pointer.
+ context_flags: context type information as bitmask:
+ context_flags & 0x0F: (0-15) Lua environment type
+ */
+ void (*init_lua)(const struct mg_connection *conn,
+ void *lua_context,
+ unsigned context_flags);
+ void (*exit_lua)(const struct mg_connection *conn,
+ void *lua_context,
+ unsigned context_flags);
+
+
+ /* Called when civetweb is about to send HTTP error to the client.
+ Implementing this callback allows to create custom error pages.
+ Parameters:
+ conn: current connection.
+ status: HTTP error status code.
+ errmsg: error message text.
+ Return value:
+ 1: run civetweb error handler.
+ 0: callback already handled the error. */
+ int (*http_error)(struct mg_connection *conn,
+ int status,
+ const char *errmsg);
+
+ /* Called after civetweb context has been created, before requests
+ are processed.
+ Parameters:
+ ctx: context handle */
+ void (*init_context)(const struct mg_context *ctx);
+
+ /* Called when civetweb context is deleted.
+ Parameters:
+ ctx: context handle */
+ void (*exit_context)(const struct mg_context *ctx);
+
+ /* Called when a new worker thread is initialized.
+ * It is always called from the newly created thread and can be used to
+ * initialize thread local storage data.
+ * Parameters:
+ * ctx: context handle
+ * thread_type:
+ * 0 indicates the master thread
+ * 1 indicates a worker thread handling client connections
+ * 2 indicates an internal helper thread (timer thread)
+ * Return value:
+ * This function returns a user supplied pointer. The pointer is assigned
+ * to the thread and can be obtained from the mg_connection object using
+ * mg_get_thread_pointer in all server callbacks. Note: A connection and
+ * a thread are not directly related. Threads will serve several different
+ * connections, and data from a single connection may call different
+ * callbacks using different threads. The thread pointer can be obtained
+ * in a callback handler, but should not be stored beyond the scope of
+ * one call to one callback.
+ */
+ void *(*init_thread)(const struct mg_context *ctx, int thread_type);
+
+ /* Called when a worker exits.
+ * The parameters "ctx" and "thread_type" correspond to the "init_thread"
+ * call. The "thread_pointer" parameter is the value returned by
+ * "init_thread".
+ */
+ void (*exit_thread)(const struct mg_context *ctx,
+ int thread_type,
+ void *thread_pointer);
+
+ /* Called when initializing a new connection object.
+ * Can be used to initialize the connection specific user data
+ * (mg_request_info->conn_data, mg_get_user_connection_data).
+ * When the callback is called, it is not yet known if a
+ * valid HTTP(S) request will be made.
+ * Parameters:
+ * conn: not yet fully initialized connection object
+ * conn_data: output parameter, set to initialize the
+ * connection specific user data
+ * Return value:
+ * must be 0
+ * Otherwise, the result is undefined
+ */
+ int (*init_connection)(const struct mg_connection *conn, void **conn_data);
+};
+
+
+/* Start web server.
+
+ Parameters:
+ callbacks: mg_callbacks structure with user-defined callbacks.
+ options: NULL terminated list of option_name, option_value pairs that
+ specify Civetweb configuration parameters.
+
+ Side-effects: on UNIX, ignores SIGCHLD and SIGPIPE signals. If custom
+ processing is required for these, signal handlers must be set up
+ after calling mg_start().
+
+
+ Example:
+ const char *options[] = {
+ "document_root", "/var/www",
+ "listening_ports", "80,443s",
+ NULL
+ };
+ struct mg_context *ctx = mg_start(&my_func, NULL, options);
+
+ Refer to https://github.com/civetweb/civetweb/blob/master/docs/UserManual.md
+ for the list of valid option and their possible values.
+
+ Return:
+ web server context, or NULL on error. */
+CIVETWEB_API struct mg_context *mg_start(const struct mg_callbacks *callbacks,
+ void *user_data,
+ const char **configuration_options);
+
+
+/* Stop the web server.
+
+ Must be called last, when an application wants to stop the web server and
+ release all associated resources. This function blocks until all Civetweb
+ threads are stopped. Context pointer becomes invalid. */
+CIVETWEB_API void mg_stop(struct mg_context *);
+
+
+/* Add an additional domain to an already running web server.
+ *
+ * Parameters:
+ * ctx: Context handle of a server started by mg_start.
+ * options: NULL terminated list of option_name, option_value pairs that
+ * specify CivetWeb configuration parameters.
+ *
+ * Return:
+ * < 0 in case of an error
+ * -1 for a parameter error
+ * -2 invalid options
+ * -3 initializing SSL failed
+ * -4 mandatory domain option missing
+ * -5 duplicate domain
+ * -6 out of memory
+ * > 0 index / handle of a new domain
+ */
+CIVETWEB_API int mg_start_domain(struct mg_context *ctx,
+ const char **configuration_options);
+
+
+/* mg_request_handler
+
+ Called when a new request comes in. This callback is URI based
+ and configured with mg_set_request_handler().
+
+ Parameters:
+ conn: current connection information.
+ cbdata: the callback data configured with mg_set_request_handler().
+ Returns:
+ 0: the handler could not handle the request, so fall through.
+ 1 - 999: the handler processed the request. The return code is
+ stored as a HTTP status code for the access log. */
+typedef int (*mg_request_handler)(struct mg_connection *conn, void *cbdata);
+
+
+/* mg_set_request_handler
+
+ Sets or removes a URI mapping for a request handler.
+ This function waits until a removing/updating handler becomes unused, so
+ do not call from the handler itself.
+
+ URI's are ordered and prefixed URI's are supported. For example,
+ consider two URIs: /a/b and /a
+ /a matches /a
+ /a/b matches /a/b
+ /a/c matches /a
+
+ Parameters:
+ ctx: server context
+ uri: the URI (exact or pattern) for the handler
+ handler: the callback handler to use when the URI is requested.
+ If NULL, an already registered handler for this URI will
+ be removed.
+ The URI used to remove a handler must match exactly the
+ one used to register it (not only a pattern match).
+ cbdata: the callback data to give to the handler when it is called. */
+CIVETWEB_API void mg_set_request_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_request_handler handler,
+ void *cbdata);
+
+
+/* Callback types for websocket handlers in C/C++.
+
+ mg_websocket_connect_handler
+ Is called when the client intends to establish a websocket connection,
+ before websocket handshake.
+ Return value:
+ 0: civetweb proceeds with websocket handshake.
+ 1: connection is closed immediately.
+
+ mg_websocket_ready_handler
+ Is called when websocket handshake is successfully completed, and
+ connection is ready for data exchange.
+
+ mg_websocket_data_handler
+ Is called when a data frame has been received from the client.
+ Parameters:
+ bits: first byte of the websocket frame, see websocket RFC at
+ http://tools.ietf.org/html/rfc6455, section 5.2
+ data, data_len: payload, with mask (if any) already applied.
+ Return value:
+ 1: keep this websocket connection open.
+ 0: close this websocket connection.
+
+ mg_connection_close_handler
+ Is called, when the connection is closed.*/
+typedef int (*mg_websocket_connect_handler)(const struct mg_connection *,
+ void *);
+typedef void (*mg_websocket_ready_handler)(struct mg_connection *, void *);
+typedef int (*mg_websocket_data_handler)(struct mg_connection *,
+ int,
+ char *,
+ size_t,
+ void *);
+typedef void (*mg_websocket_close_handler)(const struct mg_connection *,
+ void *);
+
+/* struct mg_websocket_subprotocols
+ *
+ * List of accepted subprotocols
+ */
+struct mg_websocket_subprotocols {
+ int nb_subprotocols;
+ const char **subprotocols;
+};
+
+/* mg_set_websocket_handler
+
+ Set or remove handler functions for websocket connections.
+ This function works similar to mg_set_request_handler - see there. */
+CIVETWEB_API void
+mg_set_websocket_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_websocket_connect_handler connect_handler,
+ mg_websocket_ready_handler ready_handler,
+ mg_websocket_data_handler data_handler,
+ mg_websocket_close_handler close_handler,
+ void *cbdata);
+
+/* mg_set_websocket_handler
+
+ Set or remove handler functions for websocket connections.
+ This function works similar to mg_set_request_handler - see there. */
+CIVETWEB_API void mg_set_websocket_handler_with_subprotocols(
+ struct mg_context *ctx,
+ const char *uri,
+ struct mg_websocket_subprotocols *subprotocols,
+ mg_websocket_connect_handler connect_handler,
+ mg_websocket_ready_handler ready_handler,
+ mg_websocket_data_handler data_handler,
+ mg_websocket_close_handler close_handler,
+ void *cbdata);
+
+
+/* mg_authorization_handler
+
+ Callback function definition for mg_set_auth_handler
+
+ Parameters:
+ conn: current connection information.
+ cbdata: the callback data configured with mg_set_request_handler().
+ Returns:
+ 0: access denied
+ 1: access granted
+ */
+typedef int (*mg_authorization_handler)(struct mg_connection *conn,
+ void *cbdata);
+
+
+/* mg_set_auth_handler
+
+ Sets or removes a URI mapping for an authorization handler.
+ This function works similar to mg_set_request_handler - see there. */
+CIVETWEB_API void mg_set_auth_handler(struct mg_context *ctx,
+ const char *uri,
+ mg_authorization_handler handler,
+ void *cbdata);
+
+
+/* Get the value of particular configuration parameter.
+ The value returned is read-only. Civetweb does not allow changing
+ configuration at run time.
+ If given parameter name is not valid, NULL is returned. For valid
+ names, return value is guaranteed to be non-NULL. If parameter is not
+ set, zero-length string is returned. */
+CIVETWEB_API const char *mg_get_option(const struct mg_context *ctx,
+ const char *name);
+
+
+/* Get context from connection. */
+CIVETWEB_API struct mg_context *
+mg_get_context(const struct mg_connection *conn);
+
+
+/* Get user data passed to mg_start from context. */
+CIVETWEB_API void *mg_get_user_data(const struct mg_context *ctx);
+
+
+/* Get user data passed to mg_start from connection. */
+CIVETWEB_API void *mg_get_user_context_data(const struct mg_connection *conn);
+
+
+/* Get user defined thread pointer for server threads (see init_thread). */
+CIVETWEB_API void *mg_get_thread_pointer(const struct mg_connection *conn);
+
+
+/* Set user data for the current connection. */
+/* Note: CivetWeb callbacks use "struct mg_connection *conn" as input
+ when mg_read/mg_write callbacks are allowed in the callback,
+ while "const struct mg_connection *conn" is used as input in case
+ calling mg_read/mg_write is not allowed.
+ Setting the user connection data will modify the connection
+ object represented by mg_connection *, but it will not read from
+ or write to the connection. */
+/* Note: An alternative is to use the init_connection callback
+ instead to initialize the user connection data pointer. It is
+ recommended to supply a pointer to some user defined data structure
+ as conn_data initializer in init_connection. In case it is required
+ to change some data after the init_connection call, store another
+ data pointer in the user defined data structure and modify that
+ pointer. In either case, after the init_connection callback, only
+ calls to mg_get_user_connection_data should be required. */
+CIVETWEB_API void mg_set_user_connection_data(const struct mg_connection *conn,
+ void *data);
+
+
+/* Get user data set for the current connection. */
+CIVETWEB_API void *
+mg_get_user_connection_data(const struct mg_connection *conn);
+
+
+/* Get a formatted link corresponding to the current request
+
+ Parameters:
+ conn: current connection information.
+ buf: string buffer (out)
+ buflen: length of the string buffer
+ Returns:
+ <0: error
+ >=0: ok */
+CIVETWEB_API int
+mg_get_request_link(const struct mg_connection *conn, char *buf, size_t buflen);
+
+
+struct mg_option {
+ const char *name;
+ int type;
+ const char *default_value;
+};
+
+
+/* Configuration types */
+enum {
+ MG_CONFIG_TYPE_UNKNOWN = 0x0,
+ MG_CONFIG_TYPE_NUMBER = 0x1,
+ MG_CONFIG_TYPE_STRING = 0x2,
+ MG_CONFIG_TYPE_FILE = 0x3,
+ MG_CONFIG_TYPE_DIRECTORY = 0x4,
+ MG_CONFIG_TYPE_BOOLEAN = 0x5,
+ MG_CONFIG_TYPE_EXT_PATTERN = 0x6,
+ MG_CONFIG_TYPE_STRING_LIST = 0x7,
+ MG_CONFIG_TYPE_STRING_MULTILINE = 0x8,
+ MG_CONFIG_TYPE_YES_NO_OPTIONAL = 0x9
+};
+
+/* Return array of struct mg_option, representing all valid configuration
+ options of civetweb.c.
+ The array is terminated by a NULL name option. */
+CIVETWEB_API const struct mg_option *mg_get_valid_options(void);
+
+
+struct mg_server_port {
+ int protocol; /* 1 = IPv4, 2 = IPv6, 3 = both */
+ int port; /* port number */
+ int is_ssl; /* https port: 0 = no, 1 = yes */
+ int is_redirect; /* redirect all requests: 0 = no, 1 = yes */
+ int is_optional; /* optional: 0 = no, 1 = yes */
+ int is_bound; /* bound: 0 = no, 1 = yes, relevant for optional ports */
+ int _reserved3;
+ int _reserved4;
+};
+
+/* Legacy name */
+#define mg_server_ports mg_server_port
+
+
+/* Get the list of ports that civetweb is listening on.
+ The parameter size is the size of the ports array in elements.
+ The caller is responsibility to allocate the required memory.
+ This function returns the number of struct mg_server_port elements
+ filled in, or <0 in case of an error. */
+CIVETWEB_API int mg_get_server_ports(const struct mg_context *ctx,
+ int size,
+ struct mg_server_port *ports);
+
+
+/* Add, edit or delete the entry in the passwords file.
+ *
+ * This function allows an application to manipulate .htpasswd files on the
+ * fly by adding, deleting and changing user records. This is one of the
+ * several ways of implementing authentication on the server side. For another,
+ * cookie-based way please refer to the examples/chat in the source tree.
+ *
+ * Parameter:
+ * passwords_file_name: Path and name of a file storing multiple passwords
+ * realm: HTTP authentication realm (authentication domain) name
+ * user: User name
+ * password:
+ * If password is not NULL, entry modified or added.
+ * If password is NULL, entry is deleted.
+ *
+ * Return:
+ * 1 on success, 0 on error.
+ */
+CIVETWEB_API int mg_modify_passwords_file(const char *passwords_file_name,
+ const char *realm,
+ const char *user,
+ const char *password);
+
+
+/* Same as mg_modify_passwords_file, but instead of the plain-text
+ * password, the HA1 hash is specified. The plain-text password is
+ * not made known to civetweb.
+ *
+ * The HA1 hash is the MD5 checksum of a "user:realm:password" string
+ * in lower-case hex format. For example, if the user name is "myuser",
+ * the realm is "myrealm", and the password is "secret", then the HA1 is
+ * e67fd3248b58975c3e89ff18ecb75e2f.
+ */
+CIVETWEB_API int mg_modify_passwords_file_ha1(const char *passwords_file_name,
+ const char *realm,
+ const char *user,
+ const char *ha1);
+
+
+/* Return information associated with the request.
+ * Use this function to implement a server and get data about a request
+ * from a HTTP/HTTPS client.
+ * Note: Before CivetWeb 1.10, this function could be used to read
+ * a response from a server, when implementing a client, although the
+ * values were never returned in appropriate mg_request_info elements.
+ * It is strongly advised to use mg_get_response_info for clients.
+ */
+CIVETWEB_API const struct mg_request_info *
+mg_get_request_info(const struct mg_connection *);
+
+
+/* Return information associated with a HTTP/HTTPS response.
+ * Use this function in a client, to check the response from
+ * the server. */
+CIVETWEB_API const struct mg_response_info *
+mg_get_response_info(const struct mg_connection *);
+
+
+/* Send data to the client.
+ Return:
+ 0 when the connection has been closed
+ -1 on error
+ >0 number of bytes written on success */
+CIVETWEB_API int mg_write(struct mg_connection *, const void *buf, size_t len);
+
+
+/* Send data to a websocket client wrapped in a websocket frame. Uses
+ mg_lock_connection to ensure that the transmission is not interrupted,
+ i.e., when the application is proactively communicating and responding to
+ a request simultaneously.
+
+ Send data to a websocket client wrapped in a websocket frame.
+ This function is available when civetweb is compiled with -DUSE_WEBSOCKET
+
+ Return:
+ 0 when the connection has been closed
+ -1 on error
+ >0 number of bytes written on success */
+CIVETWEB_API int mg_websocket_write(struct mg_connection *conn,
+ int opcode,
+ const char *data,
+ size_t data_len);
+
+
+/* Send data to a websocket server wrapped in a masked websocket frame. Uses
+ mg_lock_connection to ensure that the transmission is not interrupted,
+ i.e., when the application is proactively communicating and responding to
+ a request simultaneously.
+
+ Send data to a websocket server wrapped in a masked websocket frame.
+ This function is available when civetweb is compiled with -DUSE_WEBSOCKET
+
+ Return:
+ 0 when the connection has been closed
+ -1 on error
+ >0 number of bytes written on success */
+CIVETWEB_API int mg_websocket_client_write(struct mg_connection *conn,
+ int opcode,
+ const char *data,
+ size_t data_len);
+
+
+/* Blocks until unique access is obtained to this connection. Intended for use
+ with websockets only.
+ Invoke this before mg_write or mg_printf when communicating with a
+ websocket if your code has server-initiated communication as well as
+ communication in direct response to a message.
+ Do not acquire this lock while holding mg_lock_context(). */
+CIVETWEB_API void mg_lock_connection(struct mg_connection *conn);
+CIVETWEB_API void mg_unlock_connection(struct mg_connection *conn);
+
+
+/* Lock server context. This lock may be used to protect resources
+ that are shared between different connection/worker threads.
+ If the given context is not server, these functions do nothing. */
+CIVETWEB_API void mg_lock_context(struct mg_context *ctx);
+CIVETWEB_API void mg_unlock_context(struct mg_context *ctx);
+
+
+/* WebSocket OpcCodes, from http://tools.ietf.org/html/rfc6455 */
+enum {
+ MG_WEBSOCKET_OPCODE_CONTINUATION = 0x0,
+ MG_WEBSOCKET_OPCODE_TEXT = 0x1,
+ MG_WEBSOCKET_OPCODE_BINARY = 0x2,
+ MG_WEBSOCKET_OPCODE_CONNECTION_CLOSE = 0x8,
+ MG_WEBSOCKET_OPCODE_PING = 0x9,
+ MG_WEBSOCKET_OPCODE_PONG = 0xa
+};
+
+
+/* Macros for enabling compiler-specific checks for printf-like arguments. */
+#undef PRINTF_FORMAT_STRING
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+#include
+#if defined(_MSC_VER) && _MSC_VER > 1400
+#define PRINTF_FORMAT_STRING(s) _Printf_format_string_ s
+#else
+#define PRINTF_FORMAT_STRING(s) __format_string s
+#endif
+#else
+#define PRINTF_FORMAT_STRING(s) s
+#endif
+
+#ifdef __GNUC__
+#define PRINTF_ARGS(x, y) __attribute__((format(printf, x, y)))
+#else
+#define PRINTF_ARGS(x, y)
+#endif
+
+
+/* Send data to the client using printf() semantics.
+ Works exactly like mg_write(), but allows to do message formatting. */
+CIVETWEB_API int mg_printf(struct mg_connection *,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(2, 3);
+
+
+/* Send a part of the message body, if chunked transfer encoding is set.
+ * Only use this function after sending a complete HTTP request or response
+ * header with "Transfer-Encoding: chunked" set. */
+CIVETWEB_API int mg_send_chunk(struct mg_connection *conn,
+ const char *chunk,
+ unsigned int chunk_len);
+
+
+/* Send contents of the entire file together with HTTP headers.
+ * Parameters:
+ * conn: Current connection information.
+ * path: Full path to the file to send.
+ * This function has been superseded by mg_send_mime_file
+ */
+CIVETWEB_API void mg_send_file(struct mg_connection *conn, const char *path);
+
+
+/* Send contents of the file without HTTP headers.
+ * The code must send a valid HTTP response header before using this function.
+ *
+ * Parameters:
+ * conn: Current connection information.
+ * path: Full path to the file to send.
+ *
+ * Return:
+ * < 0 Error
+ */
+CIVETWEB_API int mg_send_file_body(struct mg_connection *conn,
+ const char *path);
+
+
+/* Send HTTP error reply. */
+CIVETWEB_API int mg_send_http_error(struct mg_connection *conn,
+ int status_code,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(3, 4);
+
+
+/* Send "HTTP 200 OK" response header.
+ * After calling this function, use mg_write or mg_send_chunk to send the
+ * response body.
+ * Parameters:
+ * conn: Current connection handle.
+ * mime_type: Set Content-Type for the following content.
+ * content_length: Size of the following content, if content_length >= 0.
+ * Will set transfer-encoding to chunked, if set to -1.
+ * Return:
+ * < 0 Error
+ */
+CIVETWEB_API int mg_send_http_ok(struct mg_connection *conn,
+ const char *mime_type,
+ long long content_length);
+
+
+/* Send "HTTP 30x" redirect response.
+ * The response has content-size zero: do not send any body data after calling
+ * this function.
+ * Parameters:
+ * conn: Current connection handle.
+ * target_url: New location.
+ * redirect_code: HTTP redirect type. Could be 301, 302, 303, 307, 308.
+ * Return:
+ * < 0 Error (-1 send error, -2 parameter error)
+ */
+CIVETWEB_API int mg_send_http_redirect(struct mg_connection *conn,
+ const char *target_url,
+ int redirect_code);
+
+
+/* Send HTTP digest access authentication request.
+ * Browsers will send a user name and password in their next request, showing
+ * an authentication dialog if the password is not stored.
+ * Parameters:
+ * conn: Current connection handle.
+ * realm: Authentication realm. If NULL is supplied, the sever domain
+ * set in the authentication_domain configuration is used.
+ * Return:
+ * < 0 Error
+ */
+CIVETWEB_API int
+mg_send_digest_access_authentication_request(struct mg_connection *conn,
+ const char *realm);
+
+
+/* Check if the current request has a valid authentication token set.
+ * A file is used to provide a list of valid user names, realms and
+ * password hashes. The file can be created and modified using the
+ * mg_modify_passwords_file API function.
+ * Parameters:
+ * conn: Current connection handle.
+ * realm: Authentication realm. If NULL is supplied, the sever domain
+ * set in the authentication_domain configuration is used.
+ * filename: Path and name of a file storing multiple password hashes.
+ * Return:
+ * > 0 Valid authentication
+ * 0 Invalid authentication
+ * < 0 Error (all values < 0 should be considered as invalid
+ * authentication, future error codes will have negative
+ * numbers)
+ * -1 Parameter error
+ * -2 File not found
+ */
+CIVETWEB_API int
+mg_check_digest_access_authentication(struct mg_connection *conn,
+ const char *realm,
+ const char *filename);
+
+
+/* Send contents of the entire file together with HTTP headers.
+ * Parameters:
+ * conn: Current connection handle.
+ * path: Full path to the file to send.
+ * mime_type: Content-Type for file. NULL will cause the type to be
+ * looked up by the file extension.
+ */
+CIVETWEB_API void mg_send_mime_file(struct mg_connection *conn,
+ const char *path,
+ const char *mime_type);
+
+
+/* Send contents of the entire file together with HTTP headers.
+ Parameters:
+ conn: Current connection information.
+ path: Full path to the file to send.
+ mime_type: Content-Type for file. NULL will cause the type to be
+ looked up by the file extension.
+ additional_headers: Additional custom header fields appended to the header.
+ Each header should start with an X-, to ensure it is
+ not included twice.
+ NULL does not append anything.
+*/
+CIVETWEB_API void mg_send_mime_file2(struct mg_connection *conn,
+ const char *path,
+ const char *mime_type,
+ const char *additional_headers);
+
+
+/* Store body data into a file. */
+CIVETWEB_API long long mg_store_body(struct mg_connection *conn,
+ const char *path);
+/* Read entire request body and store it in a file "path".
+ Return:
+ < 0 Error
+ >= 0 Number of bytes stored in file "path".
+*/
+
+
+/* Read data from the remote end, return number of bytes read.
+ Return:
+ 0 connection has been closed by peer. No more data could be read.
+ < 0 read error. No more data could be read from the connection.
+ > 0 number of bytes read into the buffer. */
+CIVETWEB_API int mg_read(struct mg_connection *, void *buf, size_t len);
+
+
+/* Get the value of particular HTTP header.
+
+ This is a helper function. It traverses request_info->http_headers array,
+ and if the header is present in the array, returns its value. If it is
+ not present, NULL is returned. */
+CIVETWEB_API const char *mg_get_header(const struct mg_connection *,
+ const char *name);
+
+
+/* Get a value of particular form variable.
+
+ Parameters:
+ data: pointer to form-uri-encoded buffer. This could be either POST data,
+ or request_info.query_string.
+ data_len: length of the encoded data.
+ var_name: variable name to decode from the buffer
+ dst: destination buffer for the decoded variable
+ dst_len: length of the destination buffer
+
+ Return:
+ On success, length of the decoded variable.
+ On error:
+ -1 (variable not found).
+ -2 (destination buffer is NULL, zero length or too small to hold the
+ decoded variable).
+
+ Destination buffer is guaranteed to be '\0' - terminated if it is not
+ NULL or zero length. */
+CIVETWEB_API int mg_get_var(const char *data,
+ size_t data_len,
+ const char *var_name,
+ char *dst,
+ size_t dst_len);
+
+
+/* Get a value of particular form variable.
+
+ Parameters:
+ data: pointer to form-uri-encoded buffer. This could be either POST data,
+ or request_info.query_string.
+ data_len: length of the encoded data.
+ var_name: variable name to decode from the buffer
+ dst: destination buffer for the decoded variable
+ dst_len: length of the destination buffer
+ occurrence: which occurrence of the variable, 0 is the 1st, 1 the 2nd, ...
+ this makes it possible to parse a query like
+ b=x&a=y&a=z which will have occurrence values b:0, a:0 and a:1
+
+ Return:
+ On success, length of the decoded variable.
+ On error:
+ -1 (variable not found).
+ -2 (destination buffer is NULL, zero length or too small to hold the
+ decoded variable).
+
+ Destination buffer is guaranteed to be '\0' - terminated if it is not
+ NULL or zero length. */
+CIVETWEB_API int mg_get_var2(const char *data,
+ size_t data_len,
+ const char *var_name,
+ char *dst,
+ size_t dst_len,
+ size_t occurrence);
+
+
+/* Split form encoded data into a list of key value pairs.
+ A form encoded input might be a query string, the body of a
+ x-www-form-urlencoded POST request or any other data with this
+ structure: "keyName1=value1&keyName2=value2&keyName3=value3".
+ Values might be percent-encoded - this function will transform
+ them to the unencoded characters.
+ The input string is modified by this function: To split the
+ "query_string" member of struct request_info, create a copy first
+ (e.g., using strdup).
+ The function itself does not allocate memory. Thus, it is not
+ required to free any pointer returned from this function.
+ The output list of is limited to MG_MAX_FORM_FIELDS name-value-
+ pairs. The default value is reasonably oversized for typical
+ applications, however, for special purpose systems it might be
+ required to increase this value at compile time.
+
+ Parameters:
+ data: form encoded input string. Will be modified by this function.
+ form_fields: output list of name/value-pairs. A buffer with a size
+ specified by num_form_fields must be provided by the
+ caller.
+ num_form_fields: Size of provided form_fields buffer in number of
+ "struct mg_header" elements.
+
+ Return:
+ On success: number of form_fields filled
+ On error:
+ -1 (parameter error). */
+CIVETWEB_API int mg_split_form_urlencoded(char *data,
+ struct mg_header *form_fields,
+ unsigned num_form_fields);
+
+
+/* Fetch value of certain cookie variable into the destination buffer.
+
+ Destination buffer is guaranteed to be '\0' - terminated. In case of
+ failure, dst[0] == '\0'. Note that RFC allows many occurrences of the same
+ parameter. This function returns only first occurrence.
+
+ Return:
+ On success, value length.
+ On error:
+ -1 (either "Cookie:" header is not present at all or the requested
+ parameter is not found).
+ -2 (destination buffer is NULL, zero length or too small to hold the
+ value). */
+CIVETWEB_API int mg_get_cookie(const char *cookie,
+ const char *var_name,
+ char *buf,
+ size_t buf_len);
+
+
+/* Download data from the remote web server.
+ host: host name to connect to, e.g. "foo.com", or "10.12.40.1".
+ port: port number, e.g. 80.
+ use_ssl: whether to use SSL connection.
+ error_buffer, error_buffer_size: error message placeholder.
+ request_fmt,...: HTTP request.
+ Return:
+ On success, valid pointer to the new connection, suitable for mg_read().
+ On error, NULL. error_buffer contains error message.
+ Example:
+ char ebuf[100];
+ struct mg_connection *conn;
+ conn = mg_download("google.com", 80, 0, ebuf, sizeof(ebuf),
+ "%s", "GET / HTTP/1.0\r\nHost: google.com\r\n\r\n");
+
+ mg_download is equivalent to calling mg_connect_client followed by
+ mg_printf and mg_get_response. Using these three functions directly may
+ allow more control as compared to using mg_download.
+ */
+CIVETWEB_API struct mg_connection *
+mg_download(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ PRINTF_FORMAT_STRING(const char *request_fmt),
+ ...) PRINTF_ARGS(6, 7);
+
+
+/* Close the connection opened by mg_download(). */
+CIVETWEB_API void mg_close_connection(struct mg_connection *conn);
+
+
+/* This structure contains callback functions for handling form fields.
+ It is used as an argument to mg_handle_form_request. */
+struct mg_form_data_handler {
+ /* This callback function is called, if a new field has been found.
+ * The return value of this callback is used to define how the field
+ * should be processed.
+ *
+ * Parameters:
+ * key: Name of the field ("name" property of the HTML input field).
+ * filename: Name of a file to upload, at the client computer.
+ * Only set for input fields of type "file", otherwise NULL.
+ * path: Output parameter: File name (incl. path) to store the file
+ * at the server computer. Only used if MG_FORM_FIELD_STORAGE_STORE
+ * is returned by this callback. Existing files will be
+ * overwritten.
+ * pathlen: Length of the buffer for path.
+ * user_data: Value of the member user_data of mg_form_data_handler
+ *
+ * Return value:
+ * The callback must return the intended storage for this field
+ * (See MG_FORM_FIELD_STORAGE_*).
+ */
+ int (*field_found)(const char *key,
+ const char *filename,
+ char *path,
+ size_t pathlen,
+ void *user_data);
+
+ /* If the "field_found" callback returned MG_FORM_FIELD_STORAGE_GET,
+ * this callback will receive the field data.
+ *
+ * Parameters:
+ * key: Name of the field ("name" property of the HTML input field).
+ * value: Value of the input field.
+ * user_data: Value of the member user_data of mg_form_data_handler
+ *
+ * Return value:
+ * The return code determines how the server should continue processing
+ * the current request (See MG_FORM_FIELD_HANDLE_*).
+ */
+ int (*field_get)(const char *key,
+ const char *value,
+ size_t valuelen,
+ void *user_data);
+
+ /* If the "field_found" callback returned MG_FORM_FIELD_STORAGE_STORE,
+ * the data will be stored into a file. If the file has been written
+ * successfully, this callback will be called. This callback will
+ * not be called for only partially uploaded files. The
+ * mg_handle_form_request function will either store the file completely
+ * and call this callback, or it will remove any partial content and
+ * not call this callback function.
+ *
+ * Parameters:
+ * path: Path of the file stored at the server.
+ * file_size: Size of the stored file in bytes.
+ * user_data: Value of the member user_data of mg_form_data_handler
+ *
+ * Return value:
+ * The return code determines how the server should continue processing
+ * the current request (See MG_FORM_FIELD_HANDLE_*).
+ */
+ int (*field_store)(const char *path, long long file_size, void *user_data);
+
+ /* User supplied argument, passed to all callback functions. */
+ void *user_data;
+};
+
+
+/* Return values definition for the "field_found" callback in
+ * mg_form_data_handler. */
+enum {
+ /* Skip this field (neither get nor store it). Continue with the
+ * next field. */
+ MG_FORM_FIELD_STORAGE_SKIP = 0x0,
+ /* Get the field value. */
+ MG_FORM_FIELD_STORAGE_GET = 0x1,
+ /* Store the field value into a file. */
+ MG_FORM_FIELD_STORAGE_STORE = 0x2,
+ /* Stop parsing this request. Skip the remaining fields. */
+ MG_FORM_FIELD_STORAGE_ABORT = 0x10
+};
+
+/* Return values for "field_get" and "field_store" */
+enum {
+ /* Only "field_get": If there is more data in this field, get the next
+ * chunk. Otherwise: handle the next field. */
+ MG_FORM_FIELD_HANDLE_GET = 0x1,
+ /* Handle the next field */
+ MG_FORM_FIELD_HANDLE_NEXT = 0x8,
+ /* Stop parsing this request */
+ MG_FORM_FIELD_HANDLE_ABORT = 0x10
+};
+
+
+/* Process form data.
+ * Returns the number of fields handled, or < 0 in case of an error.
+ * Note: It is possible that several fields are already handled successfully
+ * (e.g., stored into files), before the request handling is stopped with an
+ * error. In this case a number < 0 is returned as well.
+ * In any case, it is the duty of the caller to remove files once they are
+ * no longer required. */
+CIVETWEB_API int mg_handle_form_request(struct mg_connection *conn,
+ struct mg_form_data_handler *fdh);
+
+
+/* Convenience function -- create detached thread.
+ Return: 0 on success, non-0 on error. */
+typedef void *(*mg_thread_func_t)(void *);
+CIVETWEB_API int mg_start_thread(mg_thread_func_t f, void *p);
+
+
+/* Return builtin mime type for the given file name.
+ For unrecognized extensions, "text/plain" is returned. */
+CIVETWEB_API const char *mg_get_builtin_mime_type(const char *file_name);
+
+
+/* Get text representation of HTTP status code. */
+CIVETWEB_API const char *
+mg_get_response_code_text(const struct mg_connection *conn, int response_code);
+
+
+/* Return CivetWeb version. */
+CIVETWEB_API const char *mg_version(void);
+
+
+/* URL-decode input buffer into destination buffer.
+ 0-terminate the destination buffer.
+ form-url-encoded data differs from URI encoding in a way that it
+ uses '+' as character for space, see RFC 1866 section 8.2.1
+ http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt
+ Return: length of the decoded data, or -1 if dst buffer is too small. */
+CIVETWEB_API int mg_url_decode(const char *src,
+ int src_len,
+ char *dst,
+ int dst_len,
+ int is_form_url_encoded);
+
+
+/* URL-encode input buffer into destination buffer.
+ returns the length of the resulting buffer or -1
+ is the buffer is too small. */
+CIVETWEB_API int mg_url_encode(const char *src, char *dst, size_t dst_len);
+
+
+/* BASE64-encode input buffer into destination buffer.
+ returns -1 on OK. */
+CIVETWEB_API int mg_base64_encode(const unsigned char *src,
+ size_t src_len,
+ char *dst,
+ size_t *dst_len);
+
+
+/* BASE64-decode input buffer into destination buffer.
+ returns -1 on OK. */
+CIVETWEB_API int mg_base64_decode(const char *src,
+ size_t src_len,
+ unsigned char *dst,
+ size_t *dst_len);
+
+
+/* MD5 hash given strings.
+ Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of
+ ASCIIz strings. When function returns, buf will contain human-readable
+ MD5 hash. Example:
+ char buf[33];
+ mg_md5(buf, "aa", "bb", NULL); */
+CIVETWEB_API char *mg_md5(char buf[33], ...);
+
+
+#if !defined(MG_MATCH_CONTEXT_MAX_MATCHES)
+#define MG_MATCH_CONTEXT_MAX_MATCHES (32)
+#endif
+
+struct mg_match_element {
+ const char *str; /* First character matching wildcard */
+ size_t len; /* Number of character matching wildcard */
+};
+
+struct mg_match_context {
+ int case_sensitive; /* Input: 1 (case sensitive) or 0 (insensitive) */
+ size_t num_matches; /* Output: Number of wildcard matches returned. */
+ struct mg_match_element match[MG_MATCH_CONTEXT_MAX_MATCHES]; /* Output */
+};
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+/* Pattern matching and extraction function.
+ Parameters:
+ pat: Pattern string (see UserManual.md)
+ str: String to search for match patterns.
+ mcx: Match context (optional, can be NULL).
+
+ Return:
+ Number of characters matched.
+ -1 if no valid match was found.
+ Note: 0 characters might be a valid match for some patterns.
+*/
+CIVETWEB_API ptrdiff_t mg_match(const char *pat,
+ const char *str,
+ struct mg_match_context *mcx);
+#endif
+
+
+/* Print error message to the opened error log stream.
+ This utilizes the provided logging configuration.
+ conn: connection (not used for sending data, but to get perameters)
+ fmt: format string without the line return
+ ...: variable argument list
+ Example:
+ mg_cry(conn,"i like %s", "logging"); */
+CIVETWEB_API void mg_cry(const struct mg_connection *conn,
+ PRINTF_FORMAT_STRING(const char *fmt),
+ ...) PRINTF_ARGS(2, 3);
+
+
+/* utility methods to compare two buffers, case insensitive. */
+CIVETWEB_API int mg_strcasecmp(const char *s1, const char *s2);
+CIVETWEB_API int mg_strncasecmp(const char *s1, const char *s2, size_t len);
+
+
+/* Connect to a websocket as a client
+ Parameters:
+ host: host to connect to, i.e. "echo.websocket.org" or "192.168.1.1" or
+ "localhost"
+ port: server port
+ use_ssl: make a secure connection to server
+ error_buffer, error_buffer_size: buffer for an error message
+ path: server path you are trying to connect to, i.e. if connection to
+ localhost/app, path should be "/app"
+ origin: value of the Origin HTTP header
+ data_func: callback that should be used when data is received from the
+ server
+ user_data: user supplied argument
+
+ Return:
+ On success, valid mg_connection object.
+ On error, NULL. Se error_buffer for details.
+*/
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data);
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client_extensions(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ const char *extensions,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data);
+
+
+/* Connect to a TCP server as a client (can be used to connect to a HTTP server)
+ Parameters:
+ host: host to connect to, i.e. "www.wikipedia.org" or "192.168.1.1" or
+ "localhost"
+ port: server port
+ use_ssl: make a secure connection to server
+ error_buffer, error_buffer_size: buffer for an error message
+
+ Return:
+ On success, valid mg_connection object.
+ On error, NULL. Se error_buffer for details.
+*/
+CIVETWEB_API struct mg_connection *mg_connect_client(const char *host,
+ int port,
+ int use_ssl,
+ char *error_buffer,
+ size_t error_buffer_size);
+
+
+struct mg_client_options {
+ const char *host;
+ int port;
+ const char *client_cert;
+ const char *server_cert;
+ const char *host_name;
+ /* TODO: add more data */
+};
+
+
+CIVETWEB_API struct mg_connection *
+mg_connect_client_secure(const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size);
+
+
+CIVETWEB_API struct mg_connection *mg_connect_websocket_client_secure(
+ const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data);
+
+CIVETWEB_API struct mg_connection *
+mg_connect_websocket_client_secure_extensions(
+ const struct mg_client_options *client_options,
+ char *error_buffer,
+ size_t error_buffer_size,
+ const char *path,
+ const char *origin,
+ const char *extensions,
+ mg_websocket_data_handler data_func,
+ mg_websocket_close_handler close_func,
+ void *user_data);
+
+#if defined(MG_LEGACY_INTERFACE) /* 2019-11-02 */
+enum { TIMEOUT_INFINITE = -1 };
+#endif
+enum { MG_TIMEOUT_INFINITE = -1 };
+
+
+/* Wait for a response from the server
+ Parameters:
+ conn: connection
+ ebuf, ebuf_len: error message placeholder.
+ timeout: time to wait for a response in milliseconds (if < 0 then wait
+ forever)
+
+ Return:
+ On success, >= 0
+ On error/timeout, < 0
+*/
+CIVETWEB_API int mg_get_response(struct mg_connection *conn,
+ char *ebuf,
+ size_t ebuf_len,
+ int timeout);
+
+
+/* mg_response_header_* functions can be used from server callbacks
+ * to prepare HTTP server response headers. Using this function will
+ * allow a callback to work with HTTP/1.x and HTTP/2.
+ */
+
+/* Initialize a new HTTP response
+ * Parameters:
+ * conn: Current connection handle.
+ * status: HTTP status code (e.g., 200 for "OK").
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: network error (only if built with NO_RESPONSE_BUFFERING)
+ */
+CIVETWEB_API int mg_response_header_start(struct mg_connection *conn,
+ int status);
+
+
+/* Add a new HTTP response header line
+ * Parameters:
+ * conn: Current connection handle.
+ * header: Header name.
+ * value: Header value.
+ * value_len: Length of header value, excluding the terminating zero.
+ * Use -1 for "strlen(value)".
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: too many headers
+ * -5: out of memory
+ */
+CIVETWEB_API int mg_response_header_add(struct mg_connection *conn,
+ const char *header,
+ const char *value,
+ int value_len);
+
+
+/* Add a complete header string (key + value).
+ * This function is less efficient as compared to mg_response_header_add,
+ * and should only be used to convert complete HTTP/1.x header lines.
+ * Parameters:
+ * conn: Current connection handle.
+ * http1_headers: Header line(s) in the form "name: value\r\n".
+ * Return:
+ * >=0: no error, number of header lines added
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: too many headers
+ * -5: out of memory
+ */
+CIVETWEB_API int mg_response_header_add_lines(struct mg_connection *conn,
+ const char *http1_headers);
+
+
+/* Send http response
+ * Parameters:
+ * conn: Current connection handle.
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: sending failed (network error)
+ */
+CIVETWEB_API int mg_response_header_send(struct mg_connection *conn);
+
+
+/* Check which features where set when the civetweb library has been compiled.
+ The function explicitly addresses compile time defines used when building
+ the library - it does not mean, the feature has been initialized using a
+ mg_init_library call.
+ mg_check_feature can be called anytime, even before mg_init_library has
+ been called.
+
+ Parameters:
+ feature: specifies which feature should be checked
+ The value is a bit mask. The individual bits are defined as:
+ 1 serve files (NO_FILES not set)
+ 2 support HTTPS (NO_SSL not set)
+ 4 support CGI (NO_CGI not set)
+ 8 support IPv6 (USE_IPV6 set)
+ 16 support WebSocket (USE_WEBSOCKET set)
+ 32 support Lua scripts and Lua server pages (USE_LUA is set)
+ 64 support server side JavaScript (USE_DUKTAPE is set)
+ 128 support caching (NO_CACHING not set)
+ 256 support server statistics (USE_SERVER_STATS is set)
+ 512 support for on the fly compression (USE_ZLIB is set)
+
+ These values are defined as MG_FEATURES_*
+
+ The result is undefined, if bits are set that do not represent a
+ defined feature (currently: feature >= 1024).
+ The result is undefined, if no bit is set (feature == 0).
+
+ Return:
+ If a feature is available, the corresponding bit is set
+ If a feature is not available, the bit is 0
+*/
+CIVETWEB_API unsigned mg_check_feature(unsigned feature);
+
+
+/* Get information on the system. Useful for support requests.
+ Parameters:
+ buffer: Store system information as string here.
+ buflen: Length of buffer (including a byte required for a terminating 0).
+ Return:
+ Available size of system information, excluding a terminating 0.
+ The information is complete, if the return value is smaller than buflen.
+ The result is a JSON formatted string, the exact content may vary.
+ Note:
+ It is possible to determine the required buflen, by first calling this
+ function with buffer = NULL and buflen = NULL. The required buflen is
+ one byte more than the returned value.
+*/
+CIVETWEB_API int mg_get_system_info(char *buffer, int buflen);
+
+
+/* Get context information. Useful for server diagnosis.
+ Parameters:
+ ctx: Context handle
+ buffer: Store context information here.
+ buflen: Length of buffer (including a byte required for a terminating 0).
+ Return:
+ Available size of system information, excluding a terminating 0.
+ The information is complete, if the return value is smaller than buflen.
+ The result is a JSON formatted string, the exact content may vary.
+ Note:
+ It is possible to determine the required buflen, by first calling this
+ function with buffer = NULL and buflen = NULL. The required buflen is
+ one byte more than the returned value. However, since the available
+ context information changes, you should allocate a few bytes more.
+*/
+CIVETWEB_API int
+mg_get_context_info(const struct mg_context *ctx, char *buffer, int buflen);
+
+
+/* Disable HTTP keep-alive on a per-connection basis.
+ Reference: https://github.com/civetweb/civetweb/issues/727
+ Parameters:
+ conn: Current connection handle.
+*/
+CIVETWEB_API void mg_disable_connection_keep_alive(struct mg_connection *conn);
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+/* Get connection information. Useful for server diagnosis.
+ Parameters:
+ ctx: Context handle
+ idx: Connection index
+ buffer: Store context information here.
+ buflen: Length of buffer (including a byte required for a terminating 0).
+ Return:
+ Available size of system information, excluding a terminating 0.
+ The information is complete, if the return value is smaller than buflen.
+ The result is a JSON formatted string, the exact content may vary.
+ Note:
+ It is possible to determine the required buflen, by first calling this
+ function with buffer = NULL and buflen = NULL. The required buflen is
+ one byte more than the returned value. However, since the available
+ context information changes, you should allocate a few bytes more.
+*/
+CIVETWEB_API int mg_get_connection_info(const struct mg_context *ctx,
+ int idx,
+ char *buffer,
+ int buflen);
+#endif
+
+
+/* New APIs for enhanced option and error handling.
+ These mg_*2 API functions have the same purpose as their original versions,
+ but provide additional options and/or provide improved error diagnostics.
+
+ Note: Experimental interfaces may change
+*/
+struct mg_error_data {
+ unsigned code; /* error code (number) */
+ unsigned code_sub; /* error sub code (number) */
+ char *text; /* buffer for error text */
+ size_t text_buffer_size; /* size of buffer of "text" */
+};
+
+
+/* Values for error "code" in mg_error_data */
+enum {
+ /* No error */
+ MG_ERROR_DATA_CODE_OK = 0u,
+
+ /* Caller provided invalid parameter */
+ MG_ERROR_DATA_CODE_INVALID_PARAM = 1u,
+
+ /* "configuration_option" contains invalid element */
+ MG_ERROR_DATA_CODE_INVALID_OPTION = 2u,
+
+ /* Initializen TLS / SSL library failed */
+ MG_ERROR_DATA_CODE_INIT_TLS_FAILED = 3u,
+
+ /* Mandatory "configuration_option" missing */
+ MG_ERROR_DATA_CODE_MISSING_OPTION = 4u,
+
+ /* Duplicate "authentication_domain" option */
+ MG_ERROR_DATA_CODE_DUPLICATE_DOMAIN = 5u,
+
+ /* Not enough memory */
+ MG_ERROR_DATA_CODE_OUT_OF_MEMORY = 6u,
+
+ /* Server already stopped */
+ MG_ERROR_DATA_CODE_SERVER_STOPPED = 7u,
+
+ /* mg_init_library must be called first */
+ MG_ERROR_DATA_CODE_INIT_LIBRARY_FAILED = 8u,
+
+ /* Operating system function failed */
+ MG_ERROR_DATA_CODE_OS_ERROR = 9u,
+
+ /* Failed to bind to server ports */
+ MG_ERROR_DATA_CODE_INIT_PORTS_FAILED = 10u,
+
+ /* Failed to switch user (option "run_as_user") */
+ MG_ERROR_DATA_CODE_INIT_USER_FAILED = 11u,
+
+ /* Access Control List error */
+ MG_ERROR_DATA_CODE_INIT_ACL_FAILED = 12u,
+
+ /* Global password file error */
+ MG_ERROR_DATA_CODE_INVALID_PASS_FILE = 13u,
+
+ /* Lua background script init error */
+ MG_ERROR_DATA_CODE_SCRIPT_ERROR = 14u,
+
+ /* Client: Host not found, invalid IP to connect */
+ MG_ERROR_DATA_CODE_HOST_NOT_FOUND = 15u,
+
+ /* Client: TCP connect timeout */
+ MG_ERROR_DATA_CODE_CONNECT_TIMEOUT = 16u,
+
+ /* Client: TCP connect failed */
+ MG_ERROR_DATA_CODE_CONNECT_FAILED = 17u,
+
+ /* Error using TLS client certificate */
+ MG_ERROR_DATA_CODE_TLS_CLIENT_CERT_ERROR = 18u,
+
+ /* Error setting trusted TLS server certificate for client connection */
+ MG_ERROR_DATA_CODE_TLS_SERVER_CERT_ERROR = 19u,
+
+ /* Error establishing TLS connection to HTTPS server */
+ MG_ERROR_DATA_CODE_TLS_CONNECT_ERROR = 20u
+};
+
+
+struct mg_init_data {
+ const struct mg_callbacks *callbacks; /* callback function pointer */
+ void *user_data; /* data */
+ const char **configuration_options;
+};
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+
+CIVETWEB_API struct mg_connection *
+mg_connect_client2(const char *host,
+ const char *protocol,
+ int port,
+ const char *path,
+ struct mg_init_data *init,
+ struct mg_error_data *error);
+
+CIVETWEB_API int mg_get_response2(struct mg_connection *conn,
+ struct mg_error_data *error,
+ int timeout);
+#endif
+
+
+CIVETWEB_API struct mg_context *mg_start2(struct mg_init_data *init,
+ struct mg_error_data *error);
+
+CIVETWEB_API int mg_start_domain2(struct mg_context *ctx,
+ const char **configuration_options,
+ struct mg_error_data *error);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* CIVETWEB_HEADER_INCLUDED */
diff --git a/v2/webui/src/civetweb/handle_form.inl b/v2/webui/src/civetweb/handle_form.inl
new file mode 100644
index 0000000..bc76f7d
--- /dev/null
+++ b/v2/webui/src/civetweb/handle_form.inl
@@ -0,0 +1,1148 @@
+/* Copyright (c) 2016-2025 the Civetweb developers
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+static int
+url_encoded_field_found(const struct mg_connection *conn,
+ const char *key,
+ size_t key_len,
+ const char *filename,
+ size_t filename_len,
+ char *path,
+ size_t path_len,
+ struct mg_form_data_handler *fdh)
+{
+ char key_dec[1024];
+ char filename_dec[1024];
+ int key_dec_len;
+ int filename_dec_len;
+ int ret;
+
+ key_dec_len =
+ mg_url_decode(key, (int)key_len, key_dec, (int)sizeof(key_dec), 1);
+
+ if (((size_t)key_dec_len >= (size_t)sizeof(key_dec)) || (key_dec_len < 0)) {
+ return MG_FORM_FIELD_STORAGE_ABORT;
+ }
+
+ if (filename) {
+ filename_dec_len = mg_url_decode(filename,
+ (int)filename_len,
+ filename_dec,
+ (int)sizeof(filename_dec),
+ 1);
+
+ if (((size_t)filename_dec_len >= (size_t)sizeof(filename_dec))
+ || (filename_dec_len < 0)) {
+ /* Log error message and skip this field. */
+ mg_cry_internal(conn, "%s: Cannot decode filename", __func__);
+ return MG_FORM_FIELD_STORAGE_ABORT;
+ }
+ remove_dot_segments(filename_dec);
+
+ } else {
+ filename_dec[0] = 0;
+ }
+
+ ret =
+ fdh->field_found(key_dec, filename_dec, path, path_len, fdh->user_data);
+
+ if ((ret & 0xF) == MG_FORM_FIELD_STORAGE_GET) {
+ if (fdh->field_get == NULL) {
+ mg_cry_internal(conn,
+ "%s: Function \"Get\" not available",
+ __func__);
+ return MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+ if ((ret & 0xF) == MG_FORM_FIELD_STORAGE_STORE) {
+ if (fdh->field_store == NULL) {
+ mg_cry_internal(conn,
+ "%s: Function \"Store\" not available",
+ __func__);
+ return MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+
+ return ret;
+}
+
+static int
+url_encoded_field_get(
+ const struct mg_connection *conn,
+ const char *key,
+ size_t key_len,
+ const char *value,
+ size_t *value_len, /* IN: number of bytes available in "value", OUT: number
+ of bytes processed */
+ struct mg_form_data_handler *fdh)
+{
+ char key_dec[1024];
+ int key_dec_len;
+
+ char *value_dec = (char *)mg_malloc_ctx(*value_len + 1, conn->phys_ctx);
+ int value_dec_len, ret;
+
+ if (!value_dec) {
+ /* Log error message and stop parsing the form data. */
+ mg_cry_internal(conn,
+ "%s: Not enough memory (required: %lu)",
+ __func__,
+ (unsigned long)(*value_len + 1));
+ return MG_FORM_FIELD_STORAGE_ABORT;
+ }
+
+ key_dec_len =
+ mg_url_decode(key, (int)key_len, key_dec, (int)sizeof(key_dec), 1);
+
+ if (*value_len >= 2 && value[*value_len - 2] == '%')
+ *value_len -= 2;
+ else if (*value_len >= 1 && value[*value_len - 1] == '%')
+ (*value_len)--;
+ value_dec_len = mg_url_decode(
+ value, (int)*value_len, value_dec, ((int)*value_len) + 1, 1);
+
+ if ((key_dec_len < 0) || (value_dec_len < 0)) {
+ mg_free(value_dec);
+ return MG_FORM_FIELD_STORAGE_ABORT;
+ }
+
+ ret = fdh->field_get(key_dec,
+ value_dec,
+ (size_t)value_dec_len,
+ fdh->user_data);
+
+ mg_free(value_dec);
+
+ return ret;
+}
+
+static int
+unencoded_field_get(const struct mg_connection *conn,
+ const char *key,
+ size_t key_len,
+ const char *value,
+ size_t value_len,
+ struct mg_form_data_handler *fdh)
+{
+ char key_dec[1024];
+ int key_dec_len;
+ (void)conn;
+
+ key_dec_len =
+ mg_url_decode(key, (int)key_len, key_dec, (int)sizeof(key_dec), 1);
+ if (key_dec_len < 0) {
+ return MG_FORM_FIELD_STORAGE_ABORT;
+ }
+
+ return fdh->field_get(key_dec, value, value_len, fdh->user_data);
+}
+
+static int
+field_stored(const struct mg_connection *conn,
+ const char *path,
+ long long file_size,
+ struct mg_form_data_handler *fdh)
+{
+ /* Equivalent to "upload" callback of "mg_upload". */
+
+ (void)conn; /* we do not need mg_cry here, so conn is currently unused */
+
+ return fdh->field_store(path, file_size, fdh->user_data);
+}
+
+static const char *
+search_boundary(const char *buf,
+ size_t buf_len,
+ const char *boundary,
+ size_t boundary_len)
+{
+ char *boundary_start = "\r\n--";
+ size_t boundary_start_len = strlen(boundary_start);
+
+ /* We must do a binary search here, not a string search, since the
+ * buffer may contain '\x00' bytes, if binary data is transferred. */
+ int clen = (int)buf_len - (int)boundary_len - boundary_start_len;
+ int i;
+
+ for (i = 0; i <= clen; i++) {
+ if (!memcmp(buf + i, boundary_start, boundary_start_len)) {
+ if (!memcmp(buf + i + boundary_start_len, boundary, boundary_len)) {
+ return buf + i;
+ }
+ }
+ }
+ return NULL;
+}
+
+int
+mg_handle_form_request(struct mg_connection *conn,
+ struct mg_form_data_handler *fdh)
+{
+ const char *content_type;
+ char path[512];
+ char buf[MG_BUF_LEN]; /* Must not be smaller than ~900 */
+ int field_storage;
+ size_t buf_fill = 0;
+ int r;
+ int field_count = 0;
+ int abort_read = 0;
+ struct mg_file fstore = STRUCT_FILE_INITIALIZER;
+ int64_t file_size = 0; /* init here, to a avoid a false positive
+ "uninitialized variable used" warning */
+
+ int has_body_data =
+ (conn->request_info.content_length > 0) || (conn->is_chunked);
+
+ /* Unused without filesystems */
+ (void)fstore;
+ (void)file_size;
+
+ /* There are three ways to encode data from a HTML form:
+ * 1) method: GET (default)
+ * The form data is in the HTTP query string.
+ * 2) method: POST, enctype: "application/x-www-form-urlencoded"
+ * The form data is in the request body.
+ * The body is url encoded (the default encoding for POST).
+ * 3) method: POST, enctype: "multipart/form-data".
+ * The form data is in the request body of a multipart message.
+ * This is the typical way to handle file upload from a form.
+ */
+
+ if (!has_body_data) {
+ const char *data;
+
+ if (0 != strcmp(conn->request_info.request_method, "GET")) {
+ /* No body data, but not a GET request.
+ * This is not a valid form request. */
+ return -1;
+ }
+
+ /* GET request: form data is in the query string. */
+ /* The entire data has already been loaded, so there is no need to
+ * call mg_read. We just need to split the query string into key-value
+ * pairs. */
+ data = conn->request_info.query_string;
+ if (!data) {
+ /* No query string. */
+ return -1;
+ }
+
+ /* Split data in a=1&b=xy&c=3&c=4 ... */
+ while (*data) {
+ const char *val = strchr(data, '=');
+ const char *next;
+ ptrdiff_t keylen, vallen;
+
+ if (!val) {
+ break;
+ }
+ keylen = val - data;
+
+ /* In every "field_found" callback we ask what to do with the
+ * data ("field_storage"). This could be:
+ * MG_FORM_FIELD_STORAGE_SKIP (0):
+ * ignore the value of this field
+ * MG_FORM_FIELD_STORAGE_GET (1):
+ * read the data and call the get callback function
+ * MG_FORM_FIELD_STORAGE_STORE (2):
+ * store the data in a file
+ * MG_FORM_FIELD_STORAGE_READ (3):
+ * let the user read the data (for parsing long data on the fly)
+ * MG_FORM_FIELD_STORAGE_ABORT (flag):
+ * stop parsing
+ */
+ memset(path, 0, sizeof(path));
+ field_count++;
+ field_storage = url_encoded_field_found(conn,
+ data,
+ (size_t)keylen,
+ NULL,
+ 0,
+ path,
+ sizeof(path) - 1,
+ fdh);
+
+ val++;
+ next = strchr(val, '&');
+ if (next) {
+ vallen = next - val;
+ } else {
+ vallen = (ptrdiff_t)strlen(val);
+ }
+
+ if (field_storage == MG_FORM_FIELD_STORAGE_GET) {
+ /* Call callback */
+ r = url_encoded_field_get(
+ conn, data, (size_t)keylen, val, (size_t *)&vallen, fdh);
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ if (r == MG_FORM_FIELD_HANDLE_NEXT) {
+ /* Skip to next field */
+ field_storage = MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+
+ if (next) {
+ next++;
+ } else {
+ /* vallen may have been modified by url_encoded_field_get */
+ next = val + vallen;
+ }
+
+#if !defined(NO_FILESYSTEMS)
+ if (field_storage == MG_FORM_FIELD_STORAGE_STORE) {
+ /* Store the content to a file */
+ if (mg_fopen(conn, path, MG_FOPEN_MODE_WRITE, &fstore) == 0) {
+ fstore.access.fp = NULL;
+ }
+ file_size = 0;
+ if (fstore.access.fp != NULL) {
+ size_t n = (size_t)
+ fwrite(val, 1, (size_t)vallen, fstore.access.fp);
+ if ((n != (size_t)vallen) || (ferror(fstore.access.fp))) {
+ mg_cry_internal(conn,
+ "%s: Cannot write file %s",
+ __func__,
+ path);
+ (void)mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ }
+ file_size += (int64_t)n;
+
+ if (fstore.access.fp) {
+ r = mg_fclose(&fstore.access);
+ if (r == 0) {
+ /* stored successfully */
+ r = field_stored(conn, path, file_size, fdh);
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+
+ } else {
+ mg_cry_internal(conn,
+ "%s: Error saving file %s",
+ __func__,
+ path);
+ remove_bad_file(conn, path);
+ }
+ fstore.access.fp = NULL;
+ }
+
+ } else {
+ mg_cry_internal(conn,
+ "%s: Cannot create file %s",
+ __func__,
+ path);
+ }
+ }
+#endif /* NO_FILESYSTEMS */
+
+ /* if (field_storage == MG_FORM_FIELD_STORAGE_READ) { */
+ /* The idea of "field_storage=read" is to let the API user read
+ * data chunk by chunk and to some data processing on the fly.
+ * This should avoid the need to store data in the server:
+ * It should neither be stored in memory, like
+ * "field_storage=get" does, nor in a file like
+ * "field_storage=store".
+ * However, for a "GET" request this does not make any much
+ * sense, since the data is already stored in memory, as it is
+ * part of the query string.
+ */
+ /* } */
+
+ if ((field_storage & MG_FORM_FIELD_STORAGE_ABORT)
+ == MG_FORM_FIELD_STORAGE_ABORT) {
+ /* Stop parsing the request */
+ abort_read = 1;
+ break;
+ }
+
+ /* Proceed to next entry */
+ data = next;
+ }
+
+ return field_count;
+ }
+
+ content_type = mg_get_header(conn, "Content-Type");
+
+ if (!content_type
+ || !mg_strncasecmp(content_type,
+ "APPLICATION/X-WWW-FORM-URLENCODED",
+ 33)
+ || !mg_strncasecmp(content_type,
+ "APPLICATION/WWW-FORM-URLENCODED",
+ 31)) {
+ /* The form data is in the request body data, encoded in key/value
+ * pairs. */
+ int all_data_read = 0;
+
+ /* Read body data and split it in keys and values.
+ * The encoding is like in the "GET" case above: a=1&b&c=3&c=4.
+ * Here we use "POST", and read the data from the request body.
+ * The data read on the fly, so it is not required to buffer the
+ * entire request in memory before processing it. */
+ while (!abort_read) {
+ const char *val;
+ const char *next;
+ ptrdiff_t keylen, vallen;
+ ptrdiff_t used;
+ int end_of_key_value_pair_found = 0;
+ int get_block;
+
+ if (buf_fill < (sizeof(buf) - 1)) {
+
+ size_t to_read = sizeof(buf) - 1 - buf_fill;
+ r = mg_read(conn, buf + buf_fill, to_read);
+ if ((r < 0) || ((r == 0) && all_data_read)) {
+ /* read error */
+ return -1;
+ }
+ if (r == 0) {
+ /* TODO: Create a function to get "all_data_read" from
+ * the conn object. All data is read if the Content-Length
+ * has been reached, or if chunked encoding is used and
+ * the end marker has been read, or if the connection has
+ * been closed. */
+ all_data_read = (buf_fill == 0);
+ }
+ buf_fill += r;
+ buf[buf_fill] = 0;
+ if (buf_fill < 1) {
+ break;
+ }
+ }
+
+ val = strchr(buf, '=');
+
+ if (!val) {
+ break;
+ }
+ keylen = val - buf;
+ val++;
+
+ /* Call callback */
+ memset(path, 0, sizeof(path));
+ field_count++;
+ field_storage = url_encoded_field_found(conn,
+ buf,
+ (size_t)keylen,
+ NULL,
+ 0,
+ path,
+ sizeof(path) - 1,
+ fdh);
+
+ if ((field_storage & MG_FORM_FIELD_STORAGE_ABORT)
+ == MG_FORM_FIELD_STORAGE_ABORT) {
+ /* Stop parsing the request */
+ abort_read = 1;
+ break;
+ }
+
+#if !defined(NO_FILESYSTEMS)
+ if (field_storage == MG_FORM_FIELD_STORAGE_STORE) {
+ if (mg_fopen(conn, path, MG_FOPEN_MODE_WRITE, &fstore) == 0) {
+ fstore.access.fp = NULL;
+ }
+ file_size = 0;
+ if (!fstore.access.fp) {
+ mg_cry_internal(conn,
+ "%s: Cannot create file %s",
+ __func__,
+ path);
+ }
+ }
+#endif /* NO_FILESYSTEMS */
+
+ get_block = 0;
+ /* Loop to read values larger than sizeof(buf)-keylen-2 */
+ do {
+ next = strchr(val, '&');
+ if (next) {
+ vallen = next - val;
+ end_of_key_value_pair_found = 1;
+ } else {
+ vallen = (ptrdiff_t)strlen(val);
+ end_of_key_value_pair_found = all_data_read;
+ if ((buf + buf_fill) > (val + vallen)) {
+ /* Avoid DoS attacks by having a zero byte in the middle
+ * of a request that is supposed to be URL encoded.
+ * Since this request is certainly invalid, according to
+ * the protocol
+ * specification, stop processing it. Fixes #1348 */
+ abort_read = 1;
+ break;
+ }
+ }
+
+ if (field_storage == MG_FORM_FIELD_STORAGE_GET) {
+#if 0
+ if (!end_of_key_value_pair_found && !all_data_read) {
+ /* This callback will deliver partial contents */
+ }
+#endif
+
+ /* Call callback */
+ r = url_encoded_field_get(conn,
+ ((get_block > 0) ? NULL : buf),
+ ((get_block > 0)
+ ? 0
+ : (size_t)keylen),
+ val,
+ (size_t *)&vallen,
+ fdh);
+ get_block++;
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ if (r == MG_FORM_FIELD_HANDLE_NEXT) {
+ /* Skip to next field */
+ field_storage = MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+
+ if (next) {
+ next++;
+ } else {
+ /* vallen may have been modified by url_encoded_field_get */
+ next = val + vallen;
+ }
+
+#if !defined(NO_FILESYSTEMS)
+ if (fstore.access.fp) {
+ size_t n = (size_t)
+ fwrite(val, 1, (size_t)vallen, fstore.access.fp);
+ if ((n != (size_t)vallen) || (ferror(fstore.access.fp))) {
+ mg_cry_internal(conn,
+ "%s: Cannot write file %s",
+ __func__,
+ path);
+ mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ }
+ file_size += (int64_t)n;
+ }
+#endif /* NO_FILESYSTEMS */
+
+ if (!end_of_key_value_pair_found) {
+ used = next - buf;
+ memmove(buf,
+ buf + (size_t)used,
+ sizeof(buf) - (size_t)used);
+ next = buf;
+ buf_fill -= used;
+ if (buf_fill < (sizeof(buf) - 1)) {
+
+ size_t to_read = sizeof(buf) - 1 - buf_fill;
+ r = mg_read(conn, buf + buf_fill, to_read);
+ if ((r < 0) || ((r == 0) && all_data_read)) {
+#if !defined(NO_FILESYSTEMS)
+ /* read error */
+ if (fstore.access.fp) {
+ mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ }
+ return -1;
+#endif /* NO_FILESYSTEMS */
+ }
+ if (r == 0) {
+ /* TODO: Create a function to get "all_data_read"
+ * from the conn object. All data is read if the
+ * Content-Length has been reached, or if chunked
+ * encoding is used and the end marker has been
+ * read, or if the connection has been closed. */
+ all_data_read = (buf_fill == 0);
+ }
+ buf_fill += r;
+ buf[buf_fill] = 0;
+ if (buf_fill < 1) {
+ break;
+ }
+ val = buf;
+ }
+ }
+ } while (!end_of_key_value_pair_found);
+
+#if !defined(NO_FILESYSTEMS)
+ if (fstore.access.fp) {
+ r = mg_fclose(&fstore.access);
+ if (r == 0) {
+ /* stored successfully */
+ r = field_stored(conn, path, file_size, fdh);
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ } else {
+ mg_cry_internal(conn,
+ "%s: Error saving file %s",
+ __func__,
+ path);
+ remove_bad_file(conn, path);
+ }
+ fstore.access.fp = NULL;
+ }
+#endif /* NO_FILESYSTEMS */
+
+ if ((all_data_read && (buf_fill == 0)) || abort_read) {
+ /* nothing more to process */
+ break;
+ }
+
+ /* Proceed to next entry */
+ used = next - buf;
+ memmove(buf, buf + (size_t)used, sizeof(buf) - (size_t)used);
+ buf_fill -= used;
+ }
+
+ return field_count;
+ }
+
+ if (!mg_strncasecmp(content_type, "MULTIPART/FORM-DATA;", 20)) {
+ /* The form data is in the request body data, encoded as multipart
+ * content (see https://www.ietf.org/rfc/rfc1867.txt,
+ * https://www.ietf.org/rfc/rfc2388.txt). */
+ char *boundary;
+ size_t bl;
+ ptrdiff_t used;
+ struct mg_request_info part_header;
+ char *hbuf;
+ const char *content_disp, *hend, *fbeg, *fend, *nbeg, *nend;
+ const char *next;
+ unsigned part_no;
+ int all_data_read = 0;
+
+ memset(&part_header, 0, sizeof(part_header));
+
+ /* Skip all spaces between MULTIPART/FORM-DATA; and BOUNDARY= */
+ bl = 20;
+ while (content_type[bl] == ' ') {
+ bl++;
+ }
+
+ /* There has to be a BOUNDARY definition in the Content-Type header */
+ if (mg_strncasecmp(content_type + bl, "BOUNDARY=", 9)) {
+ /* Malformed request */
+ return -1;
+ }
+
+ /* Copy boundary string to variable "boundary" */
+ /* fbeg is pointer to start of value of boundary */
+ fbeg = content_type + bl + 9;
+ bl = strlen(fbeg);
+ boundary = (char *)mg_malloc(bl + 1);
+ if (!boundary) {
+ /* Out of memory */
+ mg_cry_internal(conn,
+ "%s: Cannot allocate memory for boundary [%lu]",
+ __func__,
+ (unsigned long)bl);
+ return -1;
+ }
+ memcpy(boundary, fbeg, bl);
+ boundary[bl] = 0;
+
+ /* RFC 2046 permits the boundary string to be quoted. */
+ /* If the boundary is quoted, trim the quotes */
+ if (boundary[0] == '"') {
+ hbuf = strchr(boundary + 1, '"');
+ if ((!hbuf) || (*hbuf != '"')) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+ *hbuf = 0;
+ memmove(boundary, boundary + 1, bl);
+ bl = strlen(boundary);
+ }
+
+ /* Do some sanity checks for boundary lengths */
+ if (bl > 70) {
+ /* From RFC 2046:
+ * Boundary delimiters must not appear within the
+ * encapsulated material, and must be no longer
+ * than 70 characters, not counting the two
+ * leading hyphens.
+ */
+
+ /* The algorithm can not work if bl >= sizeof(buf), or if buf
+ * can not hold the multipart header plus the boundary.
+ * Requests with long boundaries are not RFC compliant, maybe they
+ * are intended attacks to interfere with this algorithm. */
+ mg_free(boundary);
+ return -1;
+ }
+ if (bl < 4) {
+ /* Sanity check: A boundary string of less than 4 bytes makes
+ * no sense either. */
+ mg_free(boundary);
+ return -1;
+ }
+
+ for (part_no = 0;; part_no++) {
+ size_t towrite, fnlen, n;
+ int get_block;
+ size_t to_read = sizeof(buf) - 1 - buf_fill;
+
+ /* Unused without filesystems */
+ (void)n;
+
+ r = mg_read(conn, buf + buf_fill, to_read);
+ if ((r < 0) || ((r == 0) && all_data_read)) {
+ /* read error */
+ mg_free(boundary);
+ return -1;
+ }
+ if (r == 0) {
+ all_data_read = (buf_fill == 0);
+ }
+
+ buf_fill += r;
+ buf[buf_fill] = 0;
+ if (buf_fill < 1) {
+ /* No data */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* @see https://www.rfc-editor.org/rfc/rfc2046.html#section-5.1.1
+ *
+ * multipart-body := [preamble CRLF]
+ * dash-boundary transport-padding CRLF
+ * body-part *encapsulation
+ * close-delimiter transport-padding
+ * [CRLF epilogue]
+ */
+
+ if (part_no == 0) {
+ size_t preamble_length = 0;
+ /* skip over the preamble until we find a complete boundary
+ * limit the preamble length to prevent abuse */
+ /* +2 for the -- preceding the boundary */
+ while (preamble_length < 1024
+ && (preamble_length < buf_fill - bl)
+ && strncmp(buf + preamble_length + 2, boundary, bl)) {
+ preamble_length++;
+ }
+ /* reset the start of buf to remove the preamble */
+ if (0 == strncmp(buf + preamble_length + 2, boundary, bl)) {
+ memmove(buf,
+ buf + preamble_length,
+ (unsigned)buf_fill - (unsigned)preamble_length);
+ buf_fill -= preamble_length;
+ buf[buf_fill] = 0;
+ }
+ }
+
+ /* either it starts with a boundary and it's fine, or it's malformed
+ * because:
+ * - the preamble was longer than accepted
+ * - couldn't find a boundary at all in the body
+ * - didn't have a terminating boundary */
+ if (buf_fill < (bl + 2) || strncmp(buf, "--", 2)
+ || strncmp(buf + 2, boundary, bl)) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* skip the -- */
+ char *boundary_start = buf + 2;
+ size_t transport_padding = 0;
+ while (boundary_start[bl + transport_padding] == ' '
+ || boundary_start[bl + transport_padding] == '\t') {
+ transport_padding++;
+ }
+ char *boundary_end = boundary_start + bl + transport_padding;
+
+ /* after the transport padding, if the boundary isn't
+ * immediately followed by a \r\n then it is either... */
+ if (strncmp(boundary_end, "\r\n", 2)) {
+ /* ...the final boundary, and it is followed by --, (in which
+ * case it's the end of the request) or it's a malformed
+ * request */
+ if (strncmp(boundary_end, "--", 2)) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+ /* Ingore any epilogue here */
+ break;
+ }
+
+ /* skip the \r\n */
+ hbuf = boundary_end + 2;
+ /* Next, we need to get the part header: Read until \r\n\r\n */
+ hend = strstr(hbuf, "\r\n\r\n");
+ if (!hend) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+
+ part_header.num_headers =
+ parse_http_headers(&hbuf, part_header.http_headers);
+ if ((hend + 2) != hbuf) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* Skip \r\n\r\n */
+ hend += 4;
+
+ /* According to the RFC, every part has to have a header field like:
+ * Content-Disposition: form-data; name="..." */
+ content_disp = get_header(part_header.http_headers,
+ part_header.num_headers,
+ "Content-Disposition");
+ if (!content_disp) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* Get the mandatory name="..." part of the Content-Disposition
+ * header. */
+ nbeg = strstr(content_disp, "name=\"");
+ while ((nbeg != NULL) && (strcspn(nbeg - 1, ":,; \t") != 0)) {
+ /* It could be somethingname= instead of name= */
+ nbeg = strstr(nbeg + 1, "name=\"");
+ }
+
+ /* This line is not required, but otherwise some compilers
+ * generate spurious warnings. */
+ nend = nbeg;
+ /* And others complain, the result is unused. */
+ (void)nend;
+
+ /* If name=" is found, search for the closing " */
+ if (nbeg) {
+ nbeg += 6;
+ nend = strchr(nbeg, '\"');
+ if (!nend) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+ } else {
+ /* name= without quotes is also allowed */
+ nbeg = strstr(content_disp, "name=");
+ while ((nbeg != NULL) && (strcspn(nbeg - 1, ":,; \t") != 0)) {
+ /* It could be somethingname= instead of name= */
+ nbeg = strstr(nbeg + 1, "name=");
+ }
+ if (!nbeg) {
+ /* Malformed request */
+ mg_free(boundary);
+ return -1;
+ }
+ nbeg += 5;
+
+ /* RFC 2616 Sec. 2.2 defines a list of allowed
+ * separators, but many of them make no sense
+ * here, e.g. various brackets or slashes.
+ * If they are used, probably someone is
+ * trying to attack with curious hand made
+ * requests. Only ; , space and tab seem to be
+ * reasonable here. Ignore everything else. */
+ nend = nbeg + strcspn(nbeg, ",; \t");
+ }
+
+ /* Get the optional filename="..." part of the Content-Disposition
+ * header. */
+ fbeg = strstr(content_disp, "filename=\"");
+ while ((fbeg != NULL) && (strcspn(fbeg - 1, ":,; \t") != 0)) {
+ /* It could be somethingfilename= instead of filename= */
+ fbeg = strstr(fbeg + 1, "filename=\"");
+ }
+
+ /* This line is not required, but otherwise some compilers
+ * generate spurious warnings. */
+ fend = fbeg;
+
+ /* If filename=" is found, search for the closing " */
+ if (fbeg) {
+ fbeg += 10;
+ fend = strchr(fbeg, '\"');
+
+ if (!fend) {
+ /* Malformed request (the filename field is optional, but if
+ * it exists, it needs to be terminated correctly). */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* TODO: check Content-Type */
+ /* Content-Type: application/octet-stream */
+ }
+ if (!fbeg) {
+ /* Try the same without quotes */
+ fbeg = strstr(content_disp, "filename=");
+ while ((fbeg != NULL) && (strcspn(fbeg - 1, ":,; \t") != 0)) {
+ /* It could be somethingfilename= instead of filename= */
+ fbeg = strstr(fbeg + 1, "filename=");
+ }
+ if (fbeg) {
+ fbeg += 9;
+ fend = fbeg + strcspn(fbeg, ",; \t");
+ }
+ }
+
+ if (!fbeg || !fend) {
+ fbeg = NULL;
+ fend = NULL;
+ fnlen = 0;
+ } else {
+ fnlen = (size_t)(fend - fbeg);
+ }
+
+ /* In theory, it could be possible that someone crafts
+ * a request like name=filename=xyz. Check if name and
+ * filename do not overlap. */
+ if (!(((ptrdiff_t)fbeg > (ptrdiff_t)nend)
+ || ((ptrdiff_t)nbeg > (ptrdiff_t)fend))) {
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* Call callback for new field */
+ memset(path, 0, sizeof(path));
+ field_count++;
+ field_storage = url_encoded_field_found(conn,
+ nbeg,
+ (size_t)(nend - nbeg),
+ ((fnlen > 0) ? fbeg : NULL),
+ fnlen,
+ path,
+ sizeof(path) - 1,
+ fdh);
+
+ /* If the boundary is already in the buffer, get the address,
+ * otherwise next will be NULL. */
+ next = search_boundary(hbuf,
+ (size_t)((buf - hbuf) + buf_fill),
+ boundary,
+ bl);
+
+#if !defined(NO_FILESYSTEMS)
+ if (field_storage == MG_FORM_FIELD_STORAGE_STORE) {
+ /* Store the content to a file */
+ if (mg_fopen(conn, path, MG_FOPEN_MODE_WRITE, &fstore) == 0) {
+ fstore.access.fp = NULL;
+ }
+ file_size = 0;
+
+ if (!fstore.access.fp) {
+ mg_cry_internal(conn,
+ "%s: Cannot create file %s",
+ __func__,
+ path);
+ }
+ }
+#endif /* NO_FILESYSTEMS */
+
+ get_block = 0;
+ while (!next) {
+ /* Set "towrite" to the number of bytes available
+ * in the buffer */
+ towrite = (size_t)(buf - hend + buf_fill);
+
+ if (towrite < bl + 4) {
+ /* Not enough data stored. */
+ /* Incomplete request. */
+ mg_free(boundary);
+ return -1;
+ }
+
+ /* Subtract the boundary length, to deal with
+ * cases the boundary is only partially stored
+ * in the buffer. */
+ towrite -= bl + 4;
+
+ if (field_storage == MG_FORM_FIELD_STORAGE_GET) {
+ r = unencoded_field_get(conn,
+ ((get_block > 0) ? NULL : nbeg),
+ ((get_block > 0)
+ ? 0
+ : (size_t)(nend - nbeg)),
+ hend,
+ towrite,
+ fdh);
+ get_block++;
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ if (r == MG_FORM_FIELD_HANDLE_NEXT) {
+ /* Skip to next field */
+ field_storage = MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+
+#if !defined(NO_FILESYSTEMS)
+ if (field_storage == MG_FORM_FIELD_STORAGE_STORE) {
+ if (fstore.access.fp) {
+
+ /* Store the content of the buffer. */
+ n = (size_t)fwrite(hend, 1, towrite, fstore.access.fp);
+ if ((n != towrite) || (ferror(fstore.access.fp))) {
+ mg_cry_internal(conn,
+ "%s: Cannot write file %s",
+ __func__,
+ path);
+ mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ }
+ file_size += (int64_t)n;
+ }
+ }
+#endif /* NO_FILESYSTEMS */
+
+ memmove(buf, hend + towrite, bl + 4);
+ buf_fill = bl + 4;
+ hend = buf;
+
+ /* Read new data */
+ to_read = sizeof(buf) - 1 - buf_fill;
+ r = mg_read(conn, buf + buf_fill, to_read);
+ if ((r < 0) || ((r == 0) && all_data_read)) {
+#if !defined(NO_FILESYSTEMS)
+ /* read error */
+ if (fstore.access.fp) {
+ mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ }
+#endif /* NO_FILESYSTEMS */
+ mg_free(boundary);
+ return -1;
+ }
+ /* r==0 already handled, all_data_read is false here */
+
+ buf_fill += r;
+ buf[buf_fill] = 0;
+ /* buf_fill is at least 8 here */
+
+ /* Find boundary */
+ next = search_boundary(buf, buf_fill, boundary, bl);
+
+ if (!next && (r == 0)) {
+ /* incomplete request */
+ all_data_read = 1;
+ }
+ }
+
+ towrite = (next ? (size_t)(next - hend) : 0);
+
+ if (field_storage == MG_FORM_FIELD_STORAGE_GET) {
+ /* Call callback */
+ r = unencoded_field_get(conn,
+ ((get_block > 0) ? NULL : nbeg),
+ ((get_block > 0)
+ ? 0
+ : (size_t)(nend - nbeg)),
+ hend,
+ towrite,
+ fdh);
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ if (r == MG_FORM_FIELD_HANDLE_NEXT) {
+ /* Skip to next field */
+ field_storage = MG_FORM_FIELD_STORAGE_SKIP;
+ }
+ }
+
+#if !defined(NO_FILESYSTEMS)
+ if (field_storage == MG_FORM_FIELD_STORAGE_STORE) {
+
+ if (fstore.access.fp) {
+ n = (size_t)fwrite(hend, 1, towrite, fstore.access.fp);
+ if ((n != towrite) || (ferror(fstore.access.fp))) {
+ mg_cry_internal(conn,
+ "%s: Cannot write file %s",
+ __func__,
+ path);
+ mg_fclose(&fstore.access);
+ remove_bad_file(conn, path);
+ } else {
+ file_size += (int64_t)n;
+ r = mg_fclose(&fstore.access);
+ if (r == 0) {
+ /* stored successfully */
+ r = field_stored(conn, path, file_size, fdh);
+ if (r == MG_FORM_FIELD_HANDLE_ABORT) {
+ /* Stop request handling */
+ abort_read = 1;
+ break;
+ }
+ } else {
+ mg_cry_internal(conn,
+ "%s: Error saving file %s",
+ __func__,
+ path);
+ remove_bad_file(conn, path);
+ }
+ }
+ fstore.access.fp = NULL;
+ }
+ }
+#endif /* NO_FILESYSTEMS */
+
+ if ((field_storage & MG_FORM_FIELD_STORAGE_ABORT)
+ == MG_FORM_FIELD_STORAGE_ABORT) {
+ /* Stop parsing the request */
+ abort_read = 1;
+ break;
+ }
+
+ /* Remove from the buffer */
+ if (next) {
+ used = next - buf + 2;
+ memmove(buf, buf + (size_t)used, sizeof(buf) - (size_t)used);
+ buf_fill -= used;
+ } else {
+ buf_fill = 0;
+ }
+ }
+
+ /* All parts handled */
+ mg_free(boundary);
+ return field_count;
+ }
+
+ /* Unknown Content-Type */
+ return -1;
+}
+
+/* End of handle_form.inl */
diff --git a/v2/webui/src/civetweb/match.inl b/v2/webui/src/civetweb/match.inl
new file mode 100644
index 0000000..34ee00e
--- /dev/null
+++ b/v2/webui/src/civetweb/match.inl
@@ -0,0 +1,262 @@
+/* Reimplementation of pattern matching */
+/* This file is part of the CivetWeb web server.
+ * See https://github.com/civetweb/civetweb/
+ */
+
+
+/* Initialize structure with 0 matches */
+static void
+match_context_reset(struct mg_match_context *mcx)
+{
+ mcx->num_matches = 0;
+ memset(mcx->match, 0, sizeof(mcx->match));
+}
+
+
+/* Add a new match to the list of matches */
+static void
+match_context_push(const char *str, size_t len, struct mg_match_context *mcx)
+{
+ if (mcx->num_matches < MG_MATCH_CONTEXT_MAX_MATCHES) {
+ mcx->match[mcx->num_matches].str = str;
+ mcx->match[mcx->num_matches].len = len;
+ mcx->num_matches++;
+ }
+}
+
+
+static ptrdiff_t
+mg_match_impl(const char *pat,
+ size_t pat_len,
+ const char *str,
+ struct mg_match_context *mcx)
+{
+ /* Parse string */
+ size_t i_pat = 0; /* Pattern index */
+ size_t i_str = 0; /* Pattern index */
+
+ int case_sensitive = ((mcx != NULL) ? mcx->case_sensitive : 0); /* 0 or 1 */
+
+ while (i_pat < pat_len) {
+
+ /* Pattern ? matches one character, except / and NULL character */
+ if ((pat[i_pat] == '?') && (str[i_str] != '\0')
+ && (str[i_str] != '/')) {
+ size_t i_str_start = i_str;
+ do {
+ /* Advance as long as there are ? */
+ i_pat++;
+ i_str++;
+ } while ((i_pat < pat_len) && (pat[i_pat] == '?')
+ && (str[i_str] != '\0') && (str[i_str] != '/'));
+
+ /* If we have a match context, add the substring we just found */
+ if (mcx) {
+ match_context_push(str + i_str_start, i_str - i_str_start, mcx);
+ }
+
+ /* Reached end of pattern ? */
+ if (i_pat == pat_len) {
+ return (ptrdiff_t)i_str;
+ }
+ }
+
+ /* Pattern $ matches end of string */
+ if (pat[i_pat] == '$') {
+ return (str[i_str] == '\0') ? (ptrdiff_t)i_str : -1;
+ }
+
+ /* Pattern * or ** matches multiple characters */
+ if (pat[i_pat] == '*') {
+ size_t len; /* length matched by "*" or "**" */
+ ptrdiff_t ret;
+
+ i_pat++;
+ if ((i_pat < pat_len) && (pat[i_pat] == '*')) {
+ /* Pattern ** matches all */
+ i_pat++;
+ len = strlen(str + i_str);
+ } else {
+ /* Pattern * matches all except / character */
+ len = strcspn(str + i_str, "/");
+ }
+
+ if (i_pat == pat_len) {
+ /* End of pattern reached. Add all to match context. */
+ if (mcx) {
+ match_context_push(str + i_str, len, mcx);
+ }
+ return ((ptrdiff_t)(i_str + len));
+ }
+
+ /* This loop searches for the longest possible match */
+ do {
+ ret = mg_match_impl(pat + i_pat,
+ (pat_len - (size_t)i_pat),
+ str + i_str + len,
+ mcx);
+ } while ((ret == -1) && (len-- > 0));
+
+ /* If we have a match context, add the substring we just found */
+ if (ret >= 0) {
+ if (mcx) {
+ match_context_push(str + i_str, len, mcx);
+ }
+ return ((ptrdiff_t)i_str + ret + (ptrdiff_t)len);
+ }
+
+ return -1;
+ }
+
+
+ /* Single character compare */
+ if (case_sensitive) {
+ if (pat[i_pat] != str[i_str]) {
+ /* case sensitive compare: mismatch */
+ return -1;
+ }
+ } else if (lowercase(&pat[i_pat]) != lowercase(&str[i_str])) {
+ /* case insensitive compare: mismatch */
+ return -1;
+ }
+
+ i_pat++;
+ i_str++;
+ }
+ return (ptrdiff_t)i_str;
+}
+
+
+static ptrdiff_t
+mg_match_alternatives(const char *pat,
+ size_t pat_len,
+ const char *str,
+ struct mg_match_context *mcx)
+{
+ const char *match_alternative = (const char *)memchr(pat, '|', pat_len);
+
+ if (mcx != NULL) {
+ match_context_reset(mcx);
+ }
+
+ while (match_alternative != NULL) {
+ /* Split at | for alternative match */
+ size_t left_size = (size_t)(match_alternative - pat);
+
+ /* Try left string first */
+ ptrdiff_t ret = mg_match_impl(pat, left_size, str, mcx);
+ if (ret >= 0) {
+ /* A 0-byte match is also valid */
+ return ret;
+ }
+
+ /* Reset possible incomplete match data */
+ if (mcx != NULL) {
+ match_context_reset(mcx);
+ }
+
+ /* If no match: try right side */
+ pat += left_size + 1;
+ pat_len -= left_size + 1;
+ match_alternative = (const char *)memchr(pat, '|', pat_len);
+ }
+
+ /* Handled all | operators. This is the final string. */
+ return mg_match_impl(pat, pat_len, str, mcx);
+}
+
+
+static int
+match_compare(const void *p1, const void *p2, void *user)
+{
+ const struct mg_match_element *e1 = (const struct mg_match_element *)p1;
+ const struct mg_match_element *e2 = (const struct mg_match_element *)p2;
+
+ /* unused */
+ (void)user;
+
+ if (e1->str > e2->str) {
+ return +1;
+ }
+ if (e1->str < e2->str) {
+ return -1;
+ }
+ return 0;
+}
+
+
+#if defined(MG_EXPERIMENTAL_INTERFACES)
+CIVETWEB_API
+#else
+static
+#endif
+ptrdiff_t
+mg_match(const char *pat, const char *str, struct mg_match_context *mcx)
+{
+ size_t pat_len = strlen(pat);
+ ptrdiff_t ret = mg_match_alternatives(pat, pat_len, str, mcx);
+ if (mcx != NULL) {
+ if (ret < 0) {
+ /* Remove possible incomplete data */
+ match_context_reset(mcx);
+ } else {
+ /* Join "?*" to one pattern. */
+ size_t i, j;
+
+ /* Use difference of two array elements instead of sizeof, since
+ * there may be some additional padding bytes. */
+ size_t elmsize =
+ (size_t)(&mcx->match[1]) - (size_t)(&mcx->match[0]);
+
+ /* First sort the matches by address ("str" begin to end) */
+ mg_sort(mcx->match, mcx->num_matches, elmsize, match_compare, NULL);
+
+ /* Join consecutive matches */
+ i = 1;
+ while (i < mcx->num_matches) {
+ if ((mcx->match[i - 1].str + mcx->match[i - 1].len)
+ == mcx->match[i].str) {
+ /* Two matches are consecutive. Join length. */
+ mcx->match[i - 1].len += mcx->match[i].len;
+
+ /* Shift all list elements. */
+ for (j = i + 1; j < mcx->num_matches; j++) {
+ mcx->match[j - 1].len = mcx->match[j].len;
+ mcx->match[j - 1].str = mcx->match[j].str;
+ }
+
+ /* Remove/blank last list element. */
+ mcx->num_matches--;
+ mcx->match[mcx->num_matches].str = NULL;
+ mcx->match[mcx->num_matches].len = 0;
+
+ } else {
+ i++;
+ }
+ }
+ }
+ }
+ return ret;
+}
+
+
+static ptrdiff_t
+match_prefix(const char *pattern, size_t pattern_len, const char *str)
+{
+ if (pattern == NULL) {
+ return -1;
+ }
+ return mg_match_alternatives(pattern, pattern_len, str, NULL);
+}
+
+
+static ptrdiff_t
+match_prefix_strlen(const char *pattern, const char *str)
+{
+ if (pattern == NULL) {
+ return -1;
+ }
+ return mg_match_alternatives(pattern, strlen(pattern), str, NULL);
+}
+
+/* End of match.inl */
diff --git a/v2/webui/src/civetweb/md5.inl b/v2/webui/src/civetweb/md5.inl
new file mode 100644
index 0000000..5dd3a60
--- /dev/null
+++ b/v2/webui/src/civetweb/md5.inl
@@ -0,0 +1,472 @@
+/*
+ * This an amalgamation of md5.c and md5.h into a single file
+ * with all static declaration to reduce linker conflicts
+ * in Civetweb.
+ *
+ * The MD5_STATIC declaration was added to facilitate static
+ * inclusion.
+ * No Face Press, LLC
+ */
+
+/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
+/*
+ Independent implementation of MD5 (RFC 1321).
+
+ This code implements the MD5 Algorithm defined in RFC 1321, whose
+ text is available at
+ http://www.ietf.org/rfc/rfc1321.txt
+ The code is derived from the text of the RFC, including the test suite
+ (section A.5) but excluding the rest of Appendix A. It does not include
+ any code or documentation that is identified in the RFC as being
+ copyrighted.
+
+ The original and principal author of md5.h is L. Peter Deutsch
+ . Other authors are noted in the change history
+ that follows (in reverse chronological order):
+
+ 2002-04-13 lpd Removed support for non-ANSI compilers; removed
+ references to Ghostscript; clarified derivation from RFC 1321;
+ now handles byte order either statically or dynamically.
+ 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+ 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+ added conditionalization for C++ compilation from Martin
+ Purschke .
+ 1999-05-03 lpd Original version.
+ */
+
+#if !defined(md5_INCLUDED)
+#define md5_INCLUDED
+
+/*
+ * This package supports both compile-time and run-time determination of CPU
+ * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
+ * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
+ * defined as non-zero, the code will be compiled to run only on big-endian
+ * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
+ * run on either big- or little-endian CPUs, but will run slightly less
+ * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
+ */
+
+typedef unsigned char md5_byte_t; /* 8-bit byte */
+typedef unsigned int md5_word_t; /* 32-bit word */
+
+/* Define the state of the MD5 Algorithm. */
+typedef struct md5_state_s {
+ md5_word_t count[2]; /* message length in bits, lsw first */
+ md5_word_t abcd[4]; /* digest buffer */
+ md5_byte_t buf[64]; /* accumulate block */
+} md5_state_t;
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Initialize the algorithm. */
+MD5_STATIC void md5_init(md5_state_t *pms);
+
+/* Append a string to the message. */
+MD5_STATIC void
+md5_append(md5_state_t *pms, const md5_byte_t *data, size_t nbytes);
+
+/* Finish the message and return the digest. */
+MD5_STATIC void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+
+#if defined(__cplusplus)
+} /* end extern "C" */
+#endif
+
+#endif /* md5_INCLUDED */
+
+/*
+ Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ L. Peter Deutsch
+ ghost@aladdin.com
+
+ */
+/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
+/*
+ Independent implementation of MD5 (RFC 1321).
+
+ This code implements the MD5 Algorithm defined in RFC 1321, whose
+ text is available at
+ http://www.ietf.org/rfc/rfc1321.txt
+ The code is derived from the text of the RFC, including the test suite
+ (section A.5) but excluding the rest of Appendix A. It does not include
+ any code or documentation that is identified in the RFC as being
+ copyrighted.
+
+ The original and principal author of md5.c is L. Peter Deutsch
+ . Other authors are noted in the change history
+ that follows (in reverse chronological order):
+
+ 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
+ either statically or dynamically; added missing #include
+ in library.
+ 2002-03-11 lpd Corrected argument list for main(), and added int return
+ type, in test program and T value program.
+ 2002-02-21 lpd Added missing #include in test program.
+ 2000-07-03 lpd Patched to eliminate warnings about "constant is
+ unsigned in ANSI C, signed in traditional"; made test program
+ self-checking.
+ 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+ 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
+ 1999-05-03 lpd Original version.
+ */
+
+#if !defined(MD5_STATIC)
+#include
+#include
+#endif
+
+#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
+#if defined(ARCH_IS_BIG_ENDIAN)
+#define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
+#else
+#define BYTE_ORDER (0)
+#endif
+
+#define T_MASK ((md5_word_t)~0)
+#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
+#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
+#define T3 (0x242070db)
+#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
+#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
+#define T6 (0x4787c62a)
+#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
+#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
+#define T9 (0x698098d8)
+#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
+#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
+#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
+#define T13 (0x6b901122)
+#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
+#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
+#define T16 (0x49b40821)
+#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
+#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
+#define T19 (0x265e5a51)
+#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
+#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
+#define T22 (0x02441453)
+#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
+#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
+#define T25 (0x21e1cde6)
+#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
+#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
+#define T28 (0x455a14ed)
+#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
+#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
+#define T31 (0x676f02d9)
+#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
+#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
+#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
+#define T35 (0x6d9d6122)
+#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
+#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
+#define T38 (0x4bdecfa9)
+#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
+#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
+#define T41 (0x289b7ec6)
+#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
+#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
+#define T44 (0x04881d05)
+#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
+#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
+#define T47 (0x1fa27cf8)
+#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
+#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
+#define T50 (0x432aff97)
+#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
+#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
+#define T53 (0x655b59c3)
+#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
+#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
+#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
+#define T57 (0x6fa87e4f)
+#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
+#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
+#define T60 (0x4e0811a1)
+#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
+#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
+#define T63 (0x2ad7d2bb)
+#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
+
+static void
+md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
+{
+ md5_word_t a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2],
+ d = pms->abcd[3];
+ md5_word_t t;
+#if BYTE_ORDER > 0
+ /* Define storage only for big-endian CPUs. */
+ md5_word_t X[16];
+#else
+ /* Define storage for little-endian or both types of CPUs. */
+ md5_word_t xbuf[16];
+ const md5_word_t *X;
+#endif
+
+ {
+#if BYTE_ORDER == 0
+ /*
+ * Determine dynamically whether this is a big-endian or
+ * little-endian machine, since we can use a more efficient
+ * algorithm on the latter.
+ */
+ static const int w = 1;
+
+ if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
+#endif
+#if BYTE_ORDER <= 0 /* little-endian */
+ {
+ /*
+ * On little-endian machines, we can process properly aligned
+ * data without copying it.
+ */
+ if (!(((uintptr_t)data) & 3)) {
+ /* data are properly aligned, a direct assignment is possible */
+ /* cast through a (void *) should avoid a compiler warning,
+ see
+ https://github.com/bel2125/civetweb/issues/94#issuecomment-98112861
+ */
+ X = (const md5_word_t *)(const void *)data;
+ } else {
+ /* not aligned */
+ memcpy(xbuf, data, 64);
+ X = xbuf;
+ }
+ }
+#endif
+#if BYTE_ORDER == 0
+ else /* dynamic big-endian */
+#endif
+#if BYTE_ORDER >= 0 /* big-endian */
+ {
+ /*
+ * On big-endian machines, we must arrange the bytes in the
+ * right order.
+ */
+ const md5_byte_t *xp = data;
+ int i;
+
+#if BYTE_ORDER == 0
+ X = xbuf; /* (dynamic only) */
+#else
+#define xbuf X /* (static only) */
+#endif
+ for (i = 0; i < 16; ++i, xp += 4)
+ xbuf[i] = (md5_word_t)(xp[0]) + (md5_word_t)(xp[1] << 8)
+ + (md5_word_t)(xp[2] << 16)
+ + (md5_word_t)(xp[3] << 24);
+ }
+#endif
+ }
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
+
+/* Round 1. */
+/* Let [abcd k s i] denote the operation
+ a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define SET(a, b, c, d, k, s, Ti) \
+ t = (a) + F(b, c, d) + X[k] + (Ti); \
+ (a) = ROTATE_LEFT(t, s) + (b)
+
+ /* Do the following 16 operations. */
+ SET(a, b, c, d, 0, 7, T1);
+ SET(d, a, b, c, 1, 12, T2);
+ SET(c, d, a, b, 2, 17, T3);
+ SET(b, c, d, a, 3, 22, T4);
+ SET(a, b, c, d, 4, 7, T5);
+ SET(d, a, b, c, 5, 12, T6);
+ SET(c, d, a, b, 6, 17, T7);
+ SET(b, c, d, a, 7, 22, T8);
+ SET(a, b, c, d, 8, 7, T9);
+ SET(d, a, b, c, 9, 12, T10);
+ SET(c, d, a, b, 10, 17, T11);
+ SET(b, c, d, a, 11, 22, T12);
+ SET(a, b, c, d, 12, 7, T13);
+ SET(d, a, b, c, 13, 12, T14);
+ SET(c, d, a, b, 14, 17, T15);
+ SET(b, c, d, a, 15, 22, T16);
+#undef SET
+
+/* Round 2. */
+/* Let [abcd k s i] denote the operation
+ a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
+#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
+#define SET(a, b, c, d, k, s, Ti) \
+ t = (a) + G(b, c, d) + X[k] + (Ti); \
+ (a) = ROTATE_LEFT(t, s) + (b)
+
+ /* Do the following 16 operations. */
+ SET(a, b, c, d, 1, 5, T17);
+ SET(d, a, b, c, 6, 9, T18);
+ SET(c, d, a, b, 11, 14, T19);
+ SET(b, c, d, a, 0, 20, T20);
+ SET(a, b, c, d, 5, 5, T21);
+ SET(d, a, b, c, 10, 9, T22);
+ SET(c, d, a, b, 15, 14, T23);
+ SET(b, c, d, a, 4, 20, T24);
+ SET(a, b, c, d, 9, 5, T25);
+ SET(d, a, b, c, 14, 9, T26);
+ SET(c, d, a, b, 3, 14, T27);
+ SET(b, c, d, a, 8, 20, T28);
+ SET(a, b, c, d, 13, 5, T29);
+ SET(d, a, b, c, 2, 9, T30);
+ SET(c, d, a, b, 7, 14, T31);
+ SET(b, c, d, a, 12, 20, T32);
+#undef SET
+
+/* Round 3. */
+/* Let [abcd k s t] denote the operation
+ a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define SET(a, b, c, d, k, s, Ti) \
+ t = (a) + H(b, c, d) + X[k] + (Ti); \
+ (a) = ROTATE_LEFT(t, s) + b
+
+ /* Do the following 16 operations. */
+ SET(a, b, c, d, 5, 4, T33);
+ SET(d, a, b, c, 8, 11, T34);
+ SET(c, d, a, b, 11, 16, T35);
+ SET(b, c, d, a, 14, 23, T36);
+ SET(a, b, c, d, 1, 4, T37);
+ SET(d, a, b, c, 4, 11, T38);
+ SET(c, d, a, b, 7, 16, T39);
+ SET(b, c, d, a, 10, 23, T40);
+ SET(a, b, c, d, 13, 4, T41);
+ SET(d, a, b, c, 0, 11, T42);
+ SET(c, d, a, b, 3, 16, T43);
+ SET(b, c, d, a, 6, 23, T44);
+ SET(a, b, c, d, 9, 4, T45);
+ SET(d, a, b, c, 12, 11, T46);
+ SET(c, d, a, b, 15, 16, T47);
+ SET(b, c, d, a, 2, 23, T48);
+#undef SET
+
+/* Round 4. */
+/* Let [abcd k s t] denote the operation
+ a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
+#define I(x, y, z) ((y) ^ ((x) | ~(z)))
+#define SET(a, b, c, d, k, s, Ti) \
+ t = (a) + I(b, c, d) + X[k] + (Ti); \
+ (a) = ROTATE_LEFT(t, s) + (b)
+
+ /* Do the following 16 operations. */
+ SET(a, b, c, d, 0, 6, T49);
+ SET(d, a, b, c, 7, 10, T50);
+ SET(c, d, a, b, 14, 15, T51);
+ SET(b, c, d, a, 5, 21, T52);
+ SET(a, b, c, d, 12, 6, T53);
+ SET(d, a, b, c, 3, 10, T54);
+ SET(c, d, a, b, 10, 15, T55);
+ SET(b, c, d, a, 1, 21, T56);
+ SET(a, b, c, d, 8, 6, T57);
+ SET(d, a, b, c, 15, 10, T58);
+ SET(c, d, a, b, 6, 15, T59);
+ SET(b, c, d, a, 13, 21, T60);
+ SET(a, b, c, d, 4, 6, T61);
+ SET(d, a, b, c, 11, 10, T62);
+ SET(c, d, a, b, 2, 15, T63);
+ SET(b, c, d, a, 9, 21, T64);
+#undef SET
+
+ /* Then perform the following additions. (That is increment each
+ of the four registers by the value it had before this block
+ was started.) */
+ pms->abcd[0] += a;
+ pms->abcd[1] += b;
+ pms->abcd[2] += c;
+ pms->abcd[3] += d;
+}
+
+MD5_STATIC void
+md5_init(md5_state_t *pms)
+{
+ pms->count[0] = pms->count[1] = 0;
+ pms->abcd[0] = 0x67452301;
+ pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
+ pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
+ pms->abcd[3] = 0x10325476;
+}
+
+MD5_STATIC void
+md5_append(md5_state_t *pms, const md5_byte_t *data, size_t nbytes)
+{
+ const md5_byte_t *p = data;
+ size_t left = nbytes;
+ size_t offset = (pms->count[0] >> 3) & 63;
+ md5_word_t nbits = (md5_word_t)(nbytes << 3);
+
+ if (nbytes <= 0)
+ return;
+
+ /* Update the message length. */
+ pms->count[1] += (md5_word_t)(nbytes >> 29);
+ pms->count[0] += nbits;
+ if (pms->count[0] < nbits)
+ pms->count[1]++;
+
+ /* Process an initial partial block. */
+ if (offset) {
+ size_t copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
+
+ memcpy(pms->buf + offset, p, copy);
+ if (offset + copy < 64)
+ return;
+ p += copy;
+ left -= copy;
+ md5_process(pms, pms->buf);
+ }
+
+ /* Process full blocks. */
+ for (; left >= 64; p += 64, left -= 64)
+ md5_process(pms, p);
+
+ /* Process a final partial block. */
+ if (left)
+ memcpy(pms->buf, p, left);
+}
+
+MD5_STATIC void
+md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+{
+ static const md5_byte_t pad[64] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ md5_byte_t data[8];
+ int i;
+
+ /* Save the length before padding. */
+ for (i = 0; i < 8; ++i)
+ data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+ /* Pad to 56 bytes mod 64. */
+ md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+ /* Append the length. */
+ md5_append(pms, data, 8);
+ for (i = 0; i < 16; ++i)
+ digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+}
+
+
+/* End of md5.inl */
diff --git a/v2/webui/src/civetweb/response.inl b/v2/webui/src/civetweb/response.inl
new file mode 100644
index 0000000..35e6ba8
--- /dev/null
+++ b/v2/webui/src/civetweb/response.inl
@@ -0,0 +1,342 @@
+/* response.inl
+ *
+ * Bufferring for HTTP headers for HTTP response.
+ * This function are only intended to be used at the server side.
+ * Optional for HTTP/1.0 and HTTP/1.1, mandatory for HTTP/2.
+ *
+ * This file is part of the CivetWeb project.
+ */
+
+#if defined(NO_RESPONSE_BUFFERING) && defined(USE_HTTP2)
+#error "HTTP2 works only if NO_RESPONSE_BUFFERING is not set"
+#endif
+
+
+/* Internal function to free header list */
+static void
+free_buffered_response_header_list(struct mg_connection *conn)
+{
+#if !defined(NO_RESPONSE_BUFFERING)
+ while (conn->response_info.num_headers > 0) {
+ conn->response_info.num_headers--;
+ mg_free((void *)conn->response_info
+ .http_headers[conn->response_info.num_headers]
+ .name);
+ conn->response_info.http_headers[conn->response_info.num_headers].name =
+ 0;
+ mg_free((void *)conn->response_info
+ .http_headers[conn->response_info.num_headers]
+ .value);
+ conn->response_info.http_headers[conn->response_info.num_headers]
+ .value = 0;
+ }
+#else
+ (void)conn; /* Nothing to do */
+#endif
+}
+
+
+/* Send first line of HTTP/1.x response */
+static int
+send_http1_response_status_line(struct mg_connection *conn)
+{
+ const char *status_txt;
+ const char *http_version = conn->request_info.http_version;
+ int status_code = conn->status_code;
+
+ if ((status_code < 100) || (status_code > 999)) {
+ /* Set invalid status code to "500 Internal Server Error" */
+ status_code = 500;
+ }
+ if (!http_version) {
+ http_version = "1.0";
+ }
+
+ /* mg_get_response_code_text will never return NULL */
+ status_txt = mg_get_response_code_text(conn, conn->status_code);
+
+ if (mg_printf(
+ conn, "HTTP/%s %i %s\r\n", http_version, status_code, status_txt)
+ < 10) {
+ /* Network sending failed */
+ return 0;
+ }
+ return 1;
+}
+
+
+/* Initialize a new HTTP response
+ * Parameters:
+ * conn: Current connection handle.
+ * status: HTTP status code (e.g., 200 for "OK").
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: network error (only if built with NO_RESPONSE_BUFFERING)
+ */
+int
+mg_response_header_start(struct mg_connection *conn, int status)
+{
+ int ret = 0;
+ if ((conn == NULL) || (status < 100) || (status > 999)) {
+ /* Parameter error */
+ return -1;
+ }
+ if ((conn->connection_type != CONNECTION_TYPE_REQUEST)
+ || (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET)) {
+ /* Only allowed in server context */
+ return -2;
+ }
+ if (conn->request_state != 0) {
+ /* only allowed if nothing was sent up to now */
+ return -3;
+ }
+ conn->status_code = status;
+ conn->request_state = 1;
+
+ /* Buffered response is stored, unbuffered response will be sent directly,
+ * but we can only send HTTP/1.x response here */
+#if !defined(NO_RESPONSE_BUFFERING)
+ free_buffered_response_header_list(conn);
+#else
+ if (!send_http1_response_status_line(conn)) {
+ ret = -4;
+ };
+ conn->request_state = 1; /* Reset from 10 to 1 */
+#endif
+
+ return ret;
+}
+
+
+/* Add a new HTTP response header line
+ * Parameters:
+ * conn: Current connection handle.
+ * header: Header name.
+ * value: Header value.
+ * value_len: Length of header value, excluding the terminating zero.
+ * Use -1 for "strlen(value)".
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: too many headers
+ * -5: out of memory
+ */
+int
+mg_response_header_add(struct mg_connection *conn,
+ const char *header,
+ const char *value,
+ int value_len)
+{
+#if !defined(NO_RESPONSE_BUFFERING)
+ int hidx;
+#endif
+
+ if ((conn == NULL) || (header == NULL) || (value == NULL)) {
+ /* Parameter error */
+ return -1;
+ }
+ if ((conn->connection_type != CONNECTION_TYPE_REQUEST)
+ || (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET)) {
+ /* Only allowed in server context */
+ return -2;
+ }
+ if (conn->request_state != 1) {
+ /* only allowed if mg_response_header_start has been called before */
+ return -3;
+ }
+
+#if !defined(NO_RESPONSE_BUFFERING)
+ hidx = conn->response_info.num_headers;
+ if (hidx >= MG_MAX_HEADERS) {
+ /* Too many headers */
+ return -4;
+ }
+
+ /* Alloc new element */
+ conn->response_info.http_headers[hidx].name =
+ mg_strdup_ctx(header, conn->phys_ctx);
+ if (value_len >= 0) {
+ char *hbuf =
+ (char *)mg_malloc_ctx((unsigned)value_len + 1, conn->phys_ctx);
+ if (hbuf) {
+ memcpy(hbuf, value, (unsigned)value_len);
+ hbuf[value_len] = 0;
+ }
+ conn->response_info.http_headers[hidx].value = hbuf;
+ } else {
+ conn->response_info.http_headers[hidx].value =
+ mg_strdup_ctx(value, conn->phys_ctx);
+ }
+
+ if ((conn->response_info.http_headers[hidx].name == 0)
+ || (conn->response_info.http_headers[hidx].value == 0)) {
+ /* Out of memory */
+ mg_free((void *)conn->response_info.http_headers[hidx].name);
+ conn->response_info.http_headers[hidx].name = 0;
+ mg_free((void *)conn->response_info.http_headers[hidx].value);
+ conn->response_info.http_headers[hidx].value = 0;
+ return -5;
+ }
+
+ /* OK, header stored */
+ conn->response_info.num_headers++;
+
+#else
+ if (value_len >= 0) {
+ mg_printf(conn, "%s: %.*s\r\n", header, (int)value_len, value);
+ } else {
+ mg_printf(conn, "%s: %s\r\n", header, value);
+ }
+ conn->request_state = 1; /* Reset from 10 to 1 */
+#endif
+
+ return 0;
+}
+
+
+/* forward */
+static int parse_http_headers(char **buf, struct mg_header hdr[MG_MAX_HEADERS]);
+
+
+/* Add a complete header string (key + value).
+ * Parameters:
+ * conn: Current connection handle.
+ * http1_headers: Header line(s) in the form "name: value".
+ * Return:
+ * >=0: no error, number of header lines added
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: too many headers
+ * -5: out of memory
+ */
+int
+mg_response_header_add_lines(struct mg_connection *conn,
+ const char *http1_headers)
+{
+ struct mg_header add_hdr[MG_MAX_HEADERS];
+ int num_hdr, i, ret;
+ char *workbuffer, *parse;
+
+ /* We need to work on a copy of the work buffer, sice parse_http_headers
+ * will modify */
+ workbuffer = mg_strdup_ctx(http1_headers, conn->phys_ctx);
+ if (!workbuffer) {
+ /* Out of memory */
+ return -5;
+ }
+
+ /* Call existing method to split header buffer */
+ parse = workbuffer;
+ num_hdr = parse_http_headers(&parse, add_hdr);
+ ret = num_hdr;
+
+ for (i = 0; i < num_hdr; i++) {
+ int lret =
+ mg_response_header_add(conn, add_hdr[i].name, add_hdr[i].value, -1);
+ if ((ret > 0) && (lret < 0)) {
+ /* Store error return value */
+ ret = lret;
+ }
+ }
+
+ /* mg_response_header_add created a copy, so we can free the original */
+ mg_free(workbuffer);
+ return ret;
+}
+
+
+#if defined(USE_HTTP2)
+static int http2_send_response_headers(struct mg_connection *conn);
+#endif
+
+
+/* Send http response
+ * Parameters:
+ * conn: Current connection handle.
+ * Return:
+ * 0: ok
+ * -1: parameter error
+ * -2: invalid connection type
+ * -3: invalid connection status
+ * -4: network send failed
+ */
+int
+mg_response_header_send(struct mg_connection *conn)
+{
+#if !defined(NO_RESPONSE_BUFFERING)
+ int i;
+ int has_date = 0;
+ int has_connection = 0;
+#endif
+
+ if (conn == NULL) {
+ /* Parameter error */
+ return -1;
+ }
+ if ((conn->connection_type != CONNECTION_TYPE_REQUEST)
+ || (conn->protocol_type == PROTOCOL_TYPE_WEBSOCKET)) {
+ /* Only allowed in server context */
+ return -2;
+ }
+ if (conn->request_state != 1) {
+ /* only allowed if mg_response_header_start has been called before */
+ return -3;
+ }
+
+ /* State: 2 */
+ conn->request_state = 2;
+
+#if !defined(NO_RESPONSE_BUFFERING)
+#if defined(USE_HTTP2)
+ if (conn->protocol_type == PROTOCOL_TYPE_HTTP2) {
+ int ret = http2_send_response_headers(conn);
+ free_buffered_response_header_list(conn);
+ return (ret ? 0 : -4);
+ }
+#endif
+
+ /* Send */
+ if (!send_http1_response_status_line(conn)) {
+ free_buffered_response_header_list(conn);
+ return -4;
+ };
+ for (i = 0; i < conn->response_info.num_headers; i++) {
+ mg_printf(conn,
+ "%s: %s\r\n",
+ conn->response_info.http_headers[i].name,
+ conn->response_info.http_headers[i].value);
+
+ /* Check for some special headers */
+ if (!mg_strcasecmp("Date", conn->response_info.http_headers[i].name)) {
+ has_date = 1;
+ }
+ if (!mg_strcasecmp("Connection",
+ conn->response_info.http_headers[i].name)) {
+ has_connection = 1;
+ }
+ }
+
+ if (!has_date) {
+ time_t curtime = time(NULL);
+ char date[64];
+ gmt_time_string(date, sizeof(date), &curtime);
+ mg_printf(conn, "Date: %s\r\n", date);
+ }
+ if (!has_connection) {
+ mg_printf(conn, "Connection: %s\r\n", suggest_connection_header(conn));
+ }
+#endif
+
+ mg_write(conn, "\r\n", 2);
+ conn->request_state = 3;
+
+ /* ok */
+ free_buffered_response_header_list(conn);
+ return 0;
+}
diff --git a/v2/webui/src/civetweb/sha1.inl b/v2/webui/src/civetweb/sha1.inl
new file mode 100644
index 0000000..6af0757
--- /dev/null
+++ b/v2/webui/src/civetweb/sha1.inl
@@ -0,0 +1,323 @@
+/*
+SHA-1 in C
+By Steve Reid
+100% Public Domain
+
+-----------------
+Modified 7/98
+By James H. Brown
+Still 100% Public Domain
+
+Corrected a problem which generated improper hash values on 16 bit machines
+Routine SHA1Update changed from
+ void SHA1Update(SHA_CTX* context, unsigned char* data, unsigned int
+len)
+to
+ void SHA1Update(SHA_CTX* context, unsigned char* data, unsigned
+long len)
+
+The 'len' parameter was declared an int which works fine on 32 bit machines.
+However, on 16 bit machines an int is too small for the shifts being done
+against
+it. This caused the hash function to generate incorrect values if len was
+greater than 8191 (8K - 1) due to the 'len << 3' on line 3 of SHA1Update().
+
+Since the file IO in main() reads 16K at a time, any file 8K or larger would
+be guaranteed to generate the wrong hash (e.g. Test Vector #3, a million
+"a"s).
+
+I also changed the declaration of variables i & j in SHA1Update to
+unsigned long from unsigned int for the same reason.
+
+These changes should make no difference to any 32 bit implementations since
+an
+int and a long are the same size in those environments.
+
+--
+I also corrected a few compiler warnings generated by Borland C.
+1. Added #include for exit() prototype
+2. Removed unused variable 'j' in SHA1Final
+3. Changed exit(0) to return(0) at end of main.
+
+ALL changes I made can be located by searching for comments containing 'JHB'
+-----------------
+Modified 8/98
+By Steve Reid
+Still 100% public domain
+
+1- Removed #include and used return() instead of exit()
+2- Fixed overwriting of finalcount in SHA1Final() (discovered by Chris Hall)
+3- Changed email address from steve@edmweb.com to sreid@sea-to-sky.net
+
+-----------------
+Modified 4/01
+By Saul Kravitz
+Still 100% PD
+Modified to run on Compaq Alpha hardware.
+
+-----------------
+Modified 07/2002
+By Ralph Giles
+Still 100% public domain
+modified for use with stdint types, autoconf
+code cleanup, removed attribution comments
+switched SHA1Final() argument order for consistency
+use SHA1_ prefix for public api
+move public api to sha1.h
+*/
+
+/*
+11/2016 adapted for CivetWeb:
+ include sha1.h in sha1.c,
+ rename to sha1.inl
+ remove unused #ifdef sections
+ make endian independent
+ align buffer to 4 bytes
+ remove unused variable assignments
+*/
+
+/*
+Test Vectors (from FIPS PUB 180-1)
+"abc"
+ A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
+"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
+ 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
+A million repetitions of "a"
+ 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
+*/
+
+#include
+#include